Tự động tạo mô hình machine learning

bằng Amazon SageMaker Autopilot

Amazon SageMaker là dịch vụ được quản lý toàn phần mang đến cho mọi nhà phát triển và nhà khoa học dữ liệu khả năng xây dựng, đào tạo và triển khai các mô hình machine learning (ML) một cách nhanh chóng.

Trong hướng dẫn này, bạn tự động tạo các mô hình machine learning mà không cần viết một dòng mã! Bạn sử dụng Amazon SageMaker Autopilot, một khả năng AutoML tự động tạo ra các mô hình machine learning phân loại và hồi quy tốt nhất, trong khi cho phép kiểm soát hoàn toàn và khả năng hiển thị.

Trong hướng dẫn này, bạn sẽ tìm hiểu về cách:

  1. Tạo tài khoản AWS
  2. Thiết lập Amazon SageMaker Studio để truy cập Amazon SageMaker Autopilot
  3. Tải xuống bộ dữ liệu công khai bằng Amazon SageMaker Studio
  4. Tạo một thử nghiệm đào tạo với Amazon SageMaker Autopilot
  5. Khám phá các giai đoạn khác nhau của thí nghiệm đào tạo
  6. Xác định và triển khai mô hình hoạt động tốt nhất từ thí nghiệm đào tạo
  7. Dự đoán với mô hình đã triển khai của bạn

Trong hướng dẫn này, bạn sẽ đảm nhận vai trò của một nhà phát triển làm việc tại ngân hàng. Bạn được yêu cầu phát triển một mô hình machine learning để dự đoán liệu khách hàng có đăng ký chứng chỉ tiền gửi (CD) hay không. Mô hình sẽ được đào tạo về tập dữ liệu tiếp thị có chứa thông tin nhân khẩu học của khách hàng, phản hồi về các sự kiện tiếp thị và các yếu tố bên ngoài.

Dữ liệu đã được dán nhãn để thuận tiện cho bạn và một cột trong tập dữ liệu xác định xem khách hàng có được đăng ký cho một sản phẩm được cung cấp bởi ngân hàng hay không. Một phiên bản của bộ dữ liệu này có sẵn công khai từ kho lưu trữ ML do Đại học California, Irvine quản lý.
Giới thiệu về hướng dẫn này
Thời gian 10 phút                                           
Chi phí Dưới 10 USD
Trường hợp sử dụng Machine Learning
Sản phẩm Amazon SageMaker
Đối tượng Nhà phát triển
Cấp độ Mới bắt đầu
Lần cập nhật gần nhất Ngày 12 tháng 5 năm 2020

Bước 1. Tạo tài khoản AWS

Chi phí của hội thảo này là dưới 10 USD. Để biết thêm thông tin, tham khảo Giá Amazon SageMaker Studio.

Bạn đã có tài khoản? Đăng nhập

Bước 2. Thiết lập Amazon SageMaker Studio

Hoàn thành các bước sau để tích hợp Amazon SageMaker Studio để truy cập vào Amazon SageMaker Autopilot.

Lưu ý: Để biết thêm thông tin, hãy xem Bắt đầu với Amazon SageMaker Studio trong tài liệu Amazon SageMaker.


a. Đăng nhập vào bảng điều khiển Amazon SageMaker

Lưu ý: Ở góc trên cùng bên phải, đảm bảo chọn Khu vực AWS nơi Amazon SageMaker Studio có sẵn. Để biết danh sách các Khu vực, hãy xem mục Tích hợp Amazon SageMaker Studio.

autopilot-region-selection

b. Trong ngăn điều hướng Amazon SageMaker, chọn Amazon SageMaker Studio.
 
