Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Đạt được hiệu suất siêu tỷ lệ cho việc phân phát mô hình bằng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker

Các ứng dụng học máy (ML) rất phức tạp để triển khai và thường yêu cầu nhiều mô hình ML để phục vụ một yêu cầu suy luận duy nhất. Một yêu cầu điển hình có thể chảy qua nhiều mô hình với các bước như tiền xử lý, biến đổi dữ liệu, logic lựa chọn mô hình, tổng hợp mô hình và xử lý sau. Điều này đã dẫn đến sự phát triển của các mẫu thiết kế phổ biến như đường ống suy luận nối tiếp, tập hợp (tập hợp phân tán) và quy trình công việc logic nghiệp vụ, dẫn đến việc hiện thực hóa toàn bộ quy trình làm việc của yêu cầu dưới dạng Đồ thị vòng có hướng (DAG). Tuy nhiên, khi quy trình làm việc ngày càng phức tạp, điều này dẫn đến việc tăng thời gian phản hồi tổng thể hoặc độ trễ của các ứng dụng này, từ đó ảnh hưởng đến trải nghiệm người dùng tổng thể. Hơn nữa, nếu các thành phần này được lưu trữ trên các phiên bản khác nhau, thì độ trễ mạng bổ sung giữa các phiên bản này sẽ làm tăng độ trễ tổng thể. Hãy xem xét một ví dụ về trường hợp sử dụng ML phổ biến cho trợ lý ảo trong hỗ trợ khách hàng. Một yêu cầu điển hình có thể phải trải qua một số bước liên quan đến nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên (NLP), theo dõi trạng thái hộp thoại, chính sách hộp thoại, tạo văn bản và cuối cùng là chuyển văn bản thành giọng nói. Hơn nữa, để làm cho tương tác của người dùng được cá nhân hóa hơn, bạn cũng có thể sử dụng các mô hình NLP hiện đại, dựa trên máy biến áp như các phiên bản khác nhau của Chứng nhận, BARTGPT. Kết quả cuối cùng là thời gian phản hồi lâu cho các nhóm mô hình này và trải nghiệm khách hàng kém.

Một mô hình phổ biến để thúc đẩy thời gian phản hồi thấp hơn mà không ảnh hưởng đến thông lượng tổng thể là lưu trữ các mô hình này trên cùng một phiên bản cùng với logic nghiệp vụ nhẹ được nhúng trong đó. Các mô hình này có thể được đóng gói thêm trong một hoặc nhiều vùng chứa trên cùng một phiên bản để cung cấp sự cô lập cho các quy trình đang chạy và giữ cho độ trễ thấp. Ngoài ra, độ trễ tổng thể cũng phụ thuộc vào logic ứng dụng suy luận, tối ưu hóa mô hình, cơ sở hạ tầng cơ bản (bao gồm máy tính, lưu trữ và mạng) và máy chủ web bên dưới nhận yêu cầu suy luận. Máy chủ suy luận NVIDIA Triton là một phần mềm phục vụ suy luận mã nguồn mở với các tính năng để tối đa hóa thông lượng và sử dụng phần cứng với độ trễ suy luận cực thấp (một phần nghìn giây). Nó có hỗ trợ rộng rãi các khuôn khổ ML (bao gồm TensorFlow, PyTorch, ONNX, XGBoost và NVIDIA TensorRT) và các phụ trợ cơ sở hạ tầng, bao gồm GPU, CPU và Suy luận AWS. Ngoài ra, Triton Inference Server được tích hợp với Amazon SageMaker, một dịch vụ ML end-to-end được quản lý đầy đủ, cung cấp các tùy chọn suy luận theo thời gian thực bao gồm duy nhấtđa mô hình lưu trữ. Các tùy chọn suy luận này bao gồm lưu trữ nhiều mô hình trong cùng một vùng chứa đằng sau một điểm cuối duy nhấtvà lưu trữ nhiều mô hình với nhiều thùng chứa đằng sau một điểm cuối duy nhất.

Vào tháng 2021 năm XNUMX, chúng tôi đã công bố sự tích hợp của Triton Inference Server trên SageMaker. AWS đã hợp tác chặt chẽ với NVIDIA để cho phép bạn khai thác tối đa cả hai thế giới và giúp việc triển khai mô hình với Triton trên AWS dễ dàng hơn.

Trong bài đăng này, chúng tôi xem xét các phương pháp hay nhất để triển khai mô hình biến áp ở quy mô lớn trên GPU bằng Triton Inference Server trên SageMaker. Đầu tiên, chúng ta bắt đầu với bản tóm tắt các khái niệm chính về độ trễ trong SageMaker và tổng quan về các nguyên tắc điều chỉnh hiệu suất. Tiếp theo, chúng tôi cung cấp tổng quan về Triton và các tính năng của nó cũng như mã ví dụ để triển khai trên SageMaker. Cuối cùng, chúng tôi thực hiện kiểm tra tải bằng cách sử dụng Đề xuất suy luận của SageMaker và tóm tắt những hiểu biết và kết luận từ thử nghiệm tải của một mẫu máy biến áp phổ biến do Mặt ôm cung cấp.

