Phương pháp tiếp cận từng bước để xây dựng API học máy của bạn bằng cách sử dụng API nhanh

Mar 22 2022
Một cách tiếp cận nhanh chóng và đơn giản để cung cấp mô hình của bạn dưới dạng một API
Giới thiệu Bất kể mô hình Học máy của bạn có hiệu quả đến đâu, nó sẽ chỉ hữu ích khi nó tạo ra giá trị cho Doanh nghiệp. Điều này không thể xảy ra khi nó được lưu trữ trong một thư mục trên máy tính của bạn.
Ảnh của Kurt Cotoaga trên Unsplash

Giới thiệu

Bất kể mô hình Học máy của bạn có hiệu quả đến đâu, nó sẽ chỉ hữu ích khi nó tạo ra giá trị cho Doanh nghiệp. Điều này không thể xảy ra khi nó được lưu trữ trong một thư mục trên máy tính của bạn. Trong môi trường phát triển nhanh chóng này, cần phải có tốc độ và chiến lược triển khai tốt để đưa giải pháp AI của bạn ra thị trường!

Bài viết này giải thích cách Fast APIcó thể giúp về vấn đề đó. Chúng ta sẽ bắt đầu bằng cách có một cái nhìn tổng quan toàn cầu về Fast API và minh họa của nó bằng cách tạo một API.

FastAPI - Cái gì và tại sao?

Bạn có thể đã quen thuộc với các khung công tác khác nhau như Flask, Django, v.v. Tuy nhiên, Fast API nổi bật khi nói đến hiệu suất cao và sự phát triển cho các dịch vụ vi mô RESTful. Điều này có thể được làm nổi bật bằng đoạn trích sau của phân tích điểm chuẩn từ techempower .

nguồn: techempower điểm chuẩn

Triển khai cho Trường hợp sử dụng của chúng tôi

Mục tiêu ở đây là phục vụ một mô hình phân loại tình cảm, nhằm mục đích dự đoán xem một tin nhắn văn bản nhất định có phải là thư rác hay ham muốn hay không. Chúng tôi sẽ không đi sâu hơn vào toàn bộ quy trình Khoa học dữ liệu (phân tích dữ liệu, tiền xử lý dữ liệu, đào tạo mô hình, v.v.), vì mục tiêu của bài viết này tập trung vào việc tạo API, yêu cầu mô hình đã được đào tạo. Nếu bạn muốn biết thêm về điều đó, hãy tham khảo bài viết này .

Hãy bắt đầu bằng cách hiểu quy trình làm việc nêu bật các thành phần chính của những gì chúng ta đang cố gắng đạt được.

Hai quy trình chính của bài báo (Hình ảnh của Tác giả)

Bước 1: Xây dựng API

  • người dùng / máy khách gửi yêu cầu đến máy chủ uvicorn tương tác với API để kích hoạt mô hình dự đoán.
  • Mô hình trả về cực (spam hoặc ham) và kết quả được hiển thị cho người dùng ở định dạng JSON.
  • Sau khi tạo API, chúng tôi sẽ tạo Hình ảnh Docker trong đó ứng dụng sẽ chạy.

Hình ảnh sau đây cho thấy các thư mục chính và nội dung của chúng cho dự án của chúng tôi.

Cấu trúc dự án (Hình ảnh của tác giả)

Chúng tôi sẽ tập trung nhiều hơn vào những cái sau:

  • app.pychứa tất cả các hướng dẫn ở phía máy chủ
  • dockerchứa Dockerfile để tạo vùng chứa.

Việc triển khai API trong tệp python app.pyđược chia thành ba phần chính sau đây.

  1. Nhập tất cả các thư viện cần thiết cho API ( dòng 2 đến dòng 3 ). Bước trước đó là cài đặt các thư viện đó, có thể được thực hiện bằng cách chạy pip install -r requirements.txtlệnh.
  2. Tải mô hình được tuần tự hóa và các vectơ ( dòng 6 và 9 ) và khởi tạo Fast API ( dòng 12 )
  • default route"/” : chỉ trả về định dạng JSON sau “thông báo”: “Chào mừng bạn đến với FastAPI Phân loại tình cảm của bạn” thông qua hàm root () không nhận tham số.
  • tuyến dự đoán"/predict_sentiment" : tuyến này kích hoạt predict_sentiment()hàm, lấy làm tham số, thông điệp của người dùng và trả về phản hồi JSON ở định dạng được xác định từ dòng 19 đến dòng 22. Phân cực cảm tính là dự đoán của mô hình.

