Xây dựng API Phục vụ Dự đoán Mô hình Machine Learning (FastAPI ML Inference Microservice)
Viết hàm create_ml_inference_app(weights: list[float], bias: float) -> FastAPI:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: linear model, sigmoid, FastAPI, BaseModel.
Nội dung đề bài
Mục tiêu kiến thức
- Đóng gói mô hình Machine Learning phân loại nhị phân (Logistic Regression) thành REST API production-ready.
- Xác thực kích thước vector đặc trưng (feature dimension check) và tính xác suất σ(z).
Mô tả bài toán
Viết hàm create_ml_inference_app(weights: list[float], bias: float) -> FastAPI:
weights: Trọng số mô hình có độ dài D.bias: Hệ số điều chỉnh (bias scalar).
Endpoint: POST /predict:
- Schema đầu vào
PredictRequest(BaseModel): features: list[float]- Quy trình xử lý:
- Kiểm tra số chiều: Nếu
len(features) != len(weights):
raise HTTPException(status_code=400, detail=f"Expected {len(weights)} features, got {len(features)}").
- Tính logit:
z = ∑j=0D-1 (wj · xj) + b
- Tính xác suất Sigmoid:
prob = 11 + e-z (sử dụng math.exp(-z)).
- Dự đoán nhãn:
label = 1 if prob >= 0.5 else 0.
- Trả về JSON:
{
"prediction": label,
"probability": round(prob, 4),
"status": "success"
}Input
- Các tham số truyền vào hàm/lớp PredictRequest hoặc dữ liệu đầu vào theo định dạng mô tả.
Output
- Kết quả trả về của hàm/lớp PredictRequest hoặc dữ liệu in ra màn hình theo đúng đặc tả.
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
PredictRequest(weights=[0.5, -0.2, 1.2], bias=0.1, features=[1.0, 0.5, 2.0])Output
TrueGiải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