Bạn có thể xem lại máy tính xách tay chúng tôi đã sử dụng để triển khai các mô hình và thực hiện kiểm tra tải của riêng bạn bằng cách sử dụng mã trên GitHub.

Điều chỉnh hiệu suất và tối ưu hóa để phục vụ mô hình trên SageMaker

Điều chỉnh và tối ưu hóa hiệu suất là một quá trình thực nghiệm thường bao gồm nhiều lần lặp lại. Số lượng tham số cần điều chỉnh là tổ hợp và tập hợp các giá trị tham số cấu hình không độc lập với nhau. Các yếu tố khác nhau ảnh hưởng đến việc điều chỉnh tham số tối ưu, bao gồm kích thước tải trọng, loại và số lượng mô hình ML trong biểu đồ luồng yêu cầu suy luận, loại lưu trữ, loại phiên bản máy tính, cơ sở hạ tầng mạng, mã ứng dụng, suy luận phục vụ thời gian chạy và cấu hình phần mềm, v.v.

Nếu bạn đang sử dụng SageMaker để triển khai các mô hình ML, bạn phải chọn một phiên bản máy tính có hiệu suất giá tốt nhất, đây là một quá trình phức tạp và lặp đi lặp lại có thể mất hàng tuần thử nghiệm. Trước tiên, bạn cần chọn đúng loại phiên bản ML trong số hơn 70 tùy chọn dựa trên yêu cầu tài nguyên của các mô hình của bạn và kích thước của dữ liệu đầu vào. Tiếp theo, bạn cần tối ưu hóa mô hình cho loại phiên bản đã chọn. Cuối cùng, bạn cần cung cấp và quản lý cơ sở hạ tầng để chạy kiểm tra tải và điều chỉnh cấu hình đám mây để có hiệu suất và chi phí tối ưu. Tất cả điều này có thể trì hoãn việc triển khai mô hình và thời gian đưa ra thị trường. Ngoài ra, bạn cần đánh giá sự cân bằng giữa độ trễ, thông lượng và chi phí để chọn cấu hình triển khai tối ưu. Đề xuất suy luận của SageMaker tự động chọn loại phiên bản máy tính phù hợp, số lượng phiên bản, tham số vùng chứa và tối ưu hóa mô hình để suy luận nhằm tối đa hóa thông lượng, giảm độ trễ và giảm thiểu chi phí.

Suy luận thời gian thực và độ trễ trong SageMaker

Suy luận thời gian thực của SageMaker lý tưởng cho khối lượng công việc suy luận mà bạn có yêu cầu thời gian thực, tương tác, độ trễ thấp. Có bốn số liệu được sử dụng phổ biến nhất để theo dõi độ trễ yêu cầu suy luận cho các điểm cuối suy luận của SageMaker

  • Độ trễ vùng chứa - Thời gian cần thiết để gửi yêu cầu, tìm nạp phản hồi từ vùng chứa của mô hình và hoàn thành suy luận trong vùng chứa. Chỉ số này có sẵn trong Amazon CloudWatch như một phần của Số liệu mời gọi được xuất bản bởi SageMaker.
  • Độ trễ của mô hình - Tổng thời gian được thực hiện bởi tất cả các vùng chứa SageMaker trong một đường ống suy luận. Chỉ số này có sẵn trong Amazon CloudWatch như một phần của Số liệu mời gọi được xuất bản bởi SageMaker.
  • Độ trễ trên không - Được đo từ thời điểm SageMaker nhận được yêu cầu cho đến khi nó trả về phản hồi cho khách hàng, trừ đi độ trễ của mô hình. Chỉ số này có sẵn trong Amazon CloudWatch như một phần của Số liệu mời gọi được xuất bản bởi SageMaker.
  • Độ trễ từ đầu đến cuối - Được đo từ thời điểm máy khách gửi yêu cầu suy luận cho đến khi nhận được phản hồi trở lại. Khách hàng có thể xuất bản điều này dưới dạng chỉ số tùy chỉnh trong Amazon CloudWatch.

Sơ đồ sau đây minh họa các thành phần này.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Độ trễ của vùng chứa phụ thuộc vào một số yếu tố; những điều sau đây là một trong những điều quan trọng nhất:

  • Giao thức cơ bản (HTTP (s) / gRPC) được sử dụng để giao tiếp với máy chủ suy luận
  • Chi phí liên quan đến việc tạo kết nối TLS mới
  • Thời gian hủy đăng ký của tải trọng yêu cầu / phản hồi
  • Yêu cầu các tính năng xếp hàng và chia lô được cung cấp bởi máy chủ suy luận cơ bản
  • Yêu cầu khả năng lập lịch do máy chủ suy luận cơ bản cung cấp
  • Hiệu suất thời gian chạy cơ bản của máy chủ suy luận
  • Hiệu suất của các thư viện tiền xử lý và hậu xử lý trước khi gọi hàm dự đoán mô hình
  • Hiệu suất phụ trợ khuôn khổ ML cơ bản
  • Tối ưu hóa dành riêng cho mô hình và phần cứng cụ thể

