Giảm thời gian triển khai các mô hình của bạn lên Amazon SageMaker để thử nghiệm PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Giảm thời gian triển khai mô hình của bạn lên Amazon SageMaker để thử nghiệm

Các nhà khoa học dữ liệu thường đào tạo mô hình của họ tại địa phương và tìm kiếm dịch vụ lưu trữ phù hợp để triển khai mô hình của họ. Thật không may, không có cơ chế hoặc hướng dẫn cụ thể nào để triển khai các mô hình được đào tạo trước lên đám mây. Trong bài đăng này, chúng tôi xem xét việc triển khai các mô hình đã được đào tạo để Amazon SageMaker hosting để giảm thời gian triển khai của bạn.

SageMaker là dịch vụ máy học (ML) được quản lý hoàn toàn. Với SageMaker, bạn có thể nhanh chóng xây dựng và huấn luyện các mô hình ML cũng như triển khai trực tiếp chúng vào môi trường lưu trữ sẵn sàng cho sản xuất. Ngoài ra, bạn không cần quản lý máy chủ. Bạn có được môi trường sổ ghi chép Jupyter tích hợp với khả năng truy cập dễ dàng vào nguồn dữ liệu của mình. Bạn có thể thực hiện phân tích dữ liệu, huấn luyện mô hình và kiểm tra chúng bằng thuật toán của riêng bạn hoặc sử dụng thuật toán ML do SageMaker cung cấp được tối ưu hóa để chạy hiệu quả trên các tập dữ liệu lớn trải rộng trên nhiều máy. Việc đào tạo và lưu trữ được tính phí theo số phút sử dụng, không có mức phí tối thiểu và không có cam kết trả trước.

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

Các nhà khoa học dữ liệu đôi khi đào tạo các mô hình cục bộ bằng IDE của họ và gửi các mô hình đó cho nhóm kỹ thuật ML để triển khai hoặc chỉ chạy dự đoán cục bộ trên các máy mạnh mẽ. Trong bài đăng này, chúng tôi giới thiệu thư viện Python giúp đơn giản hóa quá trình triển khai mô hình lên SageMaker cho lưu trữ trên các điểm cuối thời gian thực hoặc không có máy chủ.

Thư viện Python này cung cấp cho các nhà khoa học dữ liệu một giao diện đơn giản để nhanh chóng bắt đầu sử dụng SageMaker mà không cần biết bất kỳ chức năng SageMaker cấp thấp nào.

Nếu bạn có các mô hình được đào tạo cục bộ bằng IDE ưa thích và muốn hưởng lợi từ quy mô của đám mây, bạn có thể sử dụng thư viện này để triển khai mô hình của mình lên SageMaker. Với SageMaker, ngoài tất cả các lợi ích mở rộng của nền tảng ML dựa trên đám mây, bạn còn có quyền truy cập vào các công cụ đào tạo được xây dựng có mục đích (đào tạo phân tán, điều chỉnh siêu tham số), quản lý thử nghiệm, quản lý mô hình, phát hiện sai lệch, khả năng giải thích mô hình và nhiều công cụ khác các khả năng có thể giúp bạn trong bất kỳ khía cạnh nào của vòng đời ML. Bạn có thể chọn từ ba khung phổ biến nhất cho ML: Scikit-learn, PyTorch và TensorFlow, đồng thời có thể chọn loại tính toán mà bạn muốn. Các giá trị mặc định được cung cấp trong quá trình thực hiện để người dùng thư viện này có thể triển khai mô hình của họ mà không cần đưa ra quyết định phức tạp hoặc tìm hiểu các khái niệm mới. Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn cách bắt đầu với thư viện này và tối ưu hóa việc triển khai các mô hình ML của bạn trên dịch vụ lưu trữ SageMaker.

Thư viện có thể được tìm thấy trong Kho GitHub.

Bộ công cụ di chuyển SageMaker

Sản phẩm SageMakerMigration lớp có sẵn thông qua thư viện Python được xuất bản lên GitHub. Hướng dẫn cài đặt thư viện này được cung cấp trong kho; hãy đảm bảo rằng bạn tuân theo README để thiết lập đúng môi trường của mình. Sau khi bạn cài đặt thư viện này, phần còn lại của bài đăng này sẽ nói về cách bạn có thể sử dụng nó.

