Triển khai giải pháp thu thập dữ liệu suy luận máy học trên AWS Lambda PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Triển khai giải pháp thu thập dữ liệu suy luận machine learning trên AWS Lambda

Giám sát các dự đoán về học máy (ML) có thể giúp cải thiện chất lượng của các mô hình được triển khai. Việc thu thập dữ liệu từ các suy luận được thực hiện trong quá trình sản xuất có thể cho phép bạn giám sát các mô hình đã triển khai của mình và phát hiện những sai lệch về chất lượng mô hình. Việc phát hiện sớm và chủ động những sai lệch này cho phép bạn thực hiện các hành động khắc phục, chẳng hạn như đào tạo lại mô hình, kiểm tra hệ thống ngược dòng hoặc khắc phục các vấn đề về chất lượng.

AWS Lambda là một dịch vụ điện toán serverless có thể cung cấp khả năng suy luận ML theo thời gian thực trên quy mô lớn. Trong bài đăng này, chúng tôi trình diễn một tính năng thu thập dữ liệu mẫu có thể được triển khai cho khối lượng công việc suy luận Lambda ML.

Vào tháng 2020 năm 500, Lambda đã giới thiệu tính năng hỗ trợ hình ảnh vùng chứa dưới dạng định dạng đóng gói. Tính năng này đã tăng giới hạn kích thước gói triển khai từ 10 MB lên 2021 GB. Trước khi ra mắt tính năng này, hạn chế về kích thước gói đã gây khó khăn cho việc triển khai các khung ML như TensorFlow hoặc PyTorch cho các hàm Lambda. Sau khi ra mắt, giới hạn kích thước gói tăng lên đã khiến ML trở thành khối lượng công việc khả thi và hấp dẫn để triển khai trên Lambda. Vào năm XNUMX, suy luận ML là một trong những loại khối lượng công việc phát triển nhanh nhất trong dịch vụ Lambda.

Amazon SageMaker, dịch vụ ML được quản lý hoàn toàn của Amazon, có tính năng giám sát mô hình riêng. Tuy nhiên, dự án mẫu trong bài đăng này trình bày cách thực hiện thu thập dữ liệu để sử dụng trong giám sát mô hình cho những khách hàng sử dụng Lambda để suy luận ML. Dự án sử dụng các tiện ích mở rộng Lambda để thu thập dữ liệu suy luận nhằm giảm thiểu tác động đến hiệu suất và độ trễ của chức năng suy luận. Sử dụng tiện ích mở rộng Lambda cũng giảm thiểu tác động đến các nhà phát triển chức năng. Bằng cách tích hợp thông qua tiện ích mở rộng, tính năng giám sát có thể được áp dụng cho nhiều chức năng và được duy trì bởi một nhóm tập trung.

Tổng quan về giải pháp

Dự án này chứa mã nguồn và các tệp hỗ trợ cho một ứng dụng không có máy chủ cung cấp khả năng suy luận theo thời gian thực bằng cách sử dụng mô hình trả lời câu hỏi được đào tạo trước, dựa trên cơ sở distilbert. Dự án sử dụng mô hình Ôm Mặt hỏi đáp và xử lý ngôn ngữ tự nhiên (NLP) với Kim tự tháp để thực hiện các nhiệm vụ suy luận ngôn ngữ tự nhiên. Dự án cũng chứa một giải pháp để thực hiện thu thập dữ liệu suy luận cho các dự đoán mô hình. Người viết hàm Lambda có thể xác định chính xác dữ liệu nào từ đầu vào yêu cầu suy luận và kết quả dự đoán sẽ gửi đến tiện ích mở rộng. Trong giải pháp này, chúng tôi gửi đầu vào và câu trả lời từ mô hình đến tiện ích mở rộng. Sau đó, phần mở rộng sẽ gửi dữ liệu định kỳ đến một Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Chúng tôi xây dựng tiện ích thu thập dữ liệu dưới dạng hình ảnh vùng chứa bằng cách sử dụng makefile. Sau đó, chúng tôi xây dựng hàm suy luận Lambda dưới dạng hình ảnh vùng chứa và thêm hình ảnh vùng chứa tiện ích làm lớp hình ảnh vùng chứa. Sơ đồ sau đây cho thấy một cái nhìn tổng quan về kiến ​​trúc.