Trong bài đăng này, chúng tôi chủ yếu tập trung vào việc tối ưu hóa độ trễ của vùng chứa cùng với thông lượng và chi phí tổng thể. Cụ thể, chúng tôi khám phá việc điều chỉnh hiệu suất Máy chủ suy luận Triton đang chạy bên trong vùng chứa SageMaker.

Tổng quan về ca sử dụng

Việc triển khai và mở rộng các mô hình NLP trong thiết lập sản xuất có thể khá khó khăn. Các mô hình NLP thường có kích thước rất lớn, chứa hàng triệu tham số của mô hình. Cần có các cấu hình mô hình tối ưu để đáp ứng các yêu cầu nghiêm ngặt về hiệu suất và khả năng mở rộng của các ứng dụng NLP cấp sản xuất.

Trong bài đăng này, chúng tôi đánh giá trường hợp sử dụng NLP bằng cách sử dụng điểm cuối thời gian thực SageMaker dựa trên vùng chứa Máy chủ suy luận Triton và đề xuất các tối ưu hóa điều chỉnh hiệu suất cho trường hợp sử dụng ML của chúng tôi. Chúng tôi sử dụng Khuôn mặt ôm dựa trên máy biến áp lớn, được đào tạo trước BERT lớn không phân biệt mô hình, có khoảng 336 triệu thông số mô hình. Câu đầu vào được sử dụng cho mô hình phân loại nhị phân được đệm và cắt bớt độ dài chuỗi đầu vào tối đa là 512 mã thông báo. Kiểm tra tải suy luận mô phỏng 500 lệnh gọi mỗi giây (30,000 lệnh gọi tối đa mỗi phút) và ModelLatency dưới 0.5 giây (500 mili giây).

Bảng sau đây tóm tắt cấu hình điểm chuẩn của chúng tôi.

Tên Model Ôm mặt bert-large-uncased
Kích thước mô hình 1.25 GB
Yêu cầu về độ trễ 0.5 giây (500 mili giây)
Lời mời mỗi giây 500 yêu cầu (30,000 mỗi phút)
Độ dài trình tự đầu vào 512 mã thông báo
Nhiệm vụ ML Phân loại nhị phân

Máy chủ suy luận NVIDIA Triton

Triton Inference Server được thiết kế đặc biệt để cho phép triển khai các mô hình trong sản xuất có thể mở rộng, nhanh chóng và dễ dàng. Triton hỗ trợ nhiều khuôn khổ AI chính, bao gồm TensorFlow, TensorRT, PyTorch, XGBoost và ONNX. Với phần phụ trợ tùy chỉnh Python và C ++, bạn cũng có thể triển khai khối lượng công việc suy luận của mình cho các trường hợp sử dụng tùy chỉnh hơn.

Quan trọng nhất, Triton cung cấp một thiết lập dựa trên cấu hình đơn giản để lưu trữ các mô hình của bạn, cung cấp một loạt các tính năng tối ưu hóa hiệu suất phong phú mà bạn có thể sử dụng mà không tốn nhiều công sức viết mã.

Triton tăng hiệu suất suy luận bằng cách tối đa hóa việc sử dụng phần cứng với các kỹ thuật tối ưu hóa khác nhau (chạy mô hình đồng thời và phân phối động được sử dụng thường xuyên nhất). Việc tìm kiếm các cấu hình mô hình tối ưu từ các kết hợp khác nhau của kích thước lô động và số lượng phiên bản mô hình đồng thời là chìa khóa để đạt được suy luận thời gian thực trong việc phân phối chi phí thấp bằng Triton.

Lô động

Nhiều học viên có xu hướng chạy suy luận một cách tuần tự khi máy chủ được gọi với nhiều yêu cầu độc lập. Mặc dù dễ thiết lập hơn, nhưng thường không phải là phương pháp hay nhất để sử dụng sức mạnh tính toán của GPU. Để giải quyết vấn đề này, Triton cung cấp các tính năng tối ưu hóa tích hợp của lô động để kết hợp các yêu cầu suy luận độc lập này ở phía máy chủ để tạo thành một lô lớn hơn một cách động nhằm tăng thông lượng. Sơ đồ sau minh họa kiến ​​trúc thời gian chạy Triton.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Trong kiến ​​trúc trước đó, tất cả các yêu cầu đến trình bắt động trước tiên trước khi vào hàng đợi của bộ lập lịch mô hình thực tế để chờ suy luận. Bạn có thể đặt kích thước lô ưa thích của mình cho lô động bằng cách sử dụng kích thước_bổ_nổi_kích_thước cài đặt trong cấu hình mô hình. (Lưu ý rằng kích thước lô đã hình thành cần phải nhỏ hơn kích thước tối đa_batch_size mô hình hỗ trợ.) Bạn cũng có thể định cấu hình max_queue_delay_micro giây để chỉ định thời gian trễ tối đa trong bộ bắt để đợi các yêu cầu khác tham gia vào nhóm dựa trên các yêu cầu về độ trễ của bạn.