Sản phẩm SageMakerMigration lớp bao gồm các tóm tắt cấp cao trên API SageMaker giúp giảm đáng kể các bước cần thiết để triển khai mô hình của bạn lên SageMaker, như được minh họa trong hình sau. Tính năng này nhằm mục đích thử nghiệm để các nhà phát triển có thể nhanh chóng bắt đầu và thử nghiệm SageMaker. Nó không dành cho việc di chuyển sản xuất.

Đối với các mô hình Scikit-learn, PyTorch và TensorFlow, thư viện này hỗ trợ triển khai các mô hình đã được đào tạo tới điểm cuối thời gian thực của SageMaker hoặc điểm cuối không có máy chủ. Để tìm hiểu thêm về các tùy chọn suy luận trong SageMaker, hãy tham khảo Triển khai các mô hình để suy luận.

Điểm cuối thời gian thực và điểm cuối không có máy chủ

Suy luận thời gian thực lý tưởng cho khối lượng công việc suy luận mà bạn có yêu cầu về thời gian thực, tính tương tác và độ trễ thấp. Bạn có thể triển khai mô hình của mình lên các dịch vụ lưu trữ SageMaker và nhận điểm cuối có thể dùng để suy luận. Các điểm cuối này được quản lý hoàn toàn và hỗ trợ tự động mở rộng quy mô.

SageMaker Serverless Inference 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 quy mô mô hình ML. Suy luận không có máy chủ lý tưởng cho khối lượng công việc có khoảng thời gian nhàn rỗi giữa các lần lưu lượng truy cập tăng vọt và có thể chịu được khởi động nguội. Các điểm cuối không có máy chủ tự động khởi chạy các tài nguyên điện toán và mở rộng quy mô chúng tùy thuộc vào lưu lượng truy cập, loại bỏ nhu cầu chọn loại phiên bản hoặc quản lý chính sách mở rộng quy mô. Điều này giúp loại bỏ gánh nặng không phân biệt được trong việc lựa chọn và quản lý máy chủ.

Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể muốn nhanh chóng lưu trữ mô hình của mình trên SageMaker mà không thực sự phải luôn bật phiên bản và phát sinh chi phí, trong trường hợp đó, điểm cuối không có máy chủ là một giải pháp tuyệt vời.

Chuẩn bị mô hình đã đào tạo và kịch bản suy luận của bạn

Sau khi xác định được mô hình bạn muốn triển khai trên SageMaker, bạn phải đảm bảo mô hình đó được hiển thị cho SageMaker ở định dạng phù hợp. Điểm cuối SageMaker thường bao gồm hai thành phần: tạo phẩm mô hình được đào tạo (.pth, .pkl, v.v.) và tập lệnh suy luận. Tập lệnh suy luận không phải lúc nào cũng bắt buộc nhưng nếu không được cung cấp thì các trình xử lý mặc định cho vùng chứa phân phối mà bạn đang sử dụng sẽ được áp dụng. Điều cần thiết là phải cung cấp tập lệnh này nếu bạn cần tùy chỉnh chức năng đầu vào/đầu ra của mình để suy luận.

Tạo phẩm mô hình được đào tạo chỉ đơn giản là mô hình Scikit-learn, PyTorch hoặc TensorFlow đã lưu. Đối với Scikit-learn, đây thường là tệp dưa chua, đối với PyTorch, đây là tệp .pt hoặc .pth và đối với TensorFlow, đây thường là thư mục chứa nội dung, tệp .pb và các biến khác.

Nói chung, bạn cần có khả năng kiểm soát cách mô hình của bạn xử lý đầu vào và thực hiện suy luận cũng như kiểm soát định dạng đầu ra cho phản hồi của bạn. Với SageMaker, bạn có thể cung cấp kịch bản suy luận để thêm tùy chỉnh này. Bất kỳ tập lệnh suy luận nào được SageMaker sử dụng đều phải có một hoặc nhiều trong số bốn hàm xử lý sau: model_fn, input_fn, predict_fnoutput_fn.

