Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Cải thiện nghiên cứu có giá trị cao với khuôn mặt ôm và điểm cuối suy luận không đồng bộ của Amazon SageMaker

Nhiều khách hàng AWS của chúng tôi cung cấp dịch vụ nghiên cứu, phân tích và thông tin kinh doanh. Loại hình nghiên cứu và kinh doanh thông minh này cho phép khách hàng cuối của họ đi trước thị trường và đối thủ cạnh tranh, xác định các cơ hội tăng trưởng và giải quyết các vấn đề một cách chủ động. Ví dụ: một số khách hàng trong lĩnh vực dịch vụ tài chính của chúng tôi thực hiện nghiên cứu cổ phiếu, quỹ đầu cơ và công ty quản lý đầu tư để giúp họ hiểu xu hướng và xác định chiến lược danh mục đầu tư. Trong ngành y tế, ngày càng có nhiều nghiên cứu sức khỏe dựa trên thông tin. Rất nhiều nghiên cứu đòi hỏi phải phân tích dữ liệu ban đầu được thu thập để chẩn đoán, điều trị hoặc cho các dự án nghiên cứu khác, và hiện đang được sử dụng cho các mục đích nghiên cứu mới. Các hình thức nghiên cứu sức khỏe này đã dẫn đến việc phòng ngừa ban đầu hiệu quả để tránh các ca bệnh mới, phòng ngừa thứ cấp để phát hiện sớm và phòng ngừa để quản lý bệnh tốt hơn. Kết quả nghiên cứu không chỉ cải thiện chất lượng cuộc sống mà còn giúp giảm chi phí chăm sóc sức khỏe.

Khách hàng có xu hướng tìm hiểu thông tin từ các nguồn công khai và riêng tư. Sau đó, họ áp dụng các mô hình xử lý ngôn ngữ tự nhiên (NLP) đã thiết lập hoặc tùy chỉnh để tóm tắt và xác định xu hướng cũng như tạo ra những hiểu biết sâu sắc dựa trên thông tin này. Các mô hình NLP được sử dụng cho các loại nhiệm vụ nghiên cứu này xử lý các mô hình lớn và thường liên quan đến các bài báo dài được tóm tắt xem xét kích thước của kho tài liệu — và các điểm cuối chuyên dụng, hiện chưa được tối ưu hóa về chi phí. Các ứng dụng này nhận được một loạt lưu lượng truy cập đến vào các thời điểm khác nhau trong ngày.

Chúng tôi tin rằng khách hàng sẽ được hưởng lợi rất nhiều từ khả năng giảm quy mô xuống XNUMX và tăng cường khả năng suy luận của họ khi cần thiết. Điều này tối ưu hóa chi phí nghiên cứu và vẫn không ảnh hưởng đến chất lượng của các suy luận. Bài đăng này thảo luận về cách Ôm mặt cùng với Amazon SageMaker suy luận không đồng bộ có thể giúp đạt được điều này.

Bạn có thể xây dựng các mô hình tóm tắt văn bản với nhiều khuôn khổ học sâu như TensorFlow, PyTorch và Apache MXNet. Các mô hình này thường có khối lượng đầu vào lớn gồm nhiều tài liệu văn bản có kích thước khác nhau. Mô hình học sâu nâng cao yêu cầu xử lý trước chuyên sâu bằng máy tính trước khi suy luận mô hình. Thời gian xử lý có thể kéo dài vài phút, điều này loại bỏ tùy chọn chạy suy luận thời gian thực bằng cách chuyển tải trọng qua API HTTP. Thay vào đó, bạn cần phải xử lý tải trọng đầu vào không đồng bộ từ một cửa hàng đối tượng như Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) với xếp hàng tự động và ngưỡng đồng thời được xác định trước. Hệ thống sẽ có thể nhận thông báo trạng thái và giảm chi phí không cần thiết bằng cách dọn dẹp tài nguyên khi nhiệm vụ hoàn thành.

SageMaker giúp các nhà khoa học và nhà phát triển dữ liệu chuẩn bị, xây dựng, đào tạo và triển khai các mô hình học máy (ML) chất lượng cao một cách nhanh chóng bằng cách tập hợp một loạt các khả năng được xây dựng có mục đích cho ML. SageMaker cung cấp các vùng chứa phục vụ mô hình mã nguồn mở tiên tiến nhất cho XGBoost (chứa, SDK), Scikit-Tìm hiểu (chứa, SDK), PyTorch (chứa, SDK), TensorFlow (chứa, SDK) và Apache MXNet (chứa, SDK).