Đoạn mã sau đây cho thấy cách bạn có thể thêm tính năng này với các tệp cấu hình mô hình để đặt phân phối động với kích thước lô ưa thích là 16 cho suy luận thực tế. Với cài đặt hiện tại, phiên bản mô hình được gọi ngay lập tức khi kích thước lô ưa thích là 16 được đáp ứng hoặc thời gian trễ 100 micro giây đã trôi qua kể từ khi yêu cầu đầu tiên đến bộ bắt động.

dynamic_batching { preferred_batch_size: 16 max_queue_delay_microseconds: 100 }

Chạy các mô hình đồng thời

Một tối ưu hóa thiết yếu khác được cung cấp trong Triton để tối đa hóa việc sử dụng phần cứng mà không có thêm chi phí độ trễ là thực hiện mô hình đồng thời, cho phép nhiều mô hình hoặc nhiều bản sao của cùng một mô hình chạy song song. Tính năng này cho phép Triton xử lý đồng thời nhiều yêu cầu suy luận, giúp tăng thông lượng suy luận bằng cách sử dụng sức mạnh tính toán nhàn rỗi trên phần cứng.

Hình dưới đây giới thiệu cách bạn có thể dễ dàng định cấu hình các chính sách triển khai mô hình khác nhau chỉ với một vài dòng thay đổi mã. Ví dụ: cấu hình A (bên trái) cho thấy rằng bạn có thể phát cùng một cấu hình của hai phiên bản mô hình của bert-large-uncased cho tất cả các GPU có sẵn. Ngược lại, cấu hình B (giữa) chỉ hiển thị một cấu hình khác cho GPU 0 mà không thay đổi chính sách trên các GPU khác. Bạn cũng có thể triển khai các phiên bản của các mô hình khác nhau trên một GPU, như được hiển thị trong cấu hình C (bên phải).

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Trong cấu hình C, phiên bản máy tính có thể xử lý hai yêu cầu đồng thời cho mô hình DistilGPT-2 và bảy yêu cầu đồng thời cho bert-large-uncased mô hình song song. Với những tối ưu hóa này, tài nguyên phần cứng có thể được sử dụng tốt hơn cho quá trình phục vụ, do đó cải thiện thông lượng và mang lại hiệu quả chi phí tốt hơn cho khối lượng công việc của bạn.

TenorRT

NVIDIA TenorRT là một SDK cho phép suy luận học sâu hiệu suất cao hoạt động trơn tru với Triton. TensorRT, hỗ trợ mọi khung học sâu chính, bao gồm một trình tối ưu hóa suy luận và thời gian chạy mang lại độ trễ thấp và thông lượng cao để chạy các suy luận với khối lượng lớn dữ liệu thông qua tối ưu hóa mạnh mẽ.

TensorRT tối ưu hóa biểu đồ để giảm thiểu dung lượng bộ nhớ bằng cách giải phóng bộ nhớ không cần thiết và tái sử dụng hiệu quả. Ngoài ra, quá trình biên dịch TensorRT kết hợp các hoạt động thưa thớt bên trong đồ thị mô hình để tạo thành một nhân lớn hơn để tránh chi phí cho nhiều lần khởi chạy nhân nhỏ. Tự động điều chỉnh nhân giúp bạn sử dụng đầy đủ phần cứng bằng cách chọn thuật toán tốt nhất trên GPU mục tiêu của bạn. Luồng CUDA cho phép các mô hình chạy song song để tối đa hóa việc sử dụng GPU của bạn để có hiệu suất tốt nhất. Cuối cùng nhưng không kém phần quan trọng, kỹ thuật lượng tử hóa hoàn toàn có thể sử dụng gia tốc chính xác hỗn hợp của các lõi Tensor để chạy mô hình trong FP32, TF32, FP16 và INT8 nhằm đạt được hiệu suất suy luận tốt nhất.

Triton trên máy chủ SageMaker

Lưu trữ SageMaker dịch vụ là tập hợp các tính năng của SageMaker nhằm mục đích làm cho việc triển khai và phục vụ mô hình dễ dàng hơn. Nó cung cấp nhiều tùy chọn để dễ dàng triển khai, tự động mở rộng quy mô, giám sát và tối ưu hóa các mô hình ML phù hợp với các trường hợp sử dụng khác nhau. Điều này có nghĩa là bạn có thể tối ưu hóa việc triển khai của mình cho tất cả các kiểu sử dụng, từ liên tục và luôn sẵn sàng với các tùy chọn không máy chủ, đến nhu cầu suy luận tạm thời, lâu dài hoặc hàng loạt.

Bên dưới chiếc ô lưu trữ của SageMaker cũng là bộ các Hộp chứa học tập sâu (DLC) suy luận của SageMaker, được đóng gói sẵn với phần mềm máy chủ mô hình thích hợp cho khung ML được hỗ trợ tương ứng của chúng. Điều này cho phép bạn đạt được hiệu suất suy luận cao mà không cần thiết lập máy chủ mô hình, đây thường là khía cạnh kỹ thuật phức tạp nhất của việc triển khai mô hình và nói chung, không phải là một phần của bộ kỹ năng của nhà khoa học dữ liệu. Máy chủ suy luận Triton hiện là có sẵn trên SageMaker Deep Learning Containers (DLC).

