Đào tạo quy mô và suy luận hàng nghìn mô hình ML với Amazon SageMaker | Dịch vụ web của Amazon

Đào tạo quy mô và suy luận hàng nghìn mô hình ML với Amazon SageMaker | Dịch vụ web của Amazon

Khi máy học (ML) ngày càng trở nên phổ biến trong nhiều ngành công nghiệp, các tổ chức nhận thấy nhu cầu đào tạo và cung cấp số lượng lớn các mô hình ML để đáp ứng nhu cầu đa dạng của khách hàng. Đối với các nhà cung cấp phần mềm dưới dạng dịch vụ (SaaS) nói riêng, khả năng đào tạo và phục vụ hàng nghìn mô hình một cách hiệu quả và tiết kiệm chi phí là rất quan trọng để duy trì tính cạnh tranh trong một thị trường đang phát triển nhanh chóng.

Đào tạo và phục vụ hàng ngàn mô hình đòi hỏi một cơ sở hạ tầng mạnh mẽ và có thể mở rộng, đó là nơi Amazon SageMaker có thể giúp đỡ. SageMaker là một nền tảng được quản lý hoàn toàn cho phép các nhà phát triển và nhà khoa học dữ liệu xây dựng, đào tạo và triển khai các mô hình ML một cách nhanh chóng, đồng thời mang lại lợi ích tiết kiệm chi phí khi sử dụng cơ sở hạ tầng Đám mây AWS.

Trong bài đăng này, chúng tôi khám phá cách bạn có thể sử dụng các tính năng của SageMaker, bao gồm Chế biến Amazon SageMaker, công việc đào tạo SageMaker và điểm cuối đa mô hình SageMaker (MME), để đào tạo và phục vụ hàng nghìn mô hình theo cách tiết kiệm chi phí. Để bắt đầu với giải pháp được mô tả, bạn có thể tham khảo sổ tay đi kèm trên GitHub.

Trường hợp sử dụng: Dự báo năng lượng

Đối với bài đăng này, chúng tôi đảm nhận vai trò của một công ty ISV giúp khách hàng của họ trở nên bền vững hơn bằng cách theo dõi mức tiêu thụ năng lượng của họ và đưa ra các dự báo. Công ty chúng tôi có 1,000 khách hàng muốn hiểu rõ hơn về cách sử dụng năng lượng của họ và đưa ra quyết định sáng suốt về cách giảm tác động đến môi trường. Để làm điều này, chúng tôi sử dụng tập dữ liệu tổng hợp và đào tạo mô hình ML dựa trên Tiên tri cho từng khách hàng để đưa ra dự báo tiêu thụ năng lượng. Với SageMaker, chúng tôi có thể đào tạo và phục vụ 1,000 mô hình này một cách hiệu quả, cung cấp cho khách hàng những hiểu biết chính xác và hữu ích về việc sử dụng năng lượng của họ.

Có ba tính năng trong tập dữ liệu được tạo:

  • ID khách hàng – Đây là số nhận dạng số nguyên cho từng khách hàng, nằm trong khoảng từ 0–999.
  • dấu thời gian – Đây là giá trị ngày/giờ cho biết thời điểm đo mức tiêu thụ năng lượng. Dấu thời gian được tạo ngẫu nhiên giữa ngày bắt đầu và ngày kết thúc được chỉ định trong mã.
  • tiêu thụ – Đây là một giá trị thả nổi cho biết mức tiêu thụ năng lượng, được đo bằng một số đơn vị tùy ý. Các giá trị tiêu thụ được tạo ngẫu nhiên trong khoảng từ 0–1,000 với tính thời vụ hình sin.

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

