Đào tạo và triển khai các mô hình máy với Amazon SageMaker Autopilot

cloudFun

Ra mắt tại AWS re: Invent 2019, Amazon SageMaker Autopilot đơn giản hóa quá trình đào tạo các mô hình học máy (machine learning) trong khi cung cấp cơ hội khám phá dữ liệu và thử các thuật toán khác nhau. Nó là một nền tảng AutoML với sự khác biệt là có thể tải xuống ghi chép khám phá dữ liệu và ứng viên cung cấp cái nhìn sâu sắc về việc chuẩn bị dữ liệu, kỹ thuật tính năng, đào tạo mô hình và điều chỉnh siêu tham số.

9ff9adb4-sage-1507499_640 (1).jpg


Bài viết này sẽ hướng dẫn các bước liên quan đến việc đào tạo một mô hình dựa trên phân loại nhị phân từ SageMaker Studio IDE.

Thiết lập môi trường
Nếu có tài khoản AWS đang hoạt động, hãy làm theo quy trình onboarding của SageMaker Studio được đề cập trong tài liệu. Điều này tạo ra IAM Role mới với các quyền thích hợp để truy cập các nhóm S3 và môi trường SageMaker.
Khi SageMaker Studio sẵn sàng, có thể truy cập IDE để bắt đầu thử nghiệm.
Từ IDE, tạo một notebook tên là gain.pynb. Notebook này sẽ được dùng để thu thập và phân chia tập dữ liệu.
3421edde-sm-ap-0-1024x780.png

Bắt đầu bằng cách khởi tạo môi trường bằng cách nhập các module và nhận nhóm S3 mặc định được sử dụng bởi SageMaker Studio.
Mã:
import sagemaker
import boto3
import pandas as pd
from sagemaker import get_execution_role
 
region = boto3.Session().region_name
 
session = sagemaker.Session()
bucket = session.default_bucket()
print(bucket)
prefix = 'sagemaker/termdepo'
 
role = get_execution_role()
 
sm = boto3.Session().client(service_name='sagemaker',region_name=region)
Hãy bắt đầu bằng cách tải xuống bộ dữ liệu tiếp thị ngân hàng từ Datahub.io chứa dữ liệu lịch sử của khách hàng về các quyết định mua tiền gửi có kỳ hạn mới.
Hãy khám phá lược đồ của bộ dữ liệu được giải thích tại Datahub. Cột cuối cùng (Class) có giá trị 1 hoặc 2 trong đó 1 đại diện cho không và 2 đại diện cho có.
Mục tiêu là đào tạo một mô hình có thể dự đoán các quyết định của khách hàng dựa trên dữ liệu lịch sử.
Mã:
!wget -N https://datahub.io/machine-learning/bank-marketing/r/bank-marketing.csv
local_data_path = 'bank-marketing.csv'
Bây giờ dữ liệu sẽ được phân chia thành đào tạo (80%) và thử nghiệm (20%). Đối với tập dữ liệu thử nghiệm, label (Class) sẽ được xóa vì nó sẽ được sử dụng để suy luận.
Mã:
data = pd.read_csv(local_data_path)
train_data = data.sample(frac=0.8,random_state=200)
test_data = data.drop(train_data.index)
test_data = test_data.drop(columns=['Class'])
Bước cuối cùng là tải lên các tập dữ liệu thử nghiệm và đào tạo vào nhóm S3 mặc định.
Mã:
train_file = 'train_data.csv';
train_data.to_csv(train_file, index=False, header=True)
train_data_s3_path = session.upload_data(path=train_file, key_prefix=prefix + "/train")
print('Train dataset uploaded to: ' + train_data_s3_path)
 
test_file = 'test_data.csv';
test_data.to_csv(test_file, index=False, header=False)
test_data_s3_path = session.upload_data(path=test_file, key_prefix=prefix + "/test")
print('Test dataset uploaded to: ' + test_data_s3_path)
Có thể xác minh nhóm S3 để tạo thư mục kiểm tra và đào tạo và các tệp CSV.
9d22b7c5-sm-ap-1-1024x615.png

Bây giờ, hãy chuẩn bị tạo Autopilot để đào tạo model.