SageMaker cung cấp bốn tùy chọn để triển khai các mô hình ML được đào tạo nhằm tạo ra các suy luận về dữ liệu mới.
  1. Suy luận thời gian thực điểm cuối phù hợp với khối lượng công việc cần được xử lý với yêu cầu độ trễ thấp theo thứ tự từ ms đến giây.
  2. Chuyển đổi hàng loạt lý tưởng cho các dự đoán ngoại tuyến trên các lô dữ liệu lớn.
  3. Suy luận không máy chủ của Amazon SageMaker (ở chế độ xem trước và không được khuyến nghị cho khối lượng công việc sản xuất tính đến thời điểm viết bài này) là một tùy chọn suy luận được xây dựng có mục đích giúp bạn dễ dàng triển khai và mở rộng các mô hình ML. Serverless Inference lý tưởng cho các khối lượng công việc có thời gian nhàn rỗi giữa các lần lưu lượng truy cập và có thể chịu được các lần khởi động lạnh.
  4. Suy luận không đồng bộ điểm cuối xếp hàng các yêu cầu đến. Chúng lý tưởng cho khối lượng công việc có kích thước yêu cầu lớn (lên đến 1 GB) và thời gian xử lý suy luận theo thứ tự phút (tối đa 15 phút). Suy luận không đồng bộ cho phép bạn tiết kiệm chi phí bằng cách tự động điều chỉnh số lượng phiên bản thành XNUMX khi không có yêu cầu nào để xử lý.

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

Trong bài đăng này, chúng tôi triển khai một Mô hình PEGASUS đã được đào tạo trước để thực hiện tóm tắt văn bản từ Ôm mặt đến Dịch vụ lưu trữ của SageMaker. Chúng tôi sử dụng mô hình như là từ Hugging Face để đơn giản hóa. Tuy nhiên, bạn có thể tinh chỉnh mô hình dựa trên tập dữ liệu tùy chỉnh. Bạn cũng có thể thử các mô hình khác có sẵn trong Trung tâm mô hình khuôn mặt ôm. Chúng tôi cũng cung cấp một điểm cuối suy luận không đồng bộ lưu trữ mô hình này, từ đó bạn có thể nhận được các dự đoán.

Trình xử lý suy luận của điểm cuối suy luận không đồng bộ mong đợi một bài báo dưới dạng tải trọng đầu vào. Văn bản tóm tắt của bài báo là kết quả đầu ra. Kết quả đầu ra được lưu trữ trong cơ sở dữ liệu để phân tích các xu hướng hoặc được đưa về phía hạ lưu để phân tích thêm. Phân tích hạ nguồn này thu được những thông tin chi tiết về dữ liệu giúp ích cho việc nghiên cứu.

Chúng tôi chứng minh cách điểm cuối suy luận không đồng bộ cho phép bạn có thông báo hoàn thành và đồng thời do người dùng xác định. Chúng tôi định cấu hình tự động điều chỉnh tỷ lệ các phiên bản phía sau điểm cuối để giảm tỷ lệ xuống XNUMX khi lưu lượng truy cập giảm và tăng tỷ lệ khi hàng đợi yêu cầu đầy lên.

Chúng tôi cũng dùng amazoncloudwatch các chỉ số để theo dõi kích thước hàng đợi, tổng thời gian xử lý và các lệnh gọi được xử lý.

Trong sơ đồ sau, chúng tôi hiển thị các bước liên quan trong khi thực hiện suy luận bằng cách sử dụng điểm cuối suy luận không đồng bộ.

Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

  1. Được đào tạo trước của chúng tôi PEGASUS Mô hình ML lần đầu tiên được lưu trữ trên điểm cuối mở rộng quy mô.
  2. Người dùng tải bài viết được tóm tắt lên nhóm S3 đầu vào.
  3. Điểm cuối suy luận không đồng bộ được gọi bằng API.
  4. Sau khi suy luận xong, kết quả được lưu vào thùng S3 đầu ra.
  5. An Dịch vụ thông báo đơn giản của Amazon (Amazon SNS) thông báo được gửi đến người dùng để thông báo cho họ về việc hoàn thành thành công hay thất bại.

Tạo một điểm cuối suy luận không đồng bộ