Để đào tạo và phục vụ hiệu quả hàng nghìn mô hình ML, chúng tôi có thể sử dụng các tính năng sau của SageMaker:

  • Xử lý SageMaker – Xử lý SageMaker là một dịch vụ chuẩn bị dữ liệu được quản lý hoàn toàn cho phép bạn thực hiện các nhiệm vụ xử lý dữ liệu và đánh giá mô hình trên dữ liệu đầu vào của mình. Bạn có thể sử dụng Xử lý SageMaker để chuyển đổi dữ liệu thô sang định dạng cần thiết cho đào tạo và suy luận, cũng như để chạy các đánh giá hàng loạt và trực tuyến cho các mô hình của bạn.
  • SageMaker đào tạo việc làm – Bạn có thể sử dụng công việc đào tạo SageMaker để đào tạo mô hình trên nhiều thuật toán và loại dữ liệu đầu vào, đồng thời chỉ định tài nguyên điện toán cần thiết cho đào tạo.
  • SageMaker MME – Điểm cuối nhiều mô hình cho phép bạn lưu trữ nhiều mô hình trên một điểm cuối duy nhất, giúp dễ dàng cung cấp dự đoán từ nhiều mô hình bằng một API duy nhất. SageMaker MME có thể tiết kiệm thời gian và tài nguyên bằng cách giảm số lượng điểm cuối cần thiết để phục vụ dự đoán từ nhiều mô hình. MME hỗ trợ lưu trữ cả mô hình được hỗ trợ bởi CPU và GPU. Lưu ý rằng trong kịch bản của chúng tôi, chúng tôi sử dụng 1,000 mô hình, nhưng đây không phải là giới hạn của chính dịch vụ.

Sơ đồ sau minh họa kiến ​​trúc giải pháp.

kiến trúc hiển thị quá trình được mô tả

Quy trình làm việc bao gồm các bước sau:

  1. Chúng tôi sử dụng Xử lý SageMaker để xử lý trước dữ liệu và tạo một tệp CSV duy nhất cho mỗi khách hàng và lưu trữ tệp đó trong Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3).
  2. Công việc đào tạo SageMaker được định cấu hình để đọc đầu ra của công việc Xử lý SageMaker và phân phối nó theo kiểu vòng tròn cho các phiên bản đào tạo. Lưu ý rằng điều này cũng có thể đạt được với Đường ống Amazon SageMaker.
  3. Các thành phần lạ của mô hình được lưu trữ trong Amazon S3 bởi công việc đào tạo và được cung cấp trực tiếp từ MME SageMaker.

Quy mô đào tạo cho hàng ngàn mô hình

Có thể mở rộng quy mô đào tạo hàng nghìn mô hình thông qua distribution tham số của Đầu vào đào tạo lớp trong SageMaker Python SDK, cho phép bạn chỉ định cách dữ liệu được phân phối trên nhiều phiên bản đào tạo cho một công việc đào tạo. Có ba lựa chọn cho distribution tham số: FullyReplicated, ShardedByS3KeyShardedByRecord. Các ShardedByS3Key tùy chọn này có nghĩa là dữ liệu huấn luyện được phân đoạn bằng khóa đối tượng S3, với mỗi phiên bản huấn luyện nhận được một tập con dữ liệu duy nhất, tránh trùng lặp. Sau khi dữ liệu được SageMaker sao chép vào vùng chứa đào tạo, chúng tôi có thể đọc cấu trúc tệp và thư mục để đào tạo một mô hình duy nhất cho mỗi tệp khách hàng. Sau đây là một đoạn mã ví dụ:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

Mọi công việc đào tạo SageMaker đều lưu trữ mô hình được lưu trong /opt/ml/model thư mục của bộ chứa đào tạo trước khi lưu trữ nó trong một model.tar.gz tệp, sau đó tải tệp đó lên Amazon S3 sau khi hoàn thành công việc đào tạo. Người dùng thành thạo cũng có thể tự động hóa quy trình này với SageMaker Pipelines. Khi lưu trữ nhiều mô hình thông qua cùng một công việc đào tạo, SageMaker tạo một model.tar.gz tệp chứa tất cả các mô hình được đào tạo. Khi đó, điều này có nghĩa là, để phục vụ mô hình, trước tiên chúng tôi cần giải nén kho lưu trữ. Để tránh điều này, chúng tôi sử dụng trạm kiểm soát để lưu trạng thái của các mô hình riêng lẻ. SageMaker cung cấp chức năng sao chép các điểm kiểm tra được tạo trong công việc đào tạo sang Amazon S3. Tại đây, các điểm kiểm tra cần được lưu ở một vị trí được chỉ định trước, với mặc định là /opt/ml/checkpoints. Các điểm kiểm tra này có thể được sử dụng để tiếp tục đào tạo sau này hoặc làm mô hình để triển khai trên một điểm cuối. Để biết tóm tắt cấp cao về cách nền tảng đào tạo SageMaker quản lý đường dẫn lưu trữ cho bộ dữ liệu đào tạo, tạo phẩm mô hình, điểm kiểm tra và kết quả đầu ra giữa công việc đào tạo và lưu trữ Đám mây AWS trong SageMaker, hãy tham khảo Thư mục lưu trữ dành cho đào tạo của Amazon SageMaker dành cho tập dữ liệu đào tạo, điểm kiểm tra, phần mềm mô hình và đầu ra.