Tiện ích mở rộng Lambda là một cách để tăng cường các chức năng Lambda. Trong dự án này, chúng tôi sử dụng tiện ích mở rộng Lambda bên ngoài để ghi lại yêu cầu suy luận và dự đoán từ suy luận. Tiện ích mở rộng bên ngoài chạy như một quy trình riêng biệt trong môi trường thời gian chạy Lambda, làm giảm tác động lên hàm suy luận. Tuy nhiên, hàm này chia sẻ các tài nguyên như CPU, bộ nhớ và bộ lưu trữ với hàm Lambda. Chúng tôi khuyên bạn nên phân bổ đủ bộ nhớ cho hàm Lambda để đảm bảo tính sẵn có của tài nguyên ở mức tối ưu. (Trong thử nghiệm, chúng tôi đã phân bổ 5 GB bộ nhớ cho hàm Lambda suy luận và nhận thấy tính sẵn có của tài nguyên cũng như độ trễ suy luận là tối ưu). Khi quá trình suy luận hoàn tất, dịch vụ Lambda sẽ trả về phản hồi ngay lập tức và không đợi tiện ích mở rộng ghi xong yêu cầu và phản hồi vào bộ chứa S3. Với mẫu này, tiện ích mở rộng giám sát không ảnh hưởng đến độ trễ suy luận. Để tìm hiểu thêm về tiện ích mở rộng Lambda hãy xem loạt video này.

Nội dung dự án

Dự án này sử dụng Mô hình ứng dụng không có máy chủ AWS Giao diện dòng lệnh (AWS SAM) (CLI). Công cụ dòng lệnh này cho phép các nhà phát triển khởi tạo và định cấu hình ứng dụng; đóng gói, xây dựng và thử nghiệm cục bộ; và triển khai lên Đám mây AWS.

Bạn có thể tải xuống mã nguồn của dự án này từ kho lưu trữ GitHub.

Dự án này bao gồm các tập tin và thư mục sau:

  • ứng dụng/app.py – Mã cho hàm Lambda của ứng dụng, bao gồm mã cho suy luận ML.
  • ứng dụng/tệp Docker – Dockerfile để xây dựng hình ảnh vùng chứa đóng gói chức năng suy luận, mô hình được tải xuống từ Ôm mặt và tiện ích mở rộng Lambda được xây dựng dưới dạng một lớp. Ngược lại với các hàm .zip, các lớp không thể được gắn vào các hàm Lambda được đóng gói trong vùng chứa tại thời điểm tạo hàm. Thay vào đó, chúng tôi xây dựng lớp và sao chép nội dung của nó vào hình ảnh vùng chứa.
  • Phần mở rộng – Các tập tin mở rộng giám sát mô hình. Tiện ích mở rộng Lambda này được sử dụng để ghi dữ liệu đầu vào vào hàm suy luận và dự đoán tương ứng vào bộ chứa S3.
  • ứng dụng/mô hình – Mô hình được tải về từ Ôm Mặt.
  • ứng dụng/requirements.txt – Các phần phụ thuộc Python sẽ được cài đặt vào vùng chứa.
  • sự kiện – Các sự kiện gọi mà bạn có thể sử dụng để kiểm tra hàm.
  • mẫu.yaml – Tệp mô tả xác định tài nguyên AWS của ứng dụng.

Ứng dụng sử dụng một số tài nguyên AWS, bao gồm các hàm Lambda và một Cổng API Amazon API. Những tài nguyên này được xác định trong template.yaml tập tin trong dự án này. Bạn có thể cập nhật mẫu để thêm tài nguyên AWS thông qua quy trình triển khai tương tự như cập nhật mã ứng dụng của bạn.

Điều kiện tiên quyết

Đối với hướng dẫn này, bạn nên có các điều kiện tiên quyết sau:

Triển khai ứng dụng mẫu