Chúng tôi tạo điểm cuối suy luận không đồng bộ tương tự như điểm cuối được lưu trữ trong thời gian thực. Các bước bao gồm tạo mô hình SageMaker, tiếp theo là cấu hình điểm cuối và triển khai điểm cuối. Sự khác biệt giữa hai loại điểm cuối là cấu hình điểm cuối suy luận không đồng bộ chứa một AsyncInferenceConfig tiết diện. Ở đây chúng tôi chỉ định đường dẫn đầu ra S3 cho các kết quả từ lệnh gọi điểm cuối và tùy chọn bao gồm các chủ đề SNS cho các thông báo về thành công và thất bại. Chúng tôi cũng chỉ định số lượng lệnh gọi đồng thời tối đa cho mỗi trường hợp do khách hàng xác định. Xem đoạn mã sau:

AsyncInferenceConfig={ "OutputConfig": { "S3OutputPath": f"s3://{bucket}/{bucket_prefix}/output", # Optionally specify Amazon SNS topics for notifications "NotificationConfig": { "SuccessTopic": success_topic, "ErrorTopic": error_topic, } }, "ClientConfig": { "MaxConcurrentInvocationsPerInstance": 2 #increase this value up to throughput peak for ideal performance } }

Để biết chi tiết về API để tạo cấu hình điểm cuối cho suy luận không đồng bộ, hãy xem Tạo một điểm cuối suy luận không đồng bộ.

Gọi điểm cuối suy luận không đồng bộ

Ảnh chụp màn hình sau đây hiển thị một bài viết ngắn gọn mà chúng tôi sử dụng làm trọng tải đầu vào của mình:
Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Đoạn mã sau tải lên bài viết dưới dạng input.json tệp lên Amazon S3:

sm_session.upload_data( input_location, bucket=sm_session.default_bucket(), key_prefix=prefix, extra_args={"ContentType": "text/plain"})

Chúng tôi sử dụng Amazon S3 URI cho tệp tải trọng đầu vào để gọi điểm cuối. Đối tượng phản hồi chứa vị trí đầu ra trong Amazon S3 để truy xuất kết quả sau khi hoàn thành:

response = sm_runtime.invoke_endpoint_async(EndpointName=endpoint_name, InputLocation=input_1_s3_location)
output_location = response['OutputLocation']

Ảnh chụp màn hình sau đây cho thấy tóm tắt bài đăng đầu ra mẫu:
Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Để biết chi tiết về API để gọi một điểm cuối suy luận không đồng bộ, hãy xem Gọi một điểm cuối suy luận không đồng bộ.

Xếp hàng đợi các yêu cầu gọi với đồng thời do người dùng xác định

Điểm cuối suy luận không đồng bộ tự động xếp hàng các yêu cầu gọi. Đây là một hàng đợi được quản lý hoàn toàn với nhiều số liệu giám sát khác nhau và không yêu cầu thêm bất kỳ cấu hình nào. Nó sử dụng MaxConcurrentInvocationsPerInstance trong cấu hình điểm cuối trước để xử lý các yêu cầu mới từ hàng đợi sau khi các yêu cầu trước đó hoàn tất. MaxConcurrentInvocationsPerInstance là số lượng tối đa các yêu cầu đồng thời do ứng dụng khách SageMaker gửi đến vùng chứa mô hình. Nếu không có giá trị nào được cung cấp, SageMaker sẽ chọn một giá trị tối ưu cho bạn.

Các trường hợp chia tỷ lệ tự động trong điểm cuối suy luận không đồng bộ

Chúng tôi đặt chính sách chia tỷ lệ tự động với dung lượng tối thiểu là XNUMX và dung lượng tối đa là năm bản. Không giống như các điểm cuối được lưu trữ trong thời gian thực, điểm cuối suy luận không đồng bộ hỗ trợ thu nhỏ các phiên bản về XNUMX bằng cách đặt dung lượng tối thiểu thành XNUMX. Chúng tôi sử dụng ApproximateBacklogSizePerInstance chỉ số cho cấu hình chính sách chia tỷ lệ với tồn đọng hàng đợi mục tiêu là năm cho mỗi trường hợp để mở rộng quy mô hơn nữa. Chúng tôi đặt khoảng thời gian hồi chiêu cho ScaleInCooldown đến 120 giây và ScaleOutCooldown đến 120 giây. Giá trị cho ApproximateBacklogSizePerInstance được chọn dựa trên lưu lượng truy cập và độ nhạy của bạn với tốc độ mở rộng. Bạn mở rộng quy mô càng nhanh, chi phí bạn phải chịu càng ít, nhưng bạn càng có nhiều khả năng phải mở rộng quy mô lần nữa khi có yêu cầu mới. Bạn mở rộng quy mô càng chậm, bạn càng phải chịu nhiều chi phí nhưng ít có khả năng một yêu cầu đến khi bạn đang ở mức thấp.

client = boto3.client('application-autoscaling') # Common class representing Application Auto Scaling for SageMaker amongst other services resource_id='endpoint/' + endpoint_name + '/variant/' + 'variant1' # This is the format in which application autoscaling references the endpoint response = client.register_scalable_target(
ServiceNamespace='sagemaker', #
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=0,
MaxCapacity=5
) response = client.put_scaling_policy(
PolicyName='Invocations-ScalingPolicy',
ServiceNamespace='sagemaker', # The namespace of the AWS service that provides the resource.
ResourceId=resource_id, # Endpoint name
ScalableDimension='sagemaker:variant:DesiredInstanceCount', # SageMaker supports only Instance Count
PolicyType='TargetTrackingScaling', # 'StepScaling'|'TargetTrackingScaling'
TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [{'Name': 'EndpointName', 'Value': endpoint_name }], 'Statistic': 'Average',
}, 'ScaleInCooldown': 120, # ScaleInCooldown - The amount of time, in seconds, after a scale-in activity completes before another scale in activity can start. 'ScaleOutCooldown': 120 # ScaleOutCooldown - The amount of time, in seconds, after a scale-out activity completes before another scale out activity can start.
# 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled.
# If the value is true, scale-in is disabled and the target tracking policy won't remove capacity from the scalable resource.
}
)