Sự đa dạng của các tùy chọn, tính mô-đun và sự dễ sử dụng của các khung phân phối khác nhau khiến SageMaker và Triton trở thành một đối thủ mạnh mẽ.

SageMaker Inference Khuyến nghị cho các kết quả kiểm tra điểm chuẩn

Chúng tôi sử dụng Đề xuất suy luận của SageMaker để chạy các thử nghiệm của mình. SageMaker Inference Recommender cung cấp hai loại công việc: mặc định và nâng cao, như được minh họa trong sơ đồ sau.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Công việc mặc định cung cấp các đề xuất về các loại phiên bản chỉ với mô hình và tải trọng mẫu để làm điểm chuẩn. Ngoài các đề xuất phiên bản, dịch vụ cũng cung cấp các thông số thời gian chạy để cải thiện hiệu suất. Các đề xuất của công việc mặc định nhằm thu hẹp tìm kiếm phiên bản. Trong một số trường hợp, nó có thể là họ cá thể, và trong những trường hợp khác, nó có thể là các kiểu cá thể cụ thể. Kết quả của công việc mặc định sau đó được đưa vào công việc nâng cao.

Công việc nâng cao cung cấp nhiều điều khiển hơn để tinh chỉnh hiệu suất hơn nữa. Các điều khiển này mô phỏng môi trường thực và các yêu cầu sản xuất. Trong số các điều khiển này là mẫu lưu lượng, nhằm phân loại mẫu yêu cầu cho các điểm chuẩn. Bạn có thể đặt đường dốc hoặc lưu lượng ổn định bằng cách sử dụng nhiều giai đoạn của mẫu giao thông. Ví dụ, một Ban đầuNumberOfUsers của 1, Tỷ lệ sinh sản của 1, và Thời lượng tính bằng giây 600 có thể dẫn đến lưu lượng truy cập dốc trong 10 phút với 1 người dùng đồng thời ở đầu và 10 ở cuối. Ngoài ra, trên các điều khiển, Yêu cầu tối đaNgưỡng độ trễ của mô hình đặt ngưỡng sản xuất, do đó, khi một trong các ngưỡng bị vượt quá, điểm chuẩn sẽ dừng lại.

Ngoài ra, thẻ cào số liệu đề xuất bao gồm thông lượng, độ trễ ở thông lượng tối đa và giá mỗi suy luận, do đó, thật dễ dàng để so sánh chúng.

Chúng tôi sử dụng loại công việc nâng cao của SageMaker Inference Recommender để chạy thử nghiệm của chúng tôi nhằm đạt được quyền kiểm soát bổ sung đối với các dạng lưu lượng truy cập và tinh chỉnh cấu hình của vùng chứa phục vụ.

Thiết lập thí nghiệm

Chúng tôi sử dụng tính năng kiểm tra tải tùy chỉnh của SageMaker Inference Recommender để chuẩn hóa hồ sơ NLP được nêu trong trường hợp sử dụng của chúng tôi. Đầu tiên chúng tôi xác định các điều kiện tiên quyết sau liên quan đến mô hình NLP và nhiệm vụ ML. SageMaker Inference Recommender sử dụng thông tin này để lấy một hình ảnh Docker suy luận từ Đăng ký container đàn hồi Amazon (Amazon ECR) và đăng ký mô hình với cơ quan đăng ký mô hình SageMaker.

miền NATURAL_LANGUAGE_PROCESSING
Nhiệm vụ FILL_MASK
Khung PYTORCH: 1.6.0
Mô hình bert-large-uncased

Các cấu hình mẫu lưu lượng trong SageMaker Inference Recommender cho phép chúng tôi xác định các giai đoạn khác nhau cho thử nghiệm tải tùy chỉnh. Thử nghiệm tải bắt đầu với hai người dùng ban đầu và tạo ra hai người dùng mới mỗi phút, trong tổng thời lượng là 25 phút (1500 giây), như được hiển thị trong đoạn mã sau:

"TrafficPattern": { "TrafficType": "PHASES", "Phases": [ { "InitialNumberOfUsers": 2, "SpawnRate": 2, "DurationInSeconds": 1500 }, ],
}

Chúng tôi thử nghiệm với thử nghiệm tải cùng một mô hình ở hai trạng thái khác nhau. Các thử nghiệm dựa trên PyTorch sử dụng mô hình PyTorch chuẩn, không thay đổi. Đối với các thử nghiệm dựa trên TensorRT, chúng tôi chuyển đổi trước mô hình PyTorch thành công cụ TensorRT.

Chúng tôi áp dụng các kết hợp khác nhau của các tính năng tối ưu hóa hiệu suất trên hai mô hình này, được tóm tắt trong bảng sau.

Tên cấu hình Mô tả cấu hình Cấu hình Mô hình
pt-base Đường cơ sở PyTorch Mô hình PyTorch cơ sở, không có thay đổi
pt-db PyTorch với lô động dynamic_batching
{}
pt-ig PyTorch với nhiều phiên bản mô hình instance_group [
    {
      count: 2
      kind: KIND_GPU
    }
  ]