Để xây dựng ứng dụng của bạn lần đầu tiên, hãy hoàn thành các bước sau:

  • Chạy đoạn mã sau trong shell của bạn. (Điều này cũng sẽ xây dựng phần mở rộng):
  • Xây dựng hình ảnh Docker của ứng dụng giám sát mô hình. Nội dung bản dựng nằm trong .aws-sam thư mục
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Đăng nhập vào Amazon ECR:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Tạo kho lưu trữ trong Amazon ECR:

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • Đẩy hình ảnh vùng chứa lên Amazon ECR:
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Bỏ ghi chú dòng số 1 trong ứng dụng/tệp Docker và chỉnh sửa nó để trỏ đến hình ảnh kho lưu trữ ECR chính xác, sau đó bỏ ghi chú dòng #6 và #7 trong ứng dụng/Tệp Docker:
WORKDIR /opt
COPY --from=layer /opt/ .

  • Xây dựng lại ứng dụng:

Chúng tôi xây dựng lại vì Lambda không hỗ trợ trực tiếp các lớp Lambda cho loại bao bì hình ảnh vùng chứa. Trước tiên, chúng ta cần xây dựng thành phần giám sát mô hình dưới dạng hình ảnh bộ chứa, tải hình ảnh đó lên Amazon ECR rồi sử dụng hình ảnh đó trong ứng dụng giám sát mô hình làm lớp bộ chứa.

  • Cuối cùng, triển khai hàm Lambda, Cổng API và tiện ích mở rộng:
sam deploy --guided

Lệnh này đóng gói và triển khai ứng dụng của bạn lên AWS với một loạt lời nhắc:

  • Tên ngăn xếp : Tên người được triển khai Hình thành đám mây AWS cây rơm. Tên này phải là duy nhất cho tài khoản và Khu vực của bạn và điểm khởi đầu tốt sẽ là tên nào đó phù hợp với tên dự án của bạn.
  • Khu vực AWS : Khu vực AWS nơi bạn triển khai ứng dụng của mình.
  • Xác nhận các thay đổi trước khi triển khai : Nếu đặt thành yes, mọi bộ thay đổi sẽ được hiển thị cho bạn trước khi chạy để xem xét thủ công. Nếu được đặt thành không, AWS SAM CLI sẽ tự động triển khai các thay đổi của ứng dụng.
  • Cho phép tạo vai trò AWS SAM CLI IAM : Nhiều mẫu AWS SAM, bao gồm cả ví dụ này, tạo Quản lý truy cập và nhận dạng AWS Các vai trò (IAM) cần thiết cho (các) chức năng Lambda được đưa vào để truy cập các dịch vụ AWS. Theo mặc định, những quyền này nằm trong phạm vi các quyền được yêu cầu tối thiểu. Để triển khai ngăn xếp CloudFormation nhằm tạo hoặc sửa đổi các vai trò IAM, CAPABILITY_IAM giá trị cho capabilities phải được cung cấp. Nếu quyền không được cung cấp thông qua lời nhắc này, để triển khai ví dụ này, bạn phải vượt qua một cách rõ ràng --capabilities CAPABILITY_IAM đến sam deploy chỉ huy.
  • Lưu đối số vào samconfig.toml : Nếu đặt thành yes, các lựa chọn của bạn sẽ được lưu vào tệp cấu hình bên trong dự án để trong tương lai, bạn có thể chạy sam deploy không có tham số để triển khai các thay đổi cho ứng dụng của bạn.

Bạn có thể tìm thấy URL điểm cuối Cổng API của mình trong các giá trị đầu ra được hiển thị sau khi triển khai.

Kiểm tra ứng dụng

Để kiểm tra ứng dụng, hãy sử dụng Postman hoặc Curl để gửi yêu cầu đến điểm cuối API Gateway. Ví dụ:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

Bạn sẽ thấy đầu ra giống như đoạn mã sau. Mô hình ML suy ra từ ngữ cảnh và trả về câu trả lời cho câu hỏi của chúng tôi.

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

Sau vài phút, bạn sẽ thấy một tệp trong nhóm S3 nlp-qamodel-model-monitoring-modelmonitorbucket- với đầu vào và suy luận được ghi lại.