Để biết chi tiết về API để tự động mở rộng quy mô điểm cuối suy luận không đồng bộ, hãy xem Tự động phân tỷ lệ một Điểm cuối suy luận không đồng bộ.

Định cấu hình thông báo từ điểm cuối suy luận không đồng bộ

Chúng tôi tạo hai chủ đề SNS riêng biệt về thành công và thông báo lỗi cho mỗi kết quả gọi điểm cuối:

sns_client = boto3.client('sns')
response = sns_client.create_topic(Name="Async-Demo-ErrorTopic2")
error_topic = response['TopicArn']
response = sns_client.create_topic(Name="Async-Demo-SuccessTopic2")
success_topic = response['TopicArn']

Các tùy chọn khác cho thông báo bao gồm kiểm tra định kỳ đầu ra của nhóm S3 hoặc sử dụng thông báo nhóm S3 để khởi tạo AWS Lambda chức năng tải lên tệp. Thông báo SNS được bao gồm trong phần cấu hình điểm cuối như đã mô tả trước đây.

Để biết chi tiết về cách thiết lập thông báo từ điểm cuối suy luận không đồng bộ, hãy xem Kiểm tra kết quả dự đoán.

Giám sát điểm cuối suy luận không đồng bộ

Chúng tôi giám sát điểm cuối suy luận không đồng bộ với các chỉ số CloudWatch bổ sung được tích hợp sẵn dành riêng cho suy luận không đồng bộ. Ví dụ: chúng tôi theo dõi độ dài hàng đợi trong mỗi trường hợp với ApproximateBacklogSizePerInstance và tổng chiều dài hàng đợi với ApproximateBacklogSize.

Để có danh sách đầy đủ các chỉ số, hãy tham khảo Giám sát các điểm cuối suy luận không đồng bộ.

Chúng tôi có thể tối ưu hóa cấu hình điểm cuối để có được phiên bản tiết kiệm chi phí nhất với hiệu suất cao. Ví dụ: chúng ta có thể sử dụng một phiên bản với Amazon Elastic Inference hoặc AWS Inferentia. Chúng tôi cũng có thể tăng dần mức đồng thời lên đến đỉnh thông lượng trong khi điều chỉnh các thông số máy chủ mô hình và vùng chứa khác.

Đồ thị CloudWatch

Chúng tôi đã mô phỏng lưu lượng 10,000 yêu cầu suy luận trong một khoảng thời gian đến điểm cuối suy luận không đồng bộ được kích hoạt với chính sách chia tỷ lệ tự động được mô tả trong phần trước.