Đoạn mã sau sử dụng một hư cấu model.save() chức năng bên trong train.py tập lệnh chứa logic đào tạo:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

Quy mô suy luận cho hàng ngàn mô hình với SageMaker MMEs

SageMaker MME cho phép bạn phân phát nhiều mô hình cùng lúc bằng cách tạo cấu hình điểm cuối bao gồm danh sách tất cả các mô hình sẽ phân phát, sau đó tạo điểm cuối bằng cách sử dụng cấu hình điểm cuối đó. Không cần phải triển khai lại điểm cuối mỗi khi bạn thêm một mô hình mới vì điểm cuối sẽ tự động phân phát tất cả các mô hình được lưu trữ trong các đường dẫn S3 đã chỉ định. Điều này đạt được với Máy chủ đa mô hình (MMS), một khung nguồn mở để phục vụ các mô hình ML có thể được cài đặt trong vùng chứa để cung cấp giao diện người dùng đáp ứng các yêu cầu đối với API vùng chứa MME mới. Ngoài ra, bạn có thể sử dụng các máy chủ mô hình khác bao gồm ngọn đuốcphục vụTriton. MMS có thể được cài đặt trong vùng chứa tùy chỉnh của bạn thông qua Bộ công cụ suy luận SageMaker. Để tìm hiểu thêm về cách định cấu hình Dockerfile của bạn để bao gồm MMS và sử dụng nó để phục vụ các mô hình của bạn, hãy tham khảo Xây dựng vùng chứa của riêng bạn cho các điểm cuối đa mô hình SageMaker.

Đoạn mã sau cho biết cách tạo một MME bằng SageMaker Python SDK:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

Khi MME hoạt động, chúng tôi có thể gọi nó để tạo dự đoán. Lệnh gọi có thể được thực hiện trong bất kỳ AWS SDK nào cũng như với SageMaker Python SDK, như minh họa trong đoạn mã sau:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

Khi gọi một mô hình, mô hình ban đầu được tải từ Amazon S3 trên phiên bản, điều này có thể dẫn đến khởi động nguội khi gọi một mô hình mới. Các mô hình được sử dụng thường xuyên được lưu trong bộ nhớ đệm và trên đĩa để cung cấp khả năng suy luận có độ trễ thấp.

Kết luận

SageMaker là một nền tảng mạnh mẽ và hiệu quả về chi phí để đào tạo và phục vụ hàng nghìn mô hình ML. Các tính năng của nó, bao gồm Xử lý SageMaker, công việc đào tạo và MME, cho phép các tổ chức đào tạo và phục vụ hiệu quả hàng nghìn mô hình trên quy mô lớn, đồng thời hưởng lợi từ lợi thế tiết kiệm chi phí khi sử dụng cơ sở hạ tầng Đám mây AWS. Để tìm hiểu thêm về cách sử dụng SageMaker để đào tạo và phục vụ hàng nghìn mô hình, hãy tham khảo Xử lý dữ liệu, Đào tạo người mẫu với Amazon SageMakerLưu trữ nhiều mô hình trong một vùng chứa phía sau một điểm cuối.


Về các tác giả

Ảnh của DavideDavide Gallitelli là Kiến trúc sư Giải pháp Chuyên gia về AI / ML trong khu vực EMEA. Anh ấy có trụ sở tại Brussels và làm việc chặt chẽ với khách hàng trên khắp Benelux. Anh ấy đã là một nhà phát triển từ khi còn rất trẻ, bắt đầu viết mã ở tuổi 7. Anh ấy bắt đầu học AI / ML ở trường đại học, và yêu nó kể từ đó.

Ảnh MauritsMaurits de Groot là Kiến trúc sư giải pháp tại Amazon Web Services, có trụ sở tại Amsterdam. Anh ấy thích làm việc với các chủ đề liên quan đến học máy và có niềm yêu thích với các công ty khởi nghiệp. Khi rảnh rỗi, anh ấy thích trượt tuyết và chơi bóng quần.

Dấu thời gian:

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