pt-ig-db PyTorch với nhiều phiên bản mô hình và phân phối động dynamic_batching
{},
instance_group [
     {
          count: 2
          kind: KIND_GPU
     }
]
trt-base Đường cơ sở của TensorRT Mô hình PyTorch được biên dịch với TensoRT trtexec tiện ích
trt-db TensorRT với lô động dynamic_batching
{}
trt-ig TensorRT với nhiều phiên bản mô hình instance_group [
     {
          count: 2
          kind: KIND_GPU
     }
]
trt-ig-db TensorRT với nhiều phiên bản mô hình và phân phối động dynamic_batching
{},
instance_group [
     {
          count: 2
          kind: KIND_GPU
      }
]

Kết quả kiểm tra và quan sát

Chúng tôi đã tiến hành kiểm tra tải cho ba loại phiên bản trong cùng họ g4dn: ml.g4dn.xlarge, ml.g4dn.2xlarge và ml.g4dn.12xlarge. Tất cả các loại phiên bản g4dn đều có quyền truy cập vào GPU NVIDIA T4 Tensor Core và bộ xử lý Intel Cascade Lake thế hệ thứ 2. Logic đằng sau việc lựa chọn các loại phiên bản là có cả một phiên bản chỉ có một GPU khả dụng, cũng như một phiên bản có quyền truy cập vào nhiều GPU — bốn trong trường hợp ml.g4dn.12xlarge. Ngoài ra, chúng tôi muốn kiểm tra xem việc tăng dung lượng vCPU trên ví dụ chỉ với một GPU khả dụng có mang lại cải thiện tỷ lệ hiệu suất chi phí hay không.

Trước tiên, hãy xem xét việc tăng tốc độ tối ưu hóa riêng lẻ. Biểu đồ sau đây cho thấy rằng tối ưu hóa TensorRT giúp giảm 50% độ trễ của mô hình so với biểu đồ gốc trong PyTorch trên phiên bản ml.g4dn.xlarge. Mức giảm độ trễ này tăng lên hơn ba lần trên các phiên bản đa GPU của ml.g4dn.12xlarge. Trong khi đó, việc cải thiện thông lượng 30% là nhất quán trên cả hai trường hợp, dẫn đến hiệu quả chi phí tốt hơn sau khi áp dụng tối ưu hóa TensorRT.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Với phân phối động, chúng ta có thể tiến gần đến mức cải thiện gấp 2 lần thông lượng bằng cách sử dụng cùng một kiến ​​trúc phần cứng trên tất cả các ví dụ thử nghiệm của ml.g4dn.xlarge, ml.g4dn.2xlarge và ml.g4dn.12xlarge mà không tăng đáng kể độ trễ.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Tương tự, việc thực thi mô hình đồng thời cho phép chúng tôi cải thiện thông lượng khoảng 3-4 lần bằng cách tối đa hóa việc sử dụng GPU trên bản sao ml.g4dn.xlarge và cải thiện khoảng 2 lần trên cả bản sao ml.g4dn.2xlarge và bản sao đa GPU của ml. g4dn.12xlarge .. Sự gia tăng thông lượng này mà không có bất kỳ chi phí nào về độ trễ.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Vẫn tốt hơn, chúng tôi có thể tích hợp tất cả những tối ưu hóa này để mang lại hiệu suất tốt nhất bằng cách sử dụng tối đa tài nguyên phần cứng. Bảng và đồ thị sau đây tóm tắt kết quả mà chúng tôi thu được trong các thí nghiệm của mình.

Tên cấu hình Tối ưu hóa mô hình

Năng động

Hàng loạt

Cấu hình nhóm phiên bản Loại phiên bản vCPU GPU

Bộ nhớ GPU

(GB)

