Một trong những mô hình phổ biến nhất hiện nay là XGBoost. Với khả năng giải quyết các vấn đề khác nhau như phân loại và hồi quy, XGBoost đã trở thành một tùy chọn phổ biến cũng thuộc danh mục mô hình dựa trên cây. Trong bài đăng này, chúng tôi đi sâu để xem làm thế nào Amazon SageMaker có thể phục vụ các mô hình này bằng cách sử dụng Máy chủ suy luận NVIDIA Triton. Khối lượng công việc suy luận thời gian thực có thể có các mức yêu cầu và thỏa thuận mức dịch vụ (SLA) khác nhau về độ trễ và thông lượng, đồng thời có thể được đáp ứng bằng cách sử dụng các điểm cuối thời gian thực của SageMaker.
SageMaker cung cấp điểm cuối mô hình duy nhất, cho phép bạn triển khai một mô hình máy học (ML) duy nhất dựa trên một điểm cuối logic. Đối với các trường hợp sử dụng khác, bạn có thể chọn quản lý chi phí và hiệu suất bằng cách sử dụng điểm cuối đa mô hình, cho phép bạn chỉ định nhiều mô hình để lưu trữ sau một điểm cuối logic. Bất kể tùy chọn bạn chọn là gì, các điểm cuối SageMaker cho phép một cơ chế có thể mở rộng cho cả những khách hàng doanh nghiệp khó tính nhất đồng thời cung cấp giá trị trong rất nhiều tính năng, bao gồm biến thể bóng tối, tự động mở rộngvà tích hợp riêng với amazoncloudwatch (để biết thêm thông tin, tham khảo Số liệu CloudWatch cho việc triển khai điểm cuối nhiều mô hình).
Triton hỗ trợ nhiều chương trình phụ trợ khác nhau dưới dạng công cụ hỗ trợ chạy và cung cấp các mô hình ML khác nhau để suy luận. Đối với bất kỳ triển khai Triton nào, điều quan trọng là phải biết hành vi phụ trợ ảnh hưởng đến khối lượng công việc của bạn như thế nào và điều gì sẽ xảy ra để bạn có thể thành công. Trong bài viết này, chúng tôi giúp bạn hiểu được Thư viện suy luận rừng (FIL) phụ trợ, được hỗ trợ bởi Triton trên SageMaker, để bạn có thể đưa ra quyết định sáng suốt cho khối lượng công việc của mình và đạt được hiệu suất cũng như tối ưu hóa chi phí tốt nhất có thể.
Đi sâu vào chương trình phụ trợ FIL
Triton hỗ trợ FIL phụ trợ để phục vụ các mô hình cây, chẳng hạn như XGBoost, LightGBM, học hỏi Rừng ngẫu nhiên, Rừng ngẫu nhiên RAPIDS cuMLvà bất kỳ mô hình nào khác được hỗ trợ bởi Treelite. Những mô hình này từ lâu đã được sử dụng để giải quyết các vấn đề như phân loại hoặc hồi quy. Mặc dù các loại mô hình này có truyền thống chạy trên CPU, nhưng sự phổ biến của các mô hình này và nhu cầu suy luận đã dẫn đến nhiều kỹ thuật khác nhau để tăng hiệu suất suy luận. Chương trình phụ trợ FIL sử dụng nhiều kỹ thuật trong số này bằng cách sử dụng cấu trúc cuML và được xây dựng trên C++ và thư viện lõi CUDA để tối ưu hóa hiệu suất suy luận trên bộ tăng tốc GPU.
Chương trình phụ trợ FIL sử dụng các thư viện của cuML để sử dụng lõi CPU hoặc GPU nhằm tăng tốc quá trình học. Để sử dụng các bộ xử lý này, dữ liệu được tham chiếu từ bộ nhớ máy chủ (ví dụ: mảng NumPy) hoặc mảng GPU (uDF, Numba, cuPY hoặc bất kỳ thư viện nào hỗ trợ __cuda_array_interface__
) API. Sau khi dữ liệu được sắp xếp trong bộ nhớ, chương trình phụ trợ FIL có thể chạy quá trình xử lý trên tất cả các lõi CPU hoặc GPU có sẵn.
Các luồng phụ trợ FIL có thể giao tiếp với nhau mà không cần sử dụng bộ nhớ dùng chung của máy chủ, nhưng trong khối lượng công việc tập hợp, bộ nhớ máy chủ nên được xem xét. Sơ đồ sau đây cho thấy kiến trúc thời gian chạy bộ lập lịch đồng bộ trong đó bạn có khả năng tinh chỉnh các vùng bộ nhớ, bao gồm bộ nhớ dùng chung có thể định địa chỉ CPU được sử dụng để liên lạc giữa các quá trình giữa Triton (C++) và quy trình Python (phần phụ trợ của Python) để trao đổi tenxơ (đầu vào/đầu ra) với phụ trợ FIL.
Triton Inference Server cung cấp các tùy chọn có thể định cấu hình để các nhà phát triển điều chỉnh khối lượng công việc của họ và tối ưu hóa hiệu suất mô hình. Cấu hình dynamic_batching
cho phép Triton giữ các yêu cầu phía máy khách và bó chúng ở phía máy chủ để sử dụng hiệu quả tính toán song song của FIL để suy luận toàn bộ lô cùng nhau. tùy chọn max_queue_delay_microseconds
cung cấp khả năng kiểm soát không an toàn về thời gian Triton đợi để tạo thành một lô.
Có một số FIL cụ thể khác các tùy chọn có sẵn ảnh hưởng đến hiệu suất và hành vi. Chúng tôi đề nghị bắt đầu với storage_type
. Khi chạy chương trình phụ trợ trên GPU, FIL tạo cấu trúc dữ liệu/bộ nhớ mới đại diện cho cây mà FIL có thể tác động đến hiệu suất và dấu chân. Điều này có thể định cấu hình thông qua tham số môi trường storage_type
, có các tùy chọn dày đặc, thưa thớt và tự động. Việc chọn tùy chọn dày đặc sẽ tiêu tốn nhiều bộ nhớ GPU hơn và không phải lúc nào cũng mang lại hiệu suất tốt hơn, vì vậy tốt nhất bạn nên kiểm tra. Ngược lại, tùy chọn thưa thớt sẽ tiêu tốn ít bộ nhớ GPU hơn và có thể hoạt động tốt hoặc tốt hơn là dày đặc. Việc chọn tự động sẽ khiến mô hình mặc định trở nên dày đặc trừ khi làm như vậy sẽ tiêu tốn nhiều bộ nhớ GPU hơn đáng kể so với chọn thưa thớt.
Khi nói đến hiệu suất của mô hình, bạn có thể cân nhắc nhấn mạnh threads_per_tree
lựa chọn. Một điều mà bạn có thể phục vụ quá mức trong các tình huống trong thế giới thực là threads_per_tree
có thể có tác động lớn hơn đến thông lượng so với bất kỳ tham số nào khác. Đặt nó thành bất kỳ lũy thừa nào của 2 từ 1–32 là hợp pháp. Giá trị tối ưu khó dự đoán cho tham số này, nhưng khi máy chủ dự kiến xử lý tải cao hơn hoặc xử lý các kích thước lô lớn hơn, nó có xu hướng hưởng lợi từ giá trị lớn hơn so với khi xử lý một vài hàng mỗi lần.
Một tham số khác cần lưu ý là algo
, cũng khả dụng nếu bạn đang chạy trên GPU. Tham số này xác định thuật toán được sử dụng để xử lý các yêu cầu suy luận. Các tùy chọn được hỗ trợ cho việc này là ALGO_AUTO
, NAIVE
, TREE_REORG
và BATCH_TREE_REORG
. Các tùy chọn này xác định cách các nút trong cây được tổ chức và cũng có thể giúp tăng hiệu suất. Các ALGO_AUTO
tùy chọn mặc định thành NAIVE
để lưu trữ thưa thớt và BATCH_TREE_REORG
để lưu trữ dày đặc.
Cuối cùng, FIL đi kèm với trình giải thích Shapley, có thể được kích hoạt bằng cách sử dụng treeshap_output
tham số. Tuy nhiên, bạn nên nhớ rằng đầu ra Shapley ảnh hưởng đến hiệu suất do kích thước đầu ra của nó.
định dạng mô hình
Hiện tại không có định dạng tệp tiêu chuẩn để lưu trữ các mô hình dựa trên rừng; mọi khung có xu hướng xác định định dạng riêng của nó. Để hỗ trợ nhiều định dạng tệp đầu vào, FIL nhập dữ liệu bằng mã nguồn mở Treelite thư viện. Điều này cho phép FIL hỗ trợ các mô hình được đào tạo trong các khung phổ biến, chẳng hạn như XGBoost và ánh sángGBM. Lưu ý rằng định dạng của mô hình mà bạn đang cung cấp phải được đặt trong model_type
giá trị cấu hình được chỉ định trong config.pbtxt
tập tin.
Cấu hình.pbtxt
Mỗi mô hình trong một kho mô hình phải bao gồm cấu hình mô hình cung cấp thông tin bắt buộc và tùy chọn về mô hình. Thông thường, cấu hình này được cung cấp trong một config.pbtxt
tệp được chỉ định là nguyên mẫu ModelConfig. Để tìm hiểu thêm về cài đặt cấu hình, hãy tham khảo Cấu hình Mô hình. Sau đây là một số thông số cấu hình mô hình:
- kích thước tối đa_batch_size – Điều này xác định kích thước lô tối đa có thể được chuyển cho mô hình này. Nói chung, giới hạn duy nhất về kích thước của các lô được chuyển đến phần phụ trợ FIL là bộ nhớ khả dụng để xử lý chúng. Đối với các lần chạy GPU, bộ nhớ khả dụng được xác định bởi kích thước nhóm bộ nhớ CUDA của Triton, có thể được đặt thông qua đối số dòng lệnh khi khởi động máy chủ.
- đầu vào – Các tùy chọn trong phần này cho Triton biết số lượng tính năng mong đợi đối với mỗi mẫu đầu vào.
- đầu ra – Các tùy chọn trong phần này cho Triton biết sẽ có bao nhiêu giá trị đầu ra cho mỗi mẫu. Nếu
predict_proba
tùy chọn được đặt thành true, thì giá trị xác suất sẽ được trả về cho mỗi lớp. Nếu không, một giá trị duy nhất sẽ được trả về, cho biết lớp được dự đoán cho mẫu đã cho. - instance_group – Điều này xác định số lượng phiên bản của mô hình này sẽ được tạo và liệu chúng sẽ sử dụng GPU hay CPU.
- kiểu_kiểu – Chuỗi này cho biết mô hình đang ở định dạng nào (
xgboost_json
trong ví dụ này, nhưngxgboost
,lightgbm
vàtl_checkpoint
cũng là các định dạng hợp lệ). - dự đoán_proba – Nếu được đặt thành true, các giá trị xác suất sẽ được trả về cho mỗi lớp thay vì chỉ một dự đoán của lớp.
- đầu ra_class – Giá trị này được đặt thành đúng cho các mô hình phân loại và sai cho các mô hình hồi quy.
- ngưỡng – Đây là ngưỡng điểm để xác định xếp loại. Khi
output_class
được đặt thành true, điều này phải được cung cấp, mặc dù nó sẽ không được sử dụng nếupredict_proba
cũng được đặt thành đúng. - Loại lưu trữ – Nói chung, sử dụng AUTO cho cài đặt này sẽ đáp ứng hầu hết các trường hợp sử dụng. Nếu lưu trữ AUTO được chọn, FIL sẽ tải mô hình bằng cách sử dụng biểu diễn thưa thớt hoặc dày đặc dựa trên kích thước gần đúng của mô hình. Trong một số trường hợp, bạn có thể muốn đặt rõ ràng điều này thành SPARSE để giảm dung lượng bộ nhớ của các mô hình lớn.
Máy chủ suy luận Triton trên SageMaker
SageMaker cho phép bạn triển khai cả hai điểm cuối mô hình đơn và đa mô hình với Máy chủ suy luận NVIDIA Triton. Hình dưới đây cho thấy kiến trúc cấp cao của Triton Inference Server. Các kho mô hình là kho lưu trữ các mô hình dựa trên hệ thống tệp mà Triton sẽ cung cấp cho quá trình suy luận. Các yêu cầu suy luận đến máy chủ và được định tuyến đến bộ lập lịch theo mô hình thích hợp. nông cụ triton nhiều thuật toán lập lịch và theo đợt có thể được cấu hình trên cơ sở từng mô hình. Mỗi bộ lập lịch của mô hình tùy chọn thực hiện theo nhóm các yêu cầu suy luận và sau đó chuyển các yêu cầu tới phụ trợ tương ứng với loại mô hình. Chương trình phụ trợ thực hiện suy luận bằng cách sử dụng các đầu vào được cung cấp trong các yêu cầu theo đợt để tạo ra các đầu ra được yêu cầu. Các kết quả đầu ra sau đó được trả lại.
Khi định cấu hình các nhóm tự động thay đổi quy mô cho các điểm cuối SageMaker, bạn có thể cân nhắc SageMakerVariantInvocationsPerInstance
làm tiêu chí chính để xác định các đặc điểm chia tỷ lệ của nhóm chia tỷ lệ tự động của bạn. Ngoài ra, tùy thuộc vào việc mô hình của bạn đang chạy trên GPU hay CPU, bạn cũng có thể cân nhắc sử dụng CPUUtilization hoặc GPUUtilization làm tiêu chí bổ sung. Lưu ý rằng đối với các điểm cuối mô hình đơn lẻ, do các mô hình được triển khai đều giống nhau nên việc đặt các chính sách phù hợp để đáp ứng SLA của bạn khá đơn giản. Đối với các điểm cuối nhiều mô hình, chúng tôi khuyên bạn nên triển khai các mô hình tương tự đằng sau một điểm cuối nhất định để có hiệu suất ổn định hơn có thể dự đoán được. Trong các trường hợp sử dụng mà các mô hình có kích thước và yêu cầu khác nhau được sử dụng, bạn có thể muốn phân tách các khối lượng công việc đó trên nhiều điểm cuối đa mô hình hoặc dành thời gian tinh chỉnh chính sách nhóm tự động thay đổi quy mô của mình để có được sự cân bằng hiệu suất và chi phí tốt nhất.
Để biết danh sách NVIDIA Triton Deep Learning Containers (DLC) được hỗ trợ bởi suy luận SageMaker, hãy tham khảo Hình ảnh các thùng chứa Deep Learning có sẵn.
Hướng dẫn sổ tay SageMaker
Các ứng dụng ML rất phức tạp và thường có thể yêu cầu tiền xử lý dữ liệu. Trong sổ ghi chép này, chúng tôi đi sâu vào cách triển khai mô hình ML dựa trên cây như XGBoost bằng cách sử dụng phần phụ trợ FIL trong Triton trên điểm cuối đa mô hình SageMaker. Chúng tôi cũng đề cập đến cách triển khai quy trình suy luận tiền xử lý dữ liệu dựa trên Python cho mô hình của bạn bằng cách sử dụng tính năng tập hợp trong Triton. Điều này sẽ cho phép chúng tôi gửi dữ liệu thô từ phía máy khách và có cả quá trình tiền xử lý dữ liệu và suy luận mô hình xảy ra trong điểm cuối Triton SageMaker để có hiệu suất suy luận tối ưu.
Tính năng tập hợp mô hình Triton
Triton Inference Server giúp đơn giản hóa đáng kể việc triển khai các mô hình AI trên quy mô lớn trong sản xuất. Triton Inference Server đi kèm với một giải pháp thuận tiện giúp đơn giản hóa việc xây dựng các quy trình tiền xử lý và hậu xử lý. Nền tảng Máy chủ suy luận Triton cung cấp bộ lập lịch đồng bộ, chịu trách nhiệm sắp xếp các mô hình đường ống tham gia vào quy trình suy luận đồng thời đảm bảo hiệu quả và tối ưu hóa thông lượng. Việc sử dụng các mô hình tập hợp có thể tránh được chi phí chuyển các tenxơ trung gian và giảm thiểu số lượng yêu cầu phải gửi tới Triton.
Trong sổ ghi chép này, chúng tôi trình bày cách sử dụng tính năng tập hợp để xây dựng quy trình tiền xử lý dữ liệu với suy luận mô hình XGBoost và bạn có thể ngoại suy từ tính năng này để thêm xử lý hậu kỳ tùy chỉnh vào quy trình.
Thiết lập môi trường
Chúng tôi bắt đầu bằng cách thiết lập môi trường cần thiết. Chúng tôi cài đặt các phần phụ thuộc cần thiết để đóng gói đường dẫn mô hình của mình và chạy các suy luận bằng Máy chủ suy luận Triton. Chúng tôi cũng xác định các Quản lý truy cập và nhận dạng AWS (IAM) vai trò sẽ cấp cho SageMaker quyền truy cập vào các tạo phẩm mô hình và NVIDIA Triton Đăng ký container đàn hồi Amazon (Amazon ECR) hình ảnh. Xem đoạn mã sau:
Tạo môi trường Conda cho các phụ thuộc tiền xử lý
Chương trình phụ trợ Python trong Triton yêu cầu chúng tôi sử dụng Đếm môi trường cho bất kỳ phụ thuộc bổ sung. Trong trường hợp này, chúng tôi sử dụng chương trình phụ trợ Python để xử lý trước dữ liệu thô trước khi đưa nó vào mô hình XGBoost đang chạy trong chương trình phụ trợ FIL. Mặc dù ban đầu chúng tôi sử dụng RAPIDS cuDF và cuML để thực hiện tiền xử lý dữ liệu, ở đây chúng tôi sử dụng Pandas và scikit-learning làm phụ thuộc tiền xử lý trong quá trình suy luận. Chúng tôi làm điều này vì ba lý do:
- Chúng tôi trình bày cách tạo môi trường Conda cho các phần phụ thuộc của bạn và cách đóng gói nó trong định dạng dự kiến bởi chương trình phụ trợ Python của Triton.
- Bằng cách hiển thị mô hình tiền xử lý chạy trong chương trình phụ trợ Python trên CPU trong khi XGBoost chạy trên GPU trong chương trình phụ trợ FIL, chúng tôi minh họa cách mỗi mô hình trong quy trình kết hợp của Triton có thể chạy trên một chương trình phụ trợ khung khác nhau cũng như các cấu hình phần cứng khác nhau.
- Nó nêu bật cách các thư viện RAPIDS (cuDF, cuML) tương thích với các đối tác CPU của chúng (Pandas, scikit-learning). Ví dụ, chúng ta có thể chỉ ra cách
LabelEncoders
được tạo trong cuML có thể được sử dụng trong scikit-learning và ngược lại.
Chúng tôi làm theo hướng dẫn từ tài liệu triton để đóng gói các phụ thuộc tiền xử lý (scikit-learning và Pandas) để sử dụng trong phần phụ trợ Python dưới dạng tệp TAR môi trường Conda. kịch bản bash tạo_prep_env.sh tạo tệp TAR môi trường Conda, sau đó chúng tôi chuyển tệp đó vào thư mục mô hình tiền xử lý. Xem đoạn mã sau:
Sau khi chúng tôi chạy tập lệnh trước đó, nó sẽ tạo preprocessing_env.tar.gz
, mà chúng tôi sao chép vào thư mục tiền xử lý:
Thiết lập tiền xử lý với chương trình phụ trợ Triton Python
Để tiền xử lý, chúng tôi sử dụng Triton's Chương trình phụ trợ Python để thực hiện tiền xử lý dữ liệu dạng bảng (mã hóa phân loại) trong quá trình suy luận đối với các yêu cầu dữ liệu thô đến máy chủ. Để biết thêm thông tin về tiền xử lý đã được thực hiện trong quá trình đào tạo, hãy tham khảo sổ tay huấn luyện.
Chương trình phụ trợ Python cho phép tiền xử lý, hậu xử lý và bất kỳ logic tùy chỉnh nào khác được triển khai trong Python và được cung cấp cùng với Triton. Việc sử dụng Triton trên SageMaker trước tiên yêu cầu chúng tôi thiết lập thư mục kho lưu trữ mô hình chứa các mô hình mà chúng tôi muốn phân phối. Chúng tôi đã thiết lập một mô hình tiền xử lý dữ liệu Python được gọi là tiền xử lý trong cpu_model_repository
và gpu_model_repository
.
Triton có các yêu cầu cụ thể đối với việc bố trí kho lưu trữ mô hình. Trong thư mục lưu trữ mô hình cấp cao nhất, mỗi mô hình có thư mục con riêng chứa thông tin cho mô hình tương ứng. Mỗi thư mục mô hình trong Triton phải có ít nhất một thư mục con số đại diện cho một phiên bản của mô hình. Giá trị 1 đại diện cho phiên bản 1 của mô hình tiền xử lý Python của chúng tôi. Mỗi mô hình được chạy bởi một chương trình phụ trợ cụ thể, do đó, trong mỗi thư mục con phiên bản phải có tạo phẩm mô hình được yêu cầu bởi chương trình phụ trợ đó. Đối với ví dụ này, chúng tôi sử dụng chương trình phụ trợ Python, chương trình này yêu cầu tệp Python mà bạn đang phục vụ phải được gọi là model.py và tệp cần triển khai chức năng nhất định. Nếu chúng tôi đang sử dụng chương trình phụ trợ PyTorch, thì tệp model.pt sẽ được yêu cầu, v.v. Để biết thêm chi tiết về quy ước đặt tên cho các tệp mô hình, hãy tham khảo Tập tin mô hình.
Sản phẩm model.py Tệp Python mà chúng tôi sử dụng ở đây triển khai tất cả logic tiền xử lý dữ liệu dạng bảng để chuyển đổi dữ liệu thô thành các tính năng có thể được đưa vào mô hình XGBoost của chúng tôi.
Mỗi kiểu xe Triton cũng phải cung cấp một config.pbtxt
tập tin mô tả cấu hình mô hình. Để tìm hiểu thêm về cài đặt cấu hình, hãy tham khảo Cấu hình Mô hình. Của chúng tôi config.pbtxt tệp chỉ định phần phụ trợ là python và tất cả các cột đầu vào cho dữ liệu thô cùng với đầu ra được xử lý trước, bao gồm 15 tính năng. Chúng tôi cũng chỉ định rằng chúng tôi muốn chạy mô hình tiền xử lý Python này trên CPU. Xem đoạn mã sau:
Thiết lập mô hình ML dựa trên cây cho chương trình phụ trợ FIL
Tiếp theo, chúng tôi thiết lập thư mục mô hình cho mô hình ML dựa trên cây như XGBoost, mô hình này sẽ sử dụng phần phụ trợ FIL.
Bố cục dự kiến cho cpu_memory_repository
và gpu_memory_repository
tương tự như cái chúng tôi đã trình bày trước đó.
Ở đây, FIL
là tên của mô hình. Chúng ta có thể đặt cho nó một cái tên khác như xgboost
nếu chúng ta muốn. 1
là thư mục con phiên bản, chứa tạo phẩm mô hình. Trong trường hợp này, đó là xgboost.json
mô hình mà chúng tôi đã lưu. Hãy tạo bố cục dự kiến này:
Chúng ta cần có tập tin cấu hình config.pbtxt
mô tả cấu hình mô hình cho mô hình ML dựa trên cây để phần phụ trợ FIL trong Triton có thể hiểu cách phục vụ nó. Để biết thêm thông tin, hãy tham khảo tài liệu chung mới nhất Tùy chọn cấu hình Triton và các tùy chọn cấu hình dành riêng cho FIL phụ trợ. Chúng tôi chỉ tập trung vào một số tùy chọn phổ biến và có liên quan nhất trong ví dụ này.
Tạo config.pbtxt
cho model_cpu_repository
:
Tương tự, thiết lập config.pbtxt
cho model_gpu_repository
(lưu ý sự khác biệt là USE_GPU = True
):
Thiết lập một đường dẫn suy luận của phần phụ trợ Python tiền xử lý dữ liệu và phần phụ trợ FIL bằng cách sử dụng tập hợp
Bây giờ chúng ta đã sẵn sàng để thiết lập quy trình suy luận cho tiền xử lý dữ liệu và suy luận mô hình dựa trên cây bằng cách sử dụng người mẫu tập thể. Một mô hình tập hợp đại diện cho một đường ống của một hoặc nhiều mô hình và kết nối của các tenxơ đầu vào và đầu ra giữa các mô hình đó. Ở đây, chúng tôi sử dụng mô hình tập hợp để xây dựng một quy trình tiền xử lý dữ liệu trong phần phụ trợ Python, sau đó là XGBoost trong phần phụ trợ FIL.
Bố cục dự kiến cho ensemble
thư mục model tương tự như thư mục chúng tôi đã trình bày trước đây:
Chúng tôi đã tạo ra mô hình quần thể config.pbtxt theo hướng dẫn trong người mẫu tập thể. Điều quan trọng là chúng ta cần thiết lập bộ lập lịch đồng bộ trong config.pbtxt
, chỉ định luồng dữ liệu giữa các mô hình trong tập hợp. Bộ lập lịch tập hợp thu thập các tenxơ đầu ra trong mỗi bước và cung cấp chúng dưới dạng các tenxơ đầu vào cho các bước khác theo thông số kỹ thuật.
Đóng gói kho mô hình và tải lên Amazon S3
Cuối cùng, chúng tôi kết thúc với cấu trúc thư mục kho lưu trữ mô hình sau, chứa mô hình tiền xử lý Python và các phần phụ thuộc của nó cùng với mô hình XGBoost FIL và tập hợp mô hình.
Chúng tôi gói thư mục và nội dung của nó như model.tar.gz
để tải lên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Chúng tôi có hai tùy chọn trong ví dụ này: sử dụng phiên bản dựa trên CPU hoặc phiên bản dựa trên GPU. Phiên bản dựa trên GPU sẽ phù hợp hơn khi bạn cần sức mạnh xử lý cao hơn và muốn sử dụng lõi CUDA.
Tạo và tải lên gói mô hình cho phiên bản dựa trên CPU (được tối ưu hóa cho CPU) bằng mã sau:
Tạo và tải lên gói mô hình cho phiên bản dựa trên GPU (được tối ưu hóa cho GPU) bằng mã sau:
Tạo điểm cuối SageMaker
Bây giờ chúng ta có các thành phần tạo tác mô hình được lưu trữ trong vùng lưu trữ S3. Trong bước này, chúng tôi cũng có thể cung cấp biến môi trường bổ sung SAGEMAKER_TRITON_DEFAULT_MODEL_NAME
, chỉ định tên của mô hình sẽ được tải bởi Triton. Giá trị của khóa này phải khớp với tên thư mục trong gói mô hình được tải lên Amazon S3. Biến này là tùy chọn trong trường hợp một mô hình duy nhất. Trong trường hợp mô hình tập hợp, khóa này phải được chỉ định để Triton khởi động trong SageMaker.
Ngoài ra, bạn có thể đặt SAGEMAKER_TRITON_BUFFER_MANAGER_THREAD_COUNT
và SAGEMAKER_TRITON_THREAD_COUNT
để tối ưu hóa số lượng chủ đề.
Chúng tôi sử dụng mô hình trước để tạo cấu hình điểm cuối nơi chúng tôi có thể chỉ định loại và số lượng phiên bản chúng tôi muốn trong điểm cuối
Chúng tôi sử dụng cấu hình điểm cuối này để tạo điểm cuối SageMaker và đợi quá trình triển khai kết thúc. Với MME SageMaker, chúng tôi có tùy chọn lưu trữ nhiều mô hình tập hợp bằng cách lặp lại quy trình này, nhưng chúng tôi gắn bó với một triển khai cho ví dụ này:
Trạng thái sẽ thay đổi thành InService
khi triển khai thành công.
Gọi mô hình của bạn được lưu trữ trên điểm cuối SageMaker
Sau khi điểm cuối đang chạy, chúng tôi có thể sử dụng một số dữ liệu thô mẫu để thực hiện suy luận bằng cách sử dụng JSON làm định dạng tải trọng. Đối với định dạng yêu cầu suy luận, Triton sử dụng KFServing
tiêu chuẩn cộng đồng giao thức suy luận. Xem mã sau đây:
Sổ ghi chép được đề cập trong blog có thể được tìm thấy trong Kho GitHub.
Các phương pháp hay nhất
Ngoài các tùy chọn để tinh chỉnh cài đặt của phần phụ trợ FIL mà chúng tôi đã đề cập trước đó, các nhà khoa học dữ liệu cũng có thể đảm bảo rằng dữ liệu đầu vào cho phần phụ trợ được tối ưu hóa để công cụ xử lý. Bất cứ khi nào có thể, hãy nhập dữ liệu ở định dạng hàng chính vào mảng GPU. Các định dạng khác sẽ yêu cầu chuyển đổi nội bộ và chiếm các chu kỳ, làm giảm hiệu suất.
Do cách cấu trúc dữ liệu FIL được duy trì trong bộ nhớ GPU, hãy lưu ý đến độ sâu của cây. Độ sâu của cây càng sâu, dung lượng bộ nhớ GPU của bạn sẽ càng lớn.
Sử dụng instance_group_count
tham số để thêm các quy trình riêng lẻ và tăng thông lượng của phần phụ trợ FIL, điều này sẽ dẫn đến mức tiêu thụ bộ nhớ CPU và GPU lớn hơn. Ngoài ra, hãy xem xét các biến dành riêng cho SageMaker có sẵn để tăng thông lượng, chẳng hạn như luồng HTTP, kích thước bộ đệm HTTP, kích thước lô và độ trễ tối đa.
Kết luận
Trong bài đăng này, chúng tôi đi sâu vào phần phụ trợ FIL mà Máy chủ suy luận Triton hỗ trợ trên SageMaker. Chương trình phụ trợ này cung cấp khả năng tăng tốc cả CPU và GPU cho các mô hình dựa trên cây của bạn, chẳng hạn như thuật toán XGBoost phổ biến. Có nhiều tùy chọn cần xem xét để đạt được hiệu suất suy luận tốt nhất, chẳng hạn như kích thước lô, định dạng dữ liệu đầu vào và các yếu tố khác có thể được điều chỉnh để đáp ứng nhu cầu của bạn. SageMaker cho phép bạn sử dụng khả năng này với các điểm cuối đơn và đa mô hình để cân bằng giữa hiệu suất và tiết kiệm chi phí.
Chúng tôi khuyến khích bạn lấy thông tin trong bài đăng này và xem liệu SageMaker có thể đáp ứng nhu cầu lưu trữ của bạn để phục vụ các mô hình dựa trên cây, đáp ứng các yêu cầu của bạn về giảm chi phí và hiệu suất khối lượng công việc hay không.
Bạn có thể tìm thấy sổ ghi chép được tham chiếu trong bài đăng này trong các ví dụ về SageMaker Kho GitHub. Hơn nữa, bạn có thể tìm tài liệu mới nhất về chương trình phụ trợ FIL trên GitHub.
Về các tác giả
Raghu Ramesha là Kiến trúc sư giải pháp ML cấp cao 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à di 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ề các lĩnh vực máy học, trí tuệ nhân tạo và thị giác máy tính, đồng thời có bằng thạc sĩ về Khoa học Máy tính tại UT Dallas. Trong thời gian rảnh rỗi, anh ấy thích đi du lịch và chụp ảnh.
Công viên James là Kiến trúc sư giải pháp tại Amazon Web Services. Anh ấy làm việc với Amazon.com để thiết kế, xây dựng và triển khai các giải pháp công nghệ trên AWS và đặc biệt quan tâm đến AI và học máy. Khi rảnh rỗi, anh ấy thích tìm kiếm những nền văn hóa mới, trải nghiệm mới và cập nhật những xu hướng công nghệ mới nhất.
Dhawal Patel là 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ô vừa về các vấn đề liên quan đến điện toán phân tán và trí tuệ nhân tạo. Anh ấy tập trung vào học sâu, bao gồm NLP và lĩnh vực thị giác máy tính. Anh ấy giúp khách hàng đạt được suy luận mô hình hiệu suất cao trên Amazon SageMaker.
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ổ.
Kshitiz Gupta là Kiến trúc sư Giải pháp tại NVIDIA. Anh ấy thích giáo dục khách hàng đám mây về các công nghệ GPU AI mà NVIDIA cung cấp và hỗ trợ họ tăng tốc các ứng dụng học máy và học sâu. Ngoài công việc, anh ấy thích chạy, đi bộ đường dài và ngắm động vật hoang dã.
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoAiStream. Thông minh dữ liệu Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Đúc kết tương lai với Adryenn Ashley. Truy cập Tại đây.
- nguồn: https://aws.amazon.com/blogs/machine-learning/hosting-ml-models-on-amazon-sagemaker-using-triton-xgboost-lightgbm-and-treelite-models/
- : có
- :là
- :không phải
- :Ở đâu
- $ LÊN
- 1
- 100
- 11
- 13
- 200
- 23
- 24
- 7
- 8
- 9
- a
- có khả năng
- Giới thiệu
- đẩy nhanh tiến độ
- tăng tốc
- tăng tốc
- máy gia tốc
- truy cập
- Theo
- cho phù hợp
- Tài khoản
- Đạt được
- ngang qua
- thêm vào
- Ngoài ra
- thêm vào
- địa chỉ
- có thể giải quyết
- Nhận nuôi
- Sau
- chống lại
- thỏa thuận
- AI
- thuật toán
- Tất cả
- sự phân bổ
- cho phép
- cho phép
- dọc theo
- Đã
- Ngoài ra
- Mặc dù
- luôn luôn
- đàn bà gan dạ
- Amazon SageMaker
- Amazon Web Services
- Amazon.com
- số lượng
- an
- và
- bất kì
- api
- các ứng dụng
- thích hợp
- kiến trúc
- LÀ
- khu vực
- đối số
- Mảng
- nhân tạo
- trí tuệ nhân tạo
- AS
- hỗ trợ
- At
- tự động
- có sẵn
- tránh
- AWS
- Backend
- Cân đối
- dựa
- bash
- cơ sở
- Bóng rổ
- BE
- bởi vì
- trở nên
- được
- trước
- bắt đầu
- sau
- phía dưới
- hưởng lợi
- BEST
- Hơn
- giữa
- lớn hơn
- Blog
- thân hình
- cả hai
- đệm
- xây dựng
- Xây dựng
- xây dựng
- nhưng
- by
- C + +
- gọi là
- CAN
- thẻ
- trường hợp
- trường hợp
- Phân loại
- Nguyên nhân
- thách thức
- thay đổi
- đặc điểm
- kiểm tra
- Chip
- Chọn
- lựa chọn
- City
- tốt nghiệp lớp XNUMX
- phân loại
- khách hàng
- khách hàng
- đám mây
- mã
- Cột
- COM
- đến
- đến
- Chung
- giao tiếp
- Giao tiếp
- cộng đồng
- tương thích
- phức tạp
- tính toán
- máy tính
- Khoa học Máy tính
- Tầm nhìn máy tính
- máy tính
- Cấu hình
- liên quan
- Hãy xem xét
- xem xét
- ăn
- tiêu thụ
- Container
- Container
- chứa
- nội dung
- Ngược lại
- điều khiển
- Tiện lợi
- Chuyển đổi
- chuyển đổi
- Trung tâm
- Tương ứng
- Phí Tổn
- giảm chi phí
- tiết kiệm chi phí
- che
- tạo
- tạo ra
- tạo ra
- tiêu chuẩn
- quan trọng
- Hiện nay
- khách hàng
- khách hàng
- chu kỳ
- Dallas
- dữ liệu
- Ngày
- ngày
- nhiều
- quyết định
- sâu
- học kĩ càng
- sâu sắc hơn
- Mặc định
- mặc định
- Bằng cấp
- chậm trễ
- yêu cầu
- nhu cầu
- Tùy
- triển khai
- triển khai
- triển khai
- triển khai
- chiều sâu
- Thiết kế
- chi tiết
- Xác định
- xác định
- xác định
- xác định
- phát triển
- sự khác biệt
- khác nhau
- phân phối
- phân phối máy tính
- Tự làm
- do
- tài liệu hướng dẫn
- Không
- làm
- lĩnh vực
- thực hiện
- chim bồ câu
- hai
- suốt trong
- mỗi
- Sớm hơn
- giáo dục
- hiệu quả
- hiệu quả
- hay
- nhấn mạnh
- cho phép
- khuyến khích
- cuối
- Điểm cuối
- Động cơ
- Động cơ
- đảm bảo
- đảm bảo
- Doanh nghiệp
- doanh nghiệp
- Toàn bộ
- Môi trường
- lỗi
- Ngay cả
- Mỗi
- ví dụ
- ví dụ
- trao đổi
- mong đợi
- dự kiến
- Kinh nghiệm
- xuất khẩu
- các yếu tố
- khá
- Ngã
- sai
- Đặc tính
- Tính năng
- Fed
- cho ăn
- vài
- Hình
- Tập tin
- Các tập tin
- Tìm kiếm
- hoàn thành
- Tên
- dòng chảy
- Tập trung
- tập trung
- theo
- sau
- tiếp theo
- Dấu chân
- Trong
- hình thức
- định dạng
- tìm thấy
- Khung
- khung
- gian lận
- Miễn phí
- từ
- Hơn nữa
- thu nhập
- Tổng Quát
- tạo
- được
- Cho
- được
- GPU
- rất nhiều
- Nhóm
- Các nhóm
- hướng dẫn
- xảy ra
- Cứng
- phần cứng
- Có
- he
- giúp đỡ
- giúp đỡ
- giúp
- tại đây
- cấp độ cao
- hiệu suất cao
- cao hơn
- nổi bật
- của mình
- tổ chức
- giữ
- chủ nhà
- tổ chức
- lưu trữ
- Độ đáng tin của
- Hướng dẫn
- Tuy nhiên
- HTML
- http
- HTTPS
- Đau
- Bản sắc
- id
- IDX
- if
- hình ảnh
- Va chạm
- Tác động
- thực hiện
- thực hiện
- thực hiện
- nhập khẩu
- in
- bao gồm
- Bao gồm
- Tăng lên
- chỉ
- thông tin
- thông báo
- đầu vào
- cài đặt, dựng lên
- ví dụ
- hướng dẫn
- hội nhập
- Sự thông minh
- quan tâm
- nội bộ
- trong
- IT
- ITS
- jpg
- json
- chỉ
- Giữ
- Key
- Loại
- Biết
- lớn
- Doanh nghiệp lớn
- lớn hơn
- Độ trễ
- mới nhất
- Bố trí
- LEARN
- học tập
- ít nhất
- Led
- hợp pháp
- ít
- Cấp
- niveaux
- Tỉ lệ đòn bẩy
- thư viện
- Thư viện
- Lượt thích
- LIMIT
- Dòng
- Danh sách
- tải
- logic
- hợp lý
- dài
- máy
- học máy
- làm cho
- quản lý
- nhiều
- thạc sĩ
- Trận đấu
- tối đa
- tối đa
- Có thể..
- cơ chế
- Gặp gỡ
- cuộc họp
- Bộ nhớ
- đề cập
- Merchant
- Metrics
- Might
- di chuyển
- tâm
- ML
- Chế độ
- kiểu mẫu
- mô hình
- tháng
- chi tiết
- hầu hết
- Phổ biến nhất
- di chuyển
- Điểm cuối đa mô hình
- nhiều
- phải
- tên
- đặt tên
- tự nhiên
- Cần
- nhu cầu
- Mới
- nlp
- Không
- các nút
- máy tính xách tay
- tại
- con số
- cục mịch
- Nvidia
- được
- of
- cung cấp
- Cung cấp
- thường
- on
- ONE
- những
- có thể
- mã nguồn mở
- tối ưu
- tối ưu hóa
- Tối ưu hóa
- tối ưu hóa
- tối ưu hóa
- Tùy chọn
- Các lựa chọn
- or
- gọi món
- tổ chức
- Tổ chức
- ban đầu
- OS
- Nền tảng khác
- nếu không thì
- vfoXNUMXfipXNUMXhfpiXNUMXufhpiXNUMXuf
- ra
- đầu ra
- bên ngoài
- riêng
- gói
- bao bì
- gấu trúc
- Song song
- tham số
- thông số
- tham gia
- riêng
- thông qua
- vượt qua
- con đường
- Thực hiện
- hiệu suất
- thực hiện
- cho phép
- nhiếp ảnh
- đường ống dẫn
- nền tảng
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- chơi
- xin vui lòng
- quá nhiều
- Chính sách
- điều luật
- hồ bơi
- Phổ biến
- phổ biến
- có thể
- có thể
- Bài đăng
- quyền lực
- dự đoán
- Dự đoán
- dự đoán
- dự đoán
- Dự đoán
- trước đây
- chính
- Hiệu trưởng
- vấn đề
- quá trình
- Quy trình
- xử lý
- Sức mạnh xử lý
- bộ vi xử lý
- sản xuất
- Sản lượng
- dự án
- đúng
- Proto
- cho
- cung cấp
- nhà cung cấp dịch vụ
- cung cấp
- cung cấp
- Python
- ngọn đuốc
- ngẫu nhiên
- khác nhau,
- hơn
- Nguyên
- sẵn sàng
- thế giới thực
- thời gian thực
- lý do
- giới thiệu
- giảm
- gọi
- Bất kể
- khu
- liên quan
- có liên quan
- thay thế
- kho
- đại diện
- đại diện
- đại diện cho
- yêu cầu
- yêu cầu
- yêu cầu
- cần phải
- Yêu cầu
- đòi hỏi
- phản ứng
- chịu trách nhiệm
- kết quả
- Kết quả
- Vai trò
- chạy
- chạy
- s
- nhà làm hiền triết
- Suy luận của SageMaker
- tương tự
- Tiết kiệm
- khả năng mở rộng
- Quy mô
- mở rộng quy mô
- kịch bản
- lập kế hoạch
- Khoa học
- các nhà khoa học
- học hỏi
- Điểm số
- Phần
- xem
- tìm kiếm
- chọn
- gửi
- cao cấp
- riêng biệt
- phục vụ
- dịch vụ
- Nhà cung cấp dịch vụ
- DỊCH VỤ
- phục vụ
- định
- thiết lập
- thiết lập
- Hình dạng
- chia sẻ
- nên
- hiển thị
- Chương trình
- bên
- đáng kể
- tương tự
- Đơn giản
- duy nhất
- Kích thước máy
- kích thước
- So
- giải pháp
- Giải pháp
- động SOLVE
- Giải quyết
- một số
- nguồn
- chuyên
- riêng
- đặc điểm kỹ thuật
- quy định
- tiêu
- Tiêu chuẩn
- Bắt đầu
- Bắt đầu
- Startups
- Tiểu bang
- Trạng thái
- vững chắc
- Bước
- Các bước
- là gắn
- hàng
- lưu trữ
- đơn giản
- Chuỗi
- cấu trúc
- thành công
- như vậy
- đề nghị
- phù hợp
- hỗ trợ
- Hỗ trợ
- Hỗ trợ
- Hãy
- nhóm
- kỹ thuật
- Công nghệ
- Công nghệ
- nói
- về
- hơn
- việc này
- Sản phẩm
- thông tin
- cung cấp their dịch
- Them
- sau đó
- Đó
- Kia là
- họ
- điều
- điều này
- những
- Tuy nhiên?
- số ba
- ngưỡng
- thông lượng
- thời gian
- đến
- bây giờ
- bên nhau
- cấp cao nhất
- theo truyền thống
- đào tạo
- Hội thảo
- Chuyển nhượng
- Đi du lịch
- cây
- Xu hướng
- Triton
- đúng
- hai
- kiểu
- loại
- thường
- hiểu
- tải lên
- Đang tải lên
- us
- sử dụng
- đã sử dụng
- người sử dang
- sử dụng
- sử dụng
- Bằng cách sử dụng
- giá trị
- Các giá trị
- khác nhau
- phiên bản
- thông qua
- tầm nhìn
- W
- chờ đợi
- muốn
- là
- xem
- Đường..
- we
- web
- các dịch vụ web
- TỐT
- là
- Điều gì
- khi nào
- bất cứ khi nào
- liệu
- cái nào
- trong khi
- sẽ
- với
- ở trong
- không có
- Công việc
- làm việc
- công nhân
- công trinh
- sẽ
- XGBoost
- năm
- Bạn
- trên màn hình
- zephyrnet
- Zip