Lưu ý: Nếu bạn đang sử dụng Amazon SageMaker Studio lần đầu tiên, bạn phải hoàn tất quy trình tích hợp Studio. Khi tích hợp, bạn có thể chọn sử dụng AWS Single Sign-On (AWS SSO) hoặc AWS Identity and Access Management (IAM) cho các phương thức xác thực. Khi sử dụng xác thực IAM, bạn có thể chọn quy trình Thiết lập tiêu chuẩn hoặc Bắt đầu nhanh. Nếu bạn không chắc chắn nên chọn tùy chọn nào, hãy xem Tích hợp Amazon SageMaker Studio và nhờ quản trị viên CNTT của bạn hỗ trợ. Để đơn giản, hướng dẫn này sử dụng thủ tục Bắt đầu nhanh.
autopilot-studio-selection

c. Trong hộp Bắt đầu, chọn Bắt đầu nhanh và chỉ định tên người dùng.
autopilot-quickstart

d. Đối với vai trò Thực thi, chọn Tạo vai trò IAM. Trong hộp thoại xuất hiện, chọn Bất kỳ vùng lưu trữ S3 nào và chọn Tạo vai trò.

Amazon SageMaker tạo ra một vai trò với các quyền cần thiết và gán nó cho phiên bản của bạn.  

autopilot-create-iam-role

e. Nhấp vào Gửi.
autopilot-execution-role

Bước 3. Tải xuống bộ dữ liệu

Hoàn thành các bước sau để tải xuống và khám phá bộ dữ liệu.

Lưu ý: Để biết thêm thông tin, hãy xem Giới thiệu tổng quan về Amazon SageMaker Studio trong tài liệu Amazon SageMaker.


a. Trong Bảng điều khiển Amazon SageMaker Studio, chọn Open Studio.
autopilot-open-studio

b. Trong JupyterLab, trên menu Tệp, chọn Mới, rồi Notebook. Trong hộp Lựa chọn Kernel, chọn Python 3 (Khoa học dữ liệu).
 
autopilot-select-kernel

c. Để tải xuống và trích xuất mã, sao chép và dán đoạn mã sau vào ô mã và chọn Chạy.
 
Lưu ý: Trong khi mã chạy, dấu * xuất hiện giữa các dấu ngoặc vuông. Sau vài giây, việc thực thi mã hoàn thành và * được thay thế bằng một số.
%%sh
apt-get install -y unzip
wget https://sagemaker-sample-data-us-west-2.s3-us-west-2.amazonaws.com/autopilot/direct_marketing/bank-additional.zip
unzip -o bank-additional.zip
autopilot-download-package

d. Sao chép và dán đoạn mã sau vào một ô mã mới và chọn Chạy:

Bộ dữ liệu CSV tải và hiển thị mười dòng đầu tiên.

import pandas as pd
data = pd.read_csv('./bank-additional/bank-additional-full.csv')
data[:10]

Một trong các cột dữ liệu được đặt tên là y và đại diện cho nhãn cho từng mẫu: khách hàng này có chấp nhận đề nghị hay không?

Bước này là nơi các nhà khoa học dữ liệu sẽ bắt đầu khám phá dữ liệu, tạo ra các tính năng mới, v.v. Với Amazon SageMaker Autopilot, bạn không cần phải thực hiện bất kỳ bước nào trong số những bước bổ sung này. Bạn chỉ cần tải lên dữ liệu dạng bảng trong một tệp có các giá trị được phân tách bằng dấu phẩy (ví dụ: từ bảng tính hoặc cơ sở dữ liệu), chọn cột mục tiêu để dự đoán và Autopilot xây dựng mô hình dự đoán cho bạn.

autopilot-csv

d. Sao chép và dán đoạn mã sau vào một ô mã mới và chọn Chạy:

Bước này tải bộ dữ liệu CSV vào vùng lưu trữ Amazon S3. Bạn không cần phải tạo vùng lưu trữ Amazon S3; Amazon SageMaker tự động tạo một nhóm mặc định trong tài khoản của bạn khi bạn tải lên dữ liệu.

import sagemaker

prefix = 'sagemaker/tutorial-autopilot/input'
sess   = sagemaker.Session()

uri = sess.upload_data(path="./bank-additional/bank-additional-full.csv", key_prefix=prefix)
print(uri)