Làm sạch

Để xóa ứng dụng mẫu mà bạn đã tạo, hãy sử dụng AWS CLI:

aws cloudformation delete-stack --stack-name 

Kết luận

Trong bài đăng này, chúng tôi đã triển khai tính năng giám sát mô hình dưới dạng tiện ích mở rộng Lambda và triển khai tính năng này cho khối lượng công việc suy luận Lambda ML. Chúng tôi đã chỉ ra cách xây dựng và triển khai giải pháp này cho tài khoản AWS của riêng bạn. Cuối cùng, chúng tôi đã hướng dẫn cách chạy thử nghiệm để xác minh chức năng của màn hình.

Vui lòng cung cấp bất kỳ suy nghĩ hoặc câu hỏi trong phần bình luận. Để biết thêm tài nguyên học tập không có máy chủ, hãy truy cập Vùng đất không máy chủ.


Về các tác giả

Triển khai giải pháp thu thập dữ liệu suy luận máy học trên AWS Lambda PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Đàn cáo là Kiến trúc sư giải pháp chuyên gia chính trong Tổ chức chuyên gia toàn cầu về Serverless. Dan làm việc với khách hàng để giúp họ tận dụng các dịch vụ serverless nhằm xây dựng các ứng dụng có khả năng mở rộng, có khả năng chịu lỗi, hiệu suất cao và tiết kiệm chi phí. Dan rất biết ơn khi được sống và làm việc ở Boulder, Colorado xinh đẹp.

Triển khai giải pháp thu thập dữ liệu suy luận máy học trên AWS Lambda PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Newton Jain là Giám đốc sản phẩm cấp cao chịu trách nhiệm xây dựng những trải nghiệm mới cho machine learning, điện toán hiệu năng cao (HPC) và xử lý phương tiện cho khách hàng trên AWS Lambda. Ông lãnh đạo việc phát triển các khả năng mới nhằm tăng hiệu suất, giảm độ trễ, cải thiện khả năng mở rộng, nâng cao độ tin cậy và giảm chi phí. Ông cũng hỗ trợ khách hàng AWS xác định chiến lược không có máy chủ hiệu quả cho các ứng dụng sử dụng nhiều điện toán của họ.

Triển khai giải pháp thu thập dữ liệu suy luận máy học trên AWS Lambda PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Diksha Sharma là Kiến trúc sư giải pháp và Chuyên gia máy học tại AWS. Cô giúp khách hàng đẩy nhanh việc áp dụng đám mây, đặc biệt là trong lĩnh vực máy học và công nghệ không có máy chủ. Diksha triển khai các bằng chứng khái niệm tùy chỉnh để cho khách hàng thấy giá trị của AWS trong việc đáp ứng các thách thức về CNTT và kinh doanh của họ. Cô mang đến cho khách hàng kiến ​​thức về AWS và làm việc cùng khách hàng để xây dựng giải pháp mà họ mong muốn.

Triển khai giải pháp thu thập dữ liệu suy luận máy học trên AWS Lambda PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Veda Raman là Kiến trúc sư Giải pháp Chuyên gia Cao cấp về máy học có trụ sở tại Maryland. Veda làm việc với khách hàng để giúp họ kiến ​​trúc các ứng dụng học máy hiệu quả, an toàn và có thể mở rộng. Veda quan tâm đến việc giúp khách hàng tận dụng các công nghệ máy chủ cho Máy học.

Triển khai giải pháp thu thập dữ liệu suy luận máy học trên AWS Lambda PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái. Josh Kahn là Nhà lãnh đạo công nghệ toàn cầu về Serverless và là Kiến trúc sư giải pháp chính. Ông lãnh đạo một cộng đồng toàn cầu gồm các chuyên gia serverless tại AWS, những người giúp đỡ khách hàng thuộc mọi quy mô, từ các công ty khởi nghiệp cho đến các doanh nghiệp lớn nhất thế giới, sử dụng hiệu quả các công nghệ serverless của AWS.

Dấu thời gian:

Thêm từ Học máy AWS