Số lượng phiên bản ban đầu[1] Lời mời mỗi phút mỗi trường hợp Độ trễ mô hình Chi phí mỗi giờ[2]
cơ sở pt NA Không NA ml.g4dn.xlarge 4 1 16 62 490 1500 45.6568
pt-db NA NA ml.g4dn.xlarge 4 1 16 57 529 1490 41.9748
pt-ig NA Không 2 ml.g4dn.xlarge 4 1 16 34 906 868 25.0376
pt-ig-db NA 2 ml.g4dn.xlarge 4 1 16 34 892 1158 25.0376
cơ sở trt TenorRT Không NA ml.g4dn.xlarge 4 1 16 47 643 742 34.6108
trt-db TenorRT NA ml.g4dn.xlarge 4 1 16 28 1078 814 20.6192
trt-ig TenorRT Không 2 ml.g4dn.xlarge 4 1 16 14 2202 1273 10.3096
trt-db-ig TenorRT 2 ml.g4dn.xlarge 4 1 16 10 3192 783 7.364
cơ sở pt NA Không NA ml.g4dn.2xlarge 8 1 32 56 544 1500 52.64
pt-db NA NA ml.g4dn.2xlarge 8 1 32 59 517 1500 55.46
pt-ig NA Không 2 ml.g4dn.2xlarge 8 1 32 29 1054 960 27.26
pt-ig-db NA 2 ml.g4dn.2xlarge 8 1 32 30 1017 992 28.2
cơ sở trt TenorRT Không NA ml.g4dn.2xlarge 8 1 32 42 718 1494 39.48
trt-db TenorRT NA ml.g4dn.2xlarge 8 1 32 23 1335 499 21.62
trt-ig TenorRT Không 2 ml.g4dn.2xlarge 8 1 32 23 1363 1017 21.62
trt-db-ig TenorRT 2 ml.g4dn.2xlarge 8 1 32 22 1369 963 20.68
cơ sở pt NA Không NA ml.g4dn.12xlarge 48 4 192 15 2138 906 73.35
pt-db NA NA ml.g4dn.12xlarge 48 4 192 15 2110 907 73.35
pt-ig NA Không 2 ml.g4dn.12xlarge 48 4 192 8 3862 651 39.12
pt-ig-db NA 2 ml.g4dn.12xlarge 48 4 192 8 3822 642 39.12
cơ sở trt TenorRT Không NA ml.g4dn.12xlarge 48 4 192 11 2892 279 53.79
trt-db TenorRT NA ml.g4dn.12xlarge 48 4 192 6 5356 278 29.34
trt-ig TenorRT Không 2 ml.g4dn.12xlarge 48 4 192 6 5210 328 29.34
trt-db-ig TenorRT 2 ml.g4dn.12xlarge 48 4 192 6 5235 439 29.34
[1] Số phiên bản ban đầu trong bảng trên là số phiên bản được khuyến nghị sử dụng với chính sách tự động phân tỷ lệ để duy trì các yêu cầu về thông lượng và độ trễ cho khối lượng công việc của bạn.
[2] Chi phí mỗi giờ trong bảng trên được tính dựa trên số lượng phiên bản ban đầu và giá cho loại phiên bản.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Các kết quả hầu hết xác thực tác động dự kiến ​​của các tính năng tối ưu hóa hiệu suất khác nhau:

  • Biên dịch TensorRT có tác động đáng tin cậy nhất trên tất cả các loại phiên bản. Giao dịch mỗi phút mỗi trường hợp tăng 30–35%, với mức giảm chi phí nhất quán khoảng 25% khi so sánh với hiệu suất của công cụ TensorRT với PyTorch BERT mặc định (pt-base). Hiệu suất gia tăng của động cơ TensorRT được kết hợp và khai thác bởi các tính năng điều chỉnh hiệu suất đã được thử nghiệm khác.
  • Tải hai mô hình trên mỗi GPU (nhóm phiên bản) gần như tăng gấp đôi nghiêm ngặt tất cả các chỉ số đo được. Số lần gọi mỗi phút mỗi trường hợp tăng khoảng 80–90%, giúp giảm chi phí trong phạm vi 50%, gần như thể chúng tôi đang sử dụng hai GPU. Trong thực tế, amazoncloudwatch chỉ số cho các thử nghiệm của chúng tôi trên g4dn.2xlarge (làm ví dụ) xác nhận rằng hiệu suất sử dụng cả CPU và GPU đều tăng gấp đôi khi chúng tôi định cấu hình một nhóm phiên bản gồm hai mô hình.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái. Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Các mẹo tối ưu hóa chi phí và hiệu suất khác

Điểm chuẩn được trình bày trong bài đăng này chỉ làm nổi bật bề mặt của các tính năng và kỹ thuật khả thi mà bạn có thể sử dụng với Triton để cải thiện hiệu suất suy luận. Những phạm vi này bao gồm từ các kỹ thuật xử lý trước dữ liệu, chẳng hạn như gửi tải trọng nhị phân đến máy chủ mô hình hoặc tải trọng với các lô lớn hơn, đến các tính năng Triton gốc, chẳng hạn như sau:

  • Khởi động mô hình, ngăn chặn các yêu cầu suy luận ban đầu, chậm bằng cách khởi tạo hoàn toàn mô hình trước khi nhận được yêu cầu suy luận đầu tiên.
  • Bộ nhớ đệm phản hồi, lưu trữ các yêu cầu lặp đi lặp lại.
  • Tổ hợp mô hình, cho phép bạn tạo một đường dẫn của một hoặc nhiều mô hình và kết nối các bộ căng đầu vào và đầu ra giữa các mô hình đó. Điều này mở ra khả năng thêm các bước tiền xử lý và hậu xử lý, hoặc thậm chí suy luận với các mô hình khác, vào quy trình xử lý cho mỗi yêu cầu.

Chúng tôi hy vọng sẽ kiểm tra và đánh giá các kỹ thuật và tính năng này trong một bài đăng trong tương lai, vì vậy hãy chú ý theo dõi!

Kết luận