Bạn đã hoàn tất! Đầu ra mã hiển thị URI vùng lưu trữ S3 như ví dụ sau:

s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/input/bank-additional-full.csv

Theo dõi URI S3 được in trong sổ ghi chép của riêng bạn. Bạn cần nó trong bước tiếp theo.

autopilot-s3-uri

Bước 4. Tạo một thử nghiệm SageMaker Autopilot

Bây giờ bạn đã tải xuống và dàn dựng bộ dữ liệu của mình trong Amazon S3, bạn có thể tạo thử nghiệm Amazon SageMaker Autopilot. Một thử nghiệm là một tập hợp các công việc xử lý và đào tạo liên quan đến cùng một dự án machine learning.

Hoàn tất các bước sau để tạo một thử nghiệm mới.

Lưu ý: Để biết thêm thông tin, hãy xem Tạo Thử nghiệm Amazon SageMaker Autopilot bằng SageMaker Studio trong tài liệu Amazon SageMaker.


a. Trong ngăn điều hướng bên trái của Amazon SageMaker Studio, chọn Thử nghiệm (biểu tượng hình chiếc chai), sau đó chọn Tạo Thử nghiệm.

autopilot-experiments

b. Điền vào các trường Cài đặt tác vụ như sau:

  • Tên thử nghiệm: tutorial-autopilot
  • Vị trí S3 của dữ liệu đầu vào: S3 URI bạn đã in ở trên
    (ví dụ s3://sagemaker-us-east-2-123456789012/sagemaker/tutorial-autopilot/input/bank-additional-full.csv)
  • Tên thuộc tính đích: y
  • Vị trí S3 của dữ liệu đầu ra: s3://sagemaker-us-east-2-[ACCOUNT-NUMBER]/sagemaker/tutorial-autopilot/output
    (đảm bảo thay thế [SỐ TÀI KHOẢN] bằng số tài khoản của riêng bạn)
autopilot-job-settings

c. Đặt tất cả các cài đặt khác ở chế độ mặc định và chọn Tạo Thử nghiệm.

Đã thành công! Điều này bắt đầu thử nghiệm Amazon SageMaker Autopilot! Quá trình sẽ tạo ra một mô hình cũng như số liệu thống kê mà bạn có thể xem trong thời gian thực khi thử nghiệm đang chạy. Sau khi thử nghiệm hoàn tất, bạn có thể xem các thử nghiệm, sắp xếp theo số liệu khách quan và nhấp chuột phải để triển khai mô hình để sử dụng trong các môi trường khác.

autopilot-job-settings

Bước 5. Khám phá các giai đoạn thử nghiệm SageMaker Autopilot

Trong khi thử nghiệm của bạn đang chạy, bạn có thể tìm hiểu và khám phá các giai đoạn khác nhau của thử nghiệm SageMaker Autopilot.  

Phần này cung cấp thêm chi tiết về các giai đoạn thử nghiệm SageMaker Autopilot:

  1. Phân tích dữ liệu
  2. Xây dựng tính năng
  3. Điều chỉnh Mô hình

Lưu ý: Để biết thêm thông tin, hãy xem SageMaker Autopilot Notebook Output.


Phân tích dữ liệu

Giai đoạn Phân tích dữ liệu xác định loại vấn đề cần giải quyết (hồi quy tuyến tính, phân loại nhị phân, phân loại đa lớp). Sau đó, sẽ xuất hiện mười đường dẫn ứng viên. Một đường dẫn kết hợp một bước tiền xử lý dữ liệu (xử lý các giá trị bị thiếu, thiết kế các tính năng mới, v.v.) và bước đào tạo mô hình bằng thuật toán ML phù hợp với loại vấn đề. Khi bước này hoàn thành, tác vụ sẽ chuyển sang phần xây dựng tính năng.  

autopilot-analyzing-data

Xây dựng tính năng

Trong giai đoạn Xây dựng tính năng, thử nghiệm tạo bộ dữ liệu đào tạo và xác thực cho từng đường dẫn ứng viên, lưu trữ tất cả các thành phần lạ trong vùng lưu trữ S3 của bạn. Trong giai đoạn Xây dựng tính năng, bạn có thể mở và xem hai sổ ghi chép được tạo tự động:

  • Sổ ghi chép khám phá dữ liệu chứa thông tin và số liệu thống kê về bộ dữ liệu.
  • Sổ ghi chép tạo ứng viên chứa định nghĩa của mười đường dẫn. Trên thực tế, đây là sổ ghi chép có thể chạy được: bạn có thể tái tạo chính xác những gì tác vụ AutoPilot làm, hiểu cách các mô hình khác nhau được xây dựng và thậm chí tiếp tục điều chỉnh chúng nếu bạn muốn.

Với hai sổ ghi chép này, bạn có thể hiểu chi tiết cách dữ liệu được xử lý trước và cách các mô hình được xây dựng và tối ưu hóa. Tính minh bạch này là một tính năng quan trọng của Amazon SageMaker Autopilot.

autopilot-open-notebooks

Điều chỉnh Mô hình

Trong giai đoạn Điều chỉnh Mô hình, đối với mỗi đường dẫn ứng viên và bộ dữ liệu được xử lý trước, SageMaker Autopilot khởi động một tác vụ tối ưu hóa siêu tham số; các tác vụ đào tạo liên quan khám phá một loạt các giá trị siêu tham số và nhanh chóng hội tụ thành các mô hình hiệu suất cao.

Khi giai đoạn này hoàn thành, tác vụ SageMaker Autopilot sẽ hoàn tất. Bạn có thể xem và khám phá tất cả các tác vụ trong SageMaker Studio.

autopilot-model-tuning

Bước 6. Triển khai mô hình tốt nhất

Hiện thử nghiệm của bạn đã hoàn tất, bạn có thể chọn mô hình điều chỉnh tốt nhất và triển khai mô hình đến điểm cuối được quản lý bởi Amazon SageMaker.

Thực hiện theo các bước sau để chọn tác vụ điều chỉnh tốt nhất và triển khai mô hình.

Lưu ý: Để biết thêm thông tin, hãy xem mục Chọn và triển khai mô hình tốt nhất.


a. Trong danh sách Bản dùng thử của thử nghiệm, chọn biểu tượng bên cạnh Mục tiêu để sắp xếp các tác vụ điều chỉnh theo thứ tự giảm dần. Tác vụ điều chỉnh tốt nhất được làm nổi bật với một ngôi sao.

autopilot-sort-objective

b. Lựa chọn tác vụ điều chỉnh tốt nhất (được biểu thị bằng ngôi sao) và chọn Triển khai mô hình

autopilot-deploy-model

c. Trong ô Triển khai mô hình, đặt tên cho điểm cuối của bạn (ví dụ: tutorial-autopilot-best-model) và đặt tất cả các cài đặt làm mặc định. Chọn Triển khai mô hình.

Mô hình của bạn được triển khai đến điểm cuối HTTPS được quản lý bởi Amazon SageMaker.

autopilot-deploy-model-settings

d. Trong thanh công cụ bên trái, chọn biểu tượng Điểm cuối. Bạn có thể thấy mô hình của bạn được tạo ra, và bước này sẽ mất vài phút. Khi trạng thái điểm cuối là InService, bạn có thể gửi dữ liệu và nhận dự đoán!

autopilot-endpoints

Bước 7. Dự đoán với mô hình của bạn

Bây giờ mô hình được triển khai, bạn có thể dự đoán 2.000 mẫu đầu tiên của bộ dữ liệu. Với mục đích này, bạn sử dụng API invoke_endpoint trong boto3 SDK. Trong quá trình này, bạn điện toán các số liệu machine learning quan trọng: độ chính xác, tính rõ ràng, thu hồi điểm F1.

Thực hiện theo các bước sau để dự đoán với mô hình của bạn.

Lưu ý: Để biết thêm thông tin, hãy xem Quản lý Machine Learning với các thử nghiệm Amazon SageMaker.


Trong sổ ghi chép Jupyter của bạn, sao chép và dán mã sau đây và chọn Chạy.

import boto3, sys

ep_name = 'tutorial-autopilot-best-model'
sm_rt = boto3.Session().client('runtime.sagemaker')

tn=tp=fn=fp=count=0

with open('bank-additional/bank-additional-full.csv') as f:
    lines = f.readlines()
    for l in lines[1:2000]:   # Skip header
        l = l.split(',')      # Split CSV line into features
        label = l[-1]         # Store 'yes'/'no' label
        l = l[:-1]            # Remove label
        l = ','.join(l)       # Rebuild CSV line without label
                
        response = sm_rt.invoke_endpoint(EndpointName=ep_name, 
                                         ContentType='text/csv',       
                                         Accept='text/csv', Body=l)

        response = response['Body'].read().decode("utf-8")
        #print ("label %s response %s" %(label,response))

        if 'yes' in label:
            # Sample is positive
            if 'yes' in response:
                # True positive
                tp=tp+1
            else:
                # False negative
                fn=fn+1
        else:
            # Sample is negative
            if 'no' in response:
                # True negative
                tn=tn+1
            else:
                # False positive
                fp=fp+1
        count = count+1
        if (count % 100 == 0):   
            sys.stdout.write(str(count)+' ')
            
print ("Done")

accuracy  = (tp+tn)/(tp+tn+fp+fn)
precision = tp/(tp+fp)
recall    = tn/(tn+fn)
f1        = (2*precision*recall)/(precision+recall)

print ("%.4f %.4f %.4f %.4f" % (accuracy, precision, recall, f1))

Bạn sẽ thấy kết quả đầu ra như sau.

100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 Done
0.9830 0.6538 0.9873 0.7867

Đầu ra này là một chỉ báo tiến trình cho thấy số lượng mẫu đã được dự đoán!

autopilot-sort-objective

Bước 8. Dọn dẹp

Trong bước này, bạn chấm dứt các tài nguyên bạn đã sử dụng trong phòng thí nghiệm này.

Quan trọng: Việc chấm dứt các tài nguyên hiện không dùng sẽ giúp giảm chi phí và là biện pháp tốt nhất. Nếu bạn không chấm dứt tài nguyên thì tài khoản của bạn sẽ phát sinh thêm phí.


Xóa điểm cuối của bạn: Trong sổ ghi chép Jupyter của bạn, sao chép và dán mã sau đây và chọn Chạy.

sess.delete_endpoint(endpoint_name=ep_name)

Nếu bạn muốn dọn sạch tất cả các thành phần lạ từ đào tạo (mô hình, bộ dữ liệu đã xử lý trước, v.v.), hãy sao chép và dán đoạn mã sau vào ô mã của bạn và chọn Chạy.

Lưu ý: Đảm bảo thay thế ACCOUNT_NUMBER bằng số tài khoản của bạn.

%%sh
aws s3 rm --recursive s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/

Xin chúc mừng

Bạn đã tạo một mô hình machine learning với độ chính xác tốt nhất một cách tự động với Amazon SageMaker Autopilot.

Hướng dẫn này có hữu ích không?

Cảm ơn bạn
Vui lòng cho chúng tôi biết điều bạn yêu thích.
Rất tiếc vì đã làm bạn thất vọng
Có nội dung nào đã lỗi thời, dễ gây nhầm lẫn hoặc thiếu chính xác không? Vui lòng cung cấp phản hồi để giúp chúng tôi cải thiện hướng dẫn này.

Xem tổng quan về Amazon SageMaker Studio

Tìm hiểu thêm về Amazon SageMaker Autopilot

Nếu bạn muốn tìm hiểu thêm, hãy đọc bài đăng trên blog hoặc xem các video về Autopilot.