Ảnh chụp màn hình sau đây hiển thị các chỉ số phiên bản trước khi các yêu cầu bắt đầu được gửi đến. Chúng tôi bắt đầu với một điểm cuối trực tiếp không có phiên bản nào đang chạy:
Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Biểu đồ sau đây cho thấy cách BacklogSizeBacklogSizePerInstance các chỉ số thay đổi khi tự động mở rộng quy mô và tải trên điểm cuối được chia sẻ bởi nhiều trường hợp đã được cung cấp như một phần của quy trình tự động mở rộng quy mô.
Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Như được hiển thị trong ảnh chụp màn hình sau, số lượng trường hợp tăng lên khi số lượng suy luận tăng lên:
Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Ảnh chụp màn hình sau đây cho thấy cách mở rộng quy mô đưa điểm cuối trở lại trạng thái ban đầu của phiên bản không chạy:
Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Làm sạch

Sau khi tất cả các yêu cầu hoàn tất, chúng tôi có thể xóa điểm cuối tương tự như xóa điểm cuối được lưu trữ theo thời gian thực. Lưu ý rằng nếu chúng ta đặt dung lượng tối thiểu của điểm cuối suy luận không đồng bộ thành XNUMX, thì sẽ không có phí phiên bản nào phát sinh sau khi nó giảm xuống XNUMX.

Nếu bạn đã bật tính năng tự động mở rộng quy mô cho điểm cuối của mình, hãy đảm bảo rằng bạn hủy đăng ký điểm cuối làm mục tiêu có thể mở rộng trước khi xóa điểm cuối. Để thực hiện việc này, hãy chạy đoạn mã sau:

response = client.deregister_scalable_target(ServiceNamespace='sagemaker',ResourceId='resource_id',ScalableDimension='sagemaker:variant:DesiredInstanceCount')

Hãy nhớ xóa điểm cuối của bạn sau khi sử dụng vì bạn sẽ bị tính phí cho các phiên bản được sử dụng trong bản trình diễn này.

sm_client.delete_endpoint(EndpointName=endpoint_name)

Bạn cũng cần xóa các đối tượng S3 và chủ đề SNS. Nếu bạn đã tạo bất kỳ tài nguyên AWS nào khác để sử dụng và xử lý thông báo SNS, bạn cũng có thể muốn xóa chúng.

Kết luận

Trong bài đăng này, chúng tôi đã trình bày cách sử dụng khả năng suy luận không đồng bộ mới từ SageMaker để xử lý tải trọng đầu vào lớn điển hình là một phần của nhiệm vụ tóm tắt. Để suy luận, chúng tôi đã sử dụng một mô hình từ Khuôn mặt ôm và triển khai nó trên điểm cuối suy luận không đồng bộ. Chúng tôi đã giải thích những thách thức phổ biến của lưu lượng truy cập bùng nổ, thời gian xử lý mô hình cao và tải trọng lớn liên quan đến phân tích nghiên cứu. Khả năng vốn có của điểm cuối suy luận không đồng bộ để quản lý hàng đợi nội bộ, giới hạn đồng thời được xác định trước, định cấu hình thông báo phản hồi và tự động giảm tỷ lệ xuống XNUMX đã giúp chúng tôi giải quyết những thách thức này. Mã hoàn chỉnh cho ví dụ này có sẵn trên GitHub.

Để bắt đầu với suy luận không đồng bộ SageMaker, hãy xem Suy luận không đồng bộ.


Về các tác giả

Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Dinesh Kumar Subramani là Kiến trúc sư Giải pháp Cao cấp của nhóm UKIR SMB, có trụ sở tại Edinburgh, Scotland. Anh ấy chuyên về trí tuệ nhân tạo và máy học. Dinesh thích làm việc với khách hàng trong các ngành để giúp họ giải quyết các vấn đề của mình với các dịch vụ AWS. Ngoài công việc, anh ấy thích dành thời gian cho gia đình, chơi cờ vua và thưởng thức âm nhạc ở nhiều thể loại.

Cải thiện nghiên cứu có giá trị cao với Hugging Face và điểm cuối suy luận không đồng bộ của Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Raghu Ramesha là một Kiến trúc sư Giải pháp ML của nhóm Dịch vụ Amazon SageMaker. Anh ấy tập trung vào việc giúp khách hàng xây dựng, triển khai và chuyển khối lượng công việc sản xuất ML sang SageMaker trên quy mô lớn. Anh ấy chuyên về học máy, AI và các lĩnh vực thị giác máy tính, và có bằng thạc sĩ về Khoa học máy tính tại UT Dallas. Khi rảnh rỗi, anh thích đi du lịch và chụp ảnh.

Dấu thời gian:

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