Trong bài đăng này, chúng tôi đã khám phá một số tham số mà bạn có thể sử dụng để tối đa hóa hiệu suất của điểm cuối thời gian thực SageMaker của bạn để phục vụ các mô hình PyTorch BERT với Máy chủ suy luận Triton. Chúng tôi đã sử dụng SageMaker Inference Recommender để thực hiện các bài kiểm tra điểm chuẩn nhằm tinh chỉnh các thông số này. Các thông số này về bản chất liên quan đến việc tối ưu hóa mô hình dựa trên TensorRT, dẫn đến cải thiện gần như 50% thời gian phản hồi so với phiên bản không được tối ưu hóa. Ngoài ra, việc chạy các mô hình đồng thời và sử dụng loạt Triton động đã dẫn đến thông lượng tăng gần 70%. Việc tinh chỉnh các thông số này cũng dẫn đến giảm tổng chi phí suy luận.

Cách tốt nhất để tính ra các giá trị chính xác là thông qua thử nghiệm. Tuy nhiên, để bắt đầu xây dựng kiến ​​thức thực nghiệm về điều chỉnh và tối ưu hóa hiệu suất, bạn có thể quan sát sự kết hợp của các thông số liên quan đến Triton khác nhau và ảnh hưởng của chúng đến hiệu suất trên các mô hình ML và phiên bản SageMaker ML.

SageMaker cung cấp các công cụ để loại bỏ khối lượng nặng chưa phân biệt khỏi từng giai đoạn của vòng đời ML, do đó tạo điều kiện thuận lợi cho việc thử nghiệm và thăm dò nhanh chóng cần thiết để tối ưu hóa hoàn toàn việc triển khai mô hình của bạn.

Bạn có thể tìm thấy sổ ghi chép được sử dụng để kiểm tra tải và triển khai trên GitHub. Bạn có thể cập nhật cấu hình Triton và cài đặt Đề xuất suy luận của SageMaker để phù hợp nhất với trường hợp sử dụng của bạn nhằm đạt được khối lượng công việc suy luận hiệu quả về chi phí và hoạt động tốt nhất.


Về các tác giả

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Vikram Elango là Kiến trúc sư Giải pháp Chuyên gia về AI / ML tại Amazon Web Services, có trụ sở tại Virginia Hoa Kỳ. Vikram giúp khách hàng trong lĩnh vực tài chính và bảo hiểm có khả năng thiết kế, lãnh đạo tư tưởng để xây dựng và triển khai các ứng dụng học máy trên quy mô lớn. Anh ấy hiện đang tập trung vào xử lý ngôn ngữ tự nhiên, AI có trách nhiệm, tối ưu hóa suy luận và mở rộng ML trong toàn doanh nghiệp. Khi rảnh rỗi, anh ấy thích đi du lịch, đi bộ đường dài, nấu ăn và cắm trại cùng gia đình.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.João Moura là một Kiến trúc sư Giải pháp Chuyên gia về AI / ML tại Amazon Web Services. Ông chủ yếu tập trung vào các trường hợp sử dụng NLP và giúp khách hàng tối ưu hóa việc đào tạo và triển khai mô hình Deep Learning. Ông cũng là người tích cực đề xuất các giải pháp ML mã thấp và phần cứng chuyên dụng ML.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Mohan Gandhi là Kỹ sư phần mềm cao cấp tại AWS. Anh ấy đã làm việc với AWS trong 9 năm qua và đã làm việc trên các dịch vụ AWS khác nhau như EMR, EFA và RDS trên Outposts. Hiện tại, anh ấy đang tập trung vào việc cải thiện Trải nghiệm suy luận của SageMaker. Trong thời gian rảnh rỗi, anh ấy thích đi bộ đường dài và chạy marathon.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Dhawal Patel là một Kiến trúc sư chính về Học máy tại AWS. Ông đã làm việc với các tổ chức khác nhau, từ các doanh nghiệp lớn đến các công ty khởi nghiệp quy mô trung bình về các vấn đề liên quan đến máy tính phân tán và Trí tuệ nhân tạo. Ông tập trung vào Học sâu bao gồm các lĩnh vực NLP và Thị giác máy tính. Anh ấy giúp khách hàng đạt được khả năng suy luận mô hình hiệu suất cao trên SageMaker.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Santosh Bhavani là Giám đốc Sản phẩm Kỹ thuật Cấp cao của nhóm Amazon SageMaker Elastic Inference. Anh ấy tập trung vào việc giúp khách hàng của SageMaker đẩy nhanh quá trình suy luận và triển khai mô hình. Khi rảnh rỗi, anh ấy thích đi du lịch, chơi tennis và uống nhiều trà Pu'er.

Đạt được hiệu suất siêu quy mô để phân phát mô hình bằng cách sử dụng Máy chủ suy luận NVIDIA Triton trên Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái. Gia Hồng Lưu là Kiến trúc sư Giải pháp trong nhóm Nhà cung cấp Dịch vụ Đám mây tại NVIDIA. Anh ấy hỗ trợ khách hàng trong việc áp dụng học máy và các giải pháp AI tận dụng tính toán tăng tốc của NVIDIA để giải quyết các thách thức về đào tạo và suy luận của họ. Trong thời gian rảnh rỗi, anh ấy thích xếp giấy origami, các dự án tự làm và chơi bóng rổ.

Dấu thời gian:

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