Một khía cạnh của kịch bản là tạo ra một mô hình học máy. Nó phải có thể sử dụng được trong thế giới thực và có sẵn cho người tiêu dùng và nhà phát triển.
Cách đơn giản và phổ biến nhất để triển khai các mô hình học máy là đặt chúng trong một API REST.
Với một thư viện phổ biến được gọi là FastAPI, đó chính xác là những gì chúng ta sẽ hoàn thành ngày hôm nay.
Nhưng cái gì là API nhanh?
Khuôn khổ web FastAPI Python được tạo ngay từ đầu để tận dụng các khả năng hiện đại của Python.
Đối với giao tiếp không đồng bộ, đồng thời với máy khách, nó tuân theo tiêu chuẩn ASGI, đồng thời có khả năng sử dụng WSGI.
Các điểm cuối và các tuyến đều có thể sử dụng các hàm không đồng bộ. Ngoài ra, FastAPI cho phép tạo ra hiệu quả các ứng dụng web bằng mã Python hiện đại, rõ ràng, được gợi ý về loại.
Trường hợp sử dụng chính của FastAPI, như tên cho thấy, là tạo các điểm cuối API.
Sử dụng tiêu chuẩn OpenAPI, bao gồm giao diện người dùng Swagger tương tác hoặc cung cấp dữ liệu từ điển Python dưới dạng JSON đều là những cách đơn giản để đạt được điều này. Tuy nhiên, FastAPI không chỉ dành cho các API.
Nó có thể được sử dụng để cung cấp các trang web tiêu chuẩn bằng cách sử dụng công cụ mẫu Jinja2 và cung cấp các ứng dụng sử dụng WebSockets, ngoài ra cho hầu hết mọi thứ khác mà một khuôn khổ web có thể làm.
Trong bài viết này, chúng tôi sẽ phát triển một mô hình học máy đơn giản và sau đó sử dụng FastAPI để triển khai nó. Hãy bắt đầu nào.
Cài đặt FastAPI và tạo API đầu tiên
Trước tiên, cần cài đặt thư viện và máy chủ ASGI; Uvuicorn hoặc Hypercorn sẽ hoạt động. Nó hoạt động bằng cách nhập lệnh sau vào Terminal:
Bây giờ API đã được tạo, bạn có thể sử dụng trình chỉnh sửa mã ưa thích của mình và duyệt qua nó. Tạo một tập lệnh Python có tên là ml_model.py để bắt đầu. Bạn có thể đặt tên khác cho mình, nhưng vì lợi ích của bài đăng này, tôi sẽ gọi tệp này là ml_model.py.
Để tạo một API đơn giản với hai điểm cuối, bạn phải hoàn thành các tác vụ sau:
- Nhập thư viện FastAPI và Uvicorn.
- Thiết lập một cá thể lớp FastAPI.
- Khai báo tuyến đầu tiên, trên trang chỉ mục, tạo ra một đối tượng JSON đơn giản.
- Khai báo tuyến thứ hai, tuyến này cung cấp đối tượng JSON đơn giản với thông báo tùy chỉnh. Tham số tên được lấy trực tiếp từ URL (ví dụ: https://127.0.0.1:8000/Jay).
- Sử dụng Uvicorn để chạy API.
Việc thực hiện năm giai đoạn này được thể hiện trong đoạn mã sau, tức là. tạo một API đơn giản
Tất cả đã được làm xong! Hãy khởi chạy API của chúng tôi ngay lập tức. Mở cửa sổ Terminal bên cạnh tệp ml model.py để thực hiện việc này. Tiếp theo, nhập thông tin sau:
phím Enter. Trước khi tiếp tục, chúng ta hãy gỡ bỏ khẳng định này. Ứng dụng đầu tiên chỉ sử dụng tên tệp Python mà không có phần mở rộng. Ứng dụng thứ hai phải có cùng tên với phiên bản FastAPI của bạn.
Bằng cách sử dụng -reload, bạn cho API biết rằng bạn muốn nó tự động tải lại khi bạn lưu tệp thay vì bắt đầu lại từ đầu.
Bây giờ hãy khởi chạy trình duyệt và điều hướng đến https://127.0.0.1:8000; kết quả sẽ xuất hiện như sau:
Bây giờ bạn đã hiểu cách tạo một API đơn giản bằng FastAPI.
Xây dựng và đào tạo mô hình Học máy
Không cần thu thập hoặc phân tích bất kỳ dữ liệu nào, chúng tôi sẽ chỉ đào tạo một mô hình đơn giản. Những điều này không liên quan đến việc triển khai các mô hình và không phải là chủ đề cần thiết.
Một mô hình dựa trên tập dữ liệu Iris có thể được cài đặt bằng cách sử dụng cùng một mạng lưới thần kinh phương pháp cài đặt.
Và chúng tôi sẽ làm điều đó: tải xuống Bộ dữ liệu Iris và đào tạo người mẫu. Điều đó sẽ không đơn giản. Để bắt đầu, hãy tạo một tệp có tên jaysmlmodel.py.
Trong đó, bạn sẽ làm như sau:
- Nhập - Bạn sẽ cần gấu trúc, scikit-RandomForecastClassifier, BaseModel của pydantic (bạn sẽ khám phá lý do tại sao trong bước sau) và joblib để lưu trữ và tải các mô hình.
- Khai báo một lớp IrisSpecies kế thừa từ mô hình cơ sở. Lớp này chỉ chứa các trường cần thiết để dự báo một loài hoa (xem thêm về điều đó trong phần tiếp theo)
- Tạo một lớp học. IrisModel là một công cụ đào tạo và dự đoán mô hình.
- Khai báo một phương thức có tên là mô hình _train trong IrisModel. Nó được sử dụng để đào tạo các mô hình bằng kỹ thuật Rừng ngẫu nhiên. Mô hình được đào tạo được trả lại theo quy trình.
- Khai báo chức năng loài được dự đoán bên trong IrisModel. Nó được sử dụng để dự báo dựa trên 4 yếu tố đầu vào (số đo hoa). Cả dự báo (loài hoa) và xác suất dự đoán đều được thuật toán trả về.
- Thay đổi hàm tạo trong IrisModel để nó tải tập dữ liệu Iris và đào tạo mô hình nếu nó bị thiếu trong thư mục. Điều này giải quyết vấn đề liên tục đào tạo các mô hình mới. Thư viện joblib được sử dụng để tải và lưu mô hình.
Đây là toàn bộ mã:
Tôi hy vọng danh sách trên và các nhận xét giúp bạn dễ dàng nắm bắt được mặc dù đây là một lượng mã khá lớn để tạo. Bây giờ mô hình này đã được phát triển, hãy công bố khả năng dự đoán của nó qua một REST API.
Xây dựng một API REST đầy đủ
Quay lại tệp ml_model.py và xóa tất cả dữ liệu. Boilerplate về cơ bản sẽ giống như những gì bạn đã có trước đó, nhưng chúng ta nên bắt đầu lại với một tệp trống.
Lần này, bạn sẽ chỉ xác định một điểm cuối, điểm cuối được sử dụng để xác định loại hoa. IrisModel.p dự đoán loài (), đã được khai báo trong phần trước, được gọi bởi điểm cuối này để thực hiện dự đoán.
Loại yêu cầu là thay đổi lớn khác. Để truyền tham số trong JSON thay vì URL, bạn nên sử dụng POST khi sử dụng học máy API.
Câu trên có thể nghe giống như vô nghĩa nếu bạn là một nhà khoa học dữ liệu, nhưng không sao cả. Để thiết kế và triển khai các mô hình, một người không nhất thiết phải là chuyên gia về các yêu cầu HTTP và API REST.
Các tác vụ cho ml model.py rất ít và đơn giản:
- Bạn phải nhập nội dung sau từ tệp jaymlmodel.py đã tạo trước đó: uvicorn, FastAPI, IrisModel và IrisSpecies.
- Tạo các phiên bản FastAPI và IrisModel.
- Khai báo một hàm tại https://127.0.0.1:8000/predict để đưa ra dự đoán.
- Phương thức IrisModel.posystem () nhận một đối tượng kiểu IrisSpecies, biến đổi nó thành một từ điển, rồi trả về nó. Lợi nhuận là loại dự kiến và xác suất dự đoán.
- Sử dụng uvicorn để thực thi API.
Tuy nhiên, một lần nữa, đây là toàn bộ mã của tệp cùng với các nhận xét của nó:
đó là tất cả những gì bạn cần làm. Trong bước tiếp theo, hãy kiểm tra API.
Kiểm tra API
Nhập lại dòng sau vào Terminal để thực thi API: uvicorn ml_model: app –reload
Đây là cách trang tài liệu xuất hiện:
Vì vậy, đó là nó cho ngày hôm nay. Trong phần sau, chúng ta hãy kết luận.
Kết luận
Hôm nay, bạn đã biết FastAPI là gì và cách sử dụng nó, bằng cách sử dụng cả một ví dụ API đơn giản và một ví dụ máy học đơn giản. Bạn cũng đã học cách tạo và xem tài liệu API, cũng như cách kiểm tra nó.
Đó là rất nhiều cho một tác phẩm, vì vậy đừng ngạc nhiên nếu bạn phải mất một vài lần đọc để hiểu đúng.
Chúc bạn viết mã vui vẻ.
Bình luận