Lưu ý rằng bốn chức năng này áp dụng cho Kim tự thápHọc hỏi container nói riêng. TensorFlow có các trình xử lý hơi khác một chút vì nó được tích hợp với TensorFlow phục vụ. Đối với tập lệnh suy luận với TensorFlow, bạn có hai xử lý mô hình: input_handler và out_handler. Một lần nữa, chúng có cùng mục đích tiền xử lý và hậu xử lý mà bạn có thể làm việc nhưng chúng được cấu hình hơi khác một chút để tích hợp với TensorFlow phục vụ. Đối với các mô hình PyTorch, model_fn là hàm bắt buộc phải có trong tập lệnh suy luận.

người mẫu_fn

Đây là hàm được gọi đầu tiên khi bạn gọi điểm cuối SageMaker của mình. Đây là nơi bạn viết mã để tải mô hình. Ví dụ:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

Tùy thuộc vào framework và loại mô hình, mã này có thể thay đổi nhưng hàm phải trả về mô hình được khởi tạo.

đầu vào_fn

Đây là hàm thứ hai được gọi khi điểm cuối của bạn được gọi. Hàm này lấy dữ liệu được gửi đến điểm cuối để suy luận và phân tích dữ liệu đó thành định dạng cần thiết để mô hình tạo dự đoán. Ví dụ:

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

Sản phẩm request_body chứa dữ liệu được sử dụng để tạo suy luận từ mô hình và được phân tích cú pháp trong hàm này để nó ở định dạng được yêu cầu.

dự đoán_fn

Đây là hàm thứ ba được gọi khi mô hình của bạn được gọi. Hàm này lấy dữ liệu đầu vào được xử lý trước được trả về từ input_fn và sử dụng mô hình được trả về từ model_fn để đưa ra dự đoán. Ví dụ:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

Bạn có thể tùy ý thêm output_fn để phân tích đầu ra của predict_fn trước khi trả lại cho khách hàng. Chữ ký hàm là def output_fn(prediction, content_type).

Di chuyển mô hình được đào tạo trước của bạn sang SageMaker

Sau khi có tệp mô hình đã huấn luyện và tập lệnh suy luận, bạn phải đặt các tệp này vào một thư mục như sau:

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

Sau khi mô hình và tập lệnh suy luận của bạn đã được chuẩn bị và lưu trong cấu trúc thư mục này, mô hình của bạn đã sẵn sàng để triển khai trên SageMaker. Xem đoạn mã sau:

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

Sau khi triển khai điểm cuối của bạn, hãy đảm bảo dọn sạch mọi tài nguyên bạn sẽ không sử dụng thông qua bảng điều khiển SageMaker hoặc thông qua xóa_endpoint Lệnh gọi API Boto3.

Kết luận

Mục tiêu của dự án Bộ công cụ di chuyển SageMaker là giúp các nhà khoa học dữ liệu dễ dàng đưa mô hình của họ vào SageMaker để tận dụng khả năng suy luận dựa trên đám mây. Kho lưu trữ sẽ tiếp tục phát triển và hỗ trợ nhiều tùy chọn hơn để di chuyển khối lượng công việc sang SageMaker. Mã này là nguồn mở và chúng tôi hoan nghênh sự đóng góp của cộng đồng thông qua các yêu cầu và vấn đề kéo.

Kiểm tra các Kho GitHub để khám phá thêm về cách sử dụng Bộ công cụ di chuyển SageMaker và thoải mái đóng góp các ví dụ hoặc yêu cầu tính năng để thêm vào dự án!


Giới thiệu về tác giả

Giảm thời gian triển khai các mô hình của bạn lên Amazon SageMaker để thử nghiệm PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Kirit Thadaka là Kiến trúc sư giải pháp ML làm việc trong nhóm Amazon SageMaker Service SA. Trước khi gia nhập AWS, Kirit đã dành thời gian làm việc tại các công ty khởi nghiệp AI giai đoạn đầu, sau đó là một thời gian tư vấn ở nhiều vai trò khác nhau trong nghiên cứu AI, MLOps và lãnh đạo kỹ thuật.

Giảm thời gian triển khai các mô hình của bạn lên Amazon SageMaker để thử nghiệm PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Ram Vegiraju là một Kiến trúc sư ML với nhóm Dịch vụ SageMaker. Anh ấy tập trung vào việc giúp khách hàng xây dựng và tối ưu hóa các giải pháp AI / ML của họ trên Amazon SageMaker. Trong thời gian rảnh rỗi, anh ấy thích đi du lịch và viết lách.

Dấu thời gian:

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