Tạo một thử nghiệm tự động
Chọn biểu tượng Experiment trong thanh bên và nhấp vào nút Create Experiment.
Cần cung cấp các chi tiết dưới đây:
Experiment name: Một tên tùy ý để xác định thử nghiệm.
S3 location of input data: Đường dẫn S3 đến tập dữ liệu đào tạo.
Target attribute name: Label được sử dụng để dự đoán. Trong trường hợp này, nó là ‘Class’.
S3 location for output data: Đường dẫn S3 để lưu trữ các mô hình và các tạo phẩm khác được tạo bởi thử nghiệm.
Machine learning problem type: Phần này có thể để tự động nhưng Binary Classification sẽ được chọn.
Objective metric: Số liệu được sử dụng để chọn ứng cử viên tốt nhất. F1 sẽ được dùng để làm làm số liệu.
Running a complete experiment: Có thể chỉ tạo các notebook. Thử nghiệm hoàn chỉnh sẽ được chạy cho hướng dẫn này.
1ef572d7-sm-ap-2-964x1024.png

Cuối cùng, nhấp vào nút Create Experiment nằm ở góc dưới bên phải để khởi động thí nghiệm.
0d3ee5ff-sm-ap-3-1024x302.png

Các pipeline sẽ chuyển từ phân tích dữ liệu, tính năng kỹ thuật, điều chỉnh mô hình và hoàn thành. Toàn bộ quá trình mất khoảng 60 phút, trong khi đó có thể khám phá các thử nghiệm do thí nghiệm tạo ra.
e5eba309-sm-ap-4-1024x301.png


Khi giai đoạn đầu tiên được thực hiện, có thể truy cập vào notebook thế hệ ứng viên và khám phá dữ liệu.
Notebook khám phá dữ liệu phân tích chất lượng của bộ dữ liệu và đề xuất các hành động có thể để cải thiện nó.
82af055d-sm-ap-5-1024x669.png


Notebook định nghĩa ứng viên cho phép tùy chỉnh pipeline cho từng ứng viên và thực hiện quy trình công việc.
796ec178-sm-ap-6-1024x660.png


Đối với mỗi thử nghiệm, SageMaker Autopilot tạo ra các công việc xử lý, chuyển đổi, đào tạo và điều chỉnh là một phần của pipeline. Thông thường, một thử nghiệm Autopilot có thể tạo ra tới 250 thử nghiệm mà từ đó ứng cử viên tốt nhất có thể được chọn. Thư mục đầu ra trong nhóm S3 sẽ chứa các tạo phẩm được tạo bởi mỗi công việc.
21238825-sm-ap-7-1024x775.png

Có thể đợi cho đến khi thử nghiệm trong danh sách dừng lại sau khi điểm số mục tiêu đã đạt đến mức chấp nhận được.
b5b0a816-sm-ap-8-1024x423.png


Triển khai mô hình từ ứng viên xuất sắc nhất
Chọn công việc được đánh dấu là tốt nhất với một ngôi sao bên cạnh nó và nhấp vào nút Deploy Model sẽ đưa đến giao diện người dùng triển khai mô hình. Đặt tên cho endpoint, chọn loại thể hiện và nhấp vào nút ở dưới cùng.
1cf390e9-sm-ap-9-1024x750.png


Khi mô hình được triển khai, nó sẽ hiển thị trong phần Endpoints. Đợi cho đến khi trạng thái trở thành InService.

1f439d76-sm-ap-10-1024x415.png


Thực hiện suy luận với Mô hình
Chuyển sang trình khởi chạy và tạo một notebook khác gọi là infer.ipynb để thực hiện suy luận.
Nhập các module và khởi tạo ứng dụng khách cho SageMaker runtime.
Mã:
import sagemaker
import boto3
from sagemaker import get_execution_role
Mã:
region = boto3.Session().region_name
sm_rt = boto3.Session().client('runtime.sagemaker', region_name=region)
Bây giờ có thể gọi điểm cuối cho suy luận.
Mã:
l="43,technician,divorced,unknown,no,4389,no,no,telephone,2,jul,632,2,85,1,success"
ep_name="term-depo-demo-1"
response = sm_rt.invoke_endpoint(EndpointName=ep_name, ContentType='text/csv', Accept='text/csv', Body=l)
response = response['Body'].read().decode("utf-8")
print (response)
Hãy thử trải nghiệm với các giá trị từ bộ dữ liệu thử nghiệm để xem các kết quả phân loại khác nhau từ mô hình. Nó cũng có thể thực hiện suy luận hàng loạt bằng cách gửi toàn bộ dữ liệu thử nghiệm.

Nguồn: https://thenewstack.io/
 
Top