uvicorn app:app --reload

  • app: tương ứng với tệp python app.pyNó là tệp ở bên trái của dấu “:”.
  • app: tương ứng với đối tượng được tạo bên trong của app.pyvới lệnh app = FastAPI(). Nếu tên của tệp là main.py thì hướng dẫn sẽ làuvicorn main:app --reload
  • --reload: một tùy chọn được sử dụng để khởi động lại máy chủ sau khi có bất kỳ thay đổi mã nào. Hãy nhớ rằng điều này chỉ được sử dụng khi chúng tôi đang trong giai đoạn phát triển, không phải trong giai đoạn triển khai.

Dòng 1 cho thấy máy chủ kỳ lân đang chạy trên localhost (http://127.0.0.1) cổng 8000.

Truy cập tuyến đường mặc định rất đơn giản. Chỉ cần nhập URL sau trên trình duyệt yêu thích của chúng tôi.

Đây là kết quả mà chúng tôi nhận được.

Phản hồi từ tuyến mặc định (Hình ảnh của Tác giả)

Đây là một phần thú vị. URL http://127.0.0.1:8000/docs cung cấp một trang tổng quan hoàn chỉnh để tương tác với API của chúng tôi. Dưới đây là kết quả.

Tài liệu về API của chúng tôi từ URL http://127.0.0.1:8000/docs (Hình ảnh của tác giả)

Từ Hình ảnh trước đó, khi chúng tôi chọn / dự đoán_sentiment trong hộp màu xanh lá cây, chúng tôi sẽ nhận được hướng dẫn đầy đủ để tương tác với API của chúng tôi như được hiển thị bên dưới.

Chỉ cần chọn tab Dùng thử và cung cấp thông báo bạn muốn dự đoán trong vùng text_message .

Yêu cầu API đưa ra dự đoán (Hình ảnh của Tác giả)

Tôi đã thu nhỏ thông báo mà tôi đã nhập vào hộp text_message để bạn có thể nhìn thấy nó một cách chính xác. Cuối cùng chúng ta nhận được kết quả sau khi chọn nút Execute .

Phản hồi API trên tin nhắn văn bản (Hình ảnh của Tác giả)

Bằng cách xem phần nội dung Phản hồi API , chúng ta có thể thấy kết quả của nó như sau

{
  "text_message": "Congratulations!!! You won today’s lottery.          Please provide your bank information to transfer the total amount on your account",
  "sentiment_polarity": "Spam"
}

Triển khai vào Docker Container

API của chúng tôi đã sẵn sàng, bây giờ đã đến lúc triển khai nó vào vùng chứa Docker. Ý tưởng đằng sau việc container hóa là nó sẽ làm cho API của chúng tôi có thể di động và có thể chạy đồng nhất và nhất quán trên bất kỳ nền tảng nào (bao gồm cả đám mây), theo cách bảo mật hơn. Ngoài ra, việc sử dụng Kubernetes có thể giúp mở rộng API dễ dàng hơn. Nhưng phần của Kubernetes sẽ dành cho một thời gian khác.

Dưới đây là nội dung của Dockerfileứng dụng của chúng tôi.

Hãy hiểu Dockerfile 🧐

Tệp Dockerfile chứa năm hướng dẫn chính như được hiển thị bên dưới.

  • FROMkéo một hình ảnh python chính thức từ trung tâm docker, sau đó các tệp của chúng tôi sẽ được tạo từ hình ảnh đó.
  • WORKDIR: create / app làm thư mục làm việc cho ứng dụng.
  • COPY: sao chép (các) tệp từ thư mục nguồn vào thư mục đích.
  • RUN: chạy tệp tin request.txt để cài đặt các phần phụ thuộc của dự án.
  • CMD: tạo một điểm vào để cuối cùng làm cho hình ảnh có thể thực thi được.

docker build -t fastapiapp:latest -f docker/Dockerfile .

Successfully built 9ecdd7e21323
Successfully tagged fastapiapp:latest

docker run -p 80:80 fastapiapp:latest

INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:80(Press CTRL+C toquit)

      
                
The Dashboard of interaction with the API after deployment (Image by Author)

Phần kết luận

Chúc mừng! 🎉 🍾 Bạn vừa học cách tạo API của mình bằng Fast API. Tôi hy vọng bạn thích đọc bài viết này và nó đã cung cấp cho bạn những kỹ năng cần thiết. Vui lòng tìm các nguồn bổ sung bên dưới để tiếp tục học hỏi của bạn.

Hãy theo dõi tôi trên Phương tiện , Twitter hoặc nói Xin chào trên LinkedIn . Chúng tôi luôn hân hạnh được thảo luận về những thứ AI, ML, Data Science, NLP và MLOps!

Tạm biệt 🏃

Nguồn bổ sung

Mã nguồn trên GitHub

Tài liệu FastAPI

© Copyright 2021 - 2023 | vngogo.com | All Rights Reserved