0
0
Lập trình
NM

Hướng dẫn sử dụng Amazon SageMaker để triển khai và huấn luyện mô hình Random Forest với Scikit-learn

Đăng vào 1 tuần trước

• 2 phút đọc

Giới thiệu

Bài viết này sẽ hướng dẫn bạn cách sử dụng Amazon SageMaker để phát triển, đào tạo, điều chỉnh và triển khai mô hình máy học (ML) dựa trên Scikit-learn, cụ thể là mô hình Random Forest. Dữ liệu mẫu được sử dụng trong bài viết này là California Housing dataset, một tập dữ liệu nổi tiếng trong lĩnh vực học máy.

Mục tiêu

Mục tiêu chính của bài viết là giúp bạn hiểu được quy trình chuẩn bị dữ liệu, triển khai mã nguồn và thực hiện đào tạo mô hình trên nền tảng Amazon SageMaker.

Chuẩn bị môi trường

Để bắt đầu, bạn cần thiết lập môi trường với các thư viện cần thiết. Dưới đây là đoạn mã để thiết lập môi trường:

python Copy
import datetime
import tarfile
import boto3
import pandas as pd
import numpy as np
from sagemaker import get_execution_role
import sagemaker
from sklearn.model_selection import train_test_split
from sklearn.datasets import fetch_california_housing

sm_boto3 = boto3.client("sagemaker")
sess = sagemaker.Session()
region = sess.boto_session.region_name
bucket = sess.default_bucket()
print("Sử dụng bucket: " + bucket)

Chuẩn bị dữ liệu

Sử dụng tập dữ liệu California Housing từ thư viện sklearn, chúng ta sẽ chia nhỏ dữ liệu và tải lên Amazon S3:

python Copy
data = fetch_california_housing()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.25, random_state=42)
trainX = pd.DataFrame(X_train, columns=data.feature_names)
trainX["target"] = y_train
testX = pd.DataFrame(X_test, columns=data.feature_names)
testX["target"] = y_test
trainX.to_csv("california_housing_train.csv")
testX.to_csv("california_housing_test.csv")

trainpath = sess.upload_data(path="california_housing_train.csv", bucket=bucket, key_prefix="sagemaker/sklearncontainer")
testpath = sess.upload_data(path="california_housing_test.csv", bucket=bucket, key_prefix="sagemaker/sklearncontainer")

Tạo mã Script Mode

Tiếp theo, chúng ta sẽ tạo mã nguồn cho cả việc đào tạo và suy luận trong mô hình. Đây là tập lệnh cơ bản:

python Copy
import argparse
import joblib
import os
import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestRegressor

# Hàm để tải mô hình

def model_fn(model_dir):
    clf = joblib.load(os.path.join(model_dir, "model.joblib"))
    return clf

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--n-estimators", type=int, default=10)
    parser.add_argument("--min-samples-leaf", type=int, default=3)
    parser.add_argument("--model-dir", type=str, default=os.environ.get("SM_MODEL_DIR"))
    parser.add_argument("--train", type=str, default=os.environ.get("SM_CHANNEL_TRAIN"))
    parser.add_argument("--test", type=str, default=os.environ.get("SM_CHANNEL_TEST"))
    parser.add_argument("--train-file", type=str, default="california_housing_train.csv")
    parser.add_argument("--test-file", type=str, default="california_housing_test.csv")
    parser.add_argument("--features", type=str)
    parser.add_argument("--target", type=str)

    args, _ = parser.parse_known_args()

    train_df = pd.read_csv(os.path.join(args.train, args.train_file))
    test_df = pd.read_csv(os.path.join(args.test, args.test_file))

    X_train = train_df[args.features.split()]
    y_train = train_df[args.target]

    model = RandomForestRegressor(n_estimators=args.n_estimators, min_samples_leaf=args.min_samples_leaf)
    model.fit(X_train, y_train)

    joblib.dump(model, os.path.join(args.model_dir, "model.joblib"))

Đào tạo mô hình

Chúng ta sẽ sử dụng Estimator từ SDK của SageMaker để tiến hành đào tạo:

python Copy
from sagemaker.sklearn.estimator import SKLearn
FRAMEWORK_VERSION = "0.23-1"
sklearn_estimator = SKLearn(...)
sklearn_estimator.fit({"train": trainpath, "test": testpath}, wait=True)

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

Việc điều chỉnh siêu tham số có thể được thực hiện bằng cách sử dụng Hyperparameter Tuner:

python Copy
from sagemaker.tuner import IntegerParameter
hyperparameter_ranges = {...}
Optimizer = sagemaker.tuner.HyperparameterTuner(...)
Optimizer.fit({"train": trainpath, "test": testpath})

Triển khai mô hình

Sau khi đào tạo xong, bạn có thể triển khai mô hình để sử dụng:

python Copy
from sagemaker.sklearn.model import SKLearnModel
model = SKLearnModel(...)
predictor = model.deploy(...)

Gọi dự đoán

Cuối cùng, ta có thể thực hiện dự đoán bằng cách gọi mô hình đã được triển khai:

python Copy
response = runtime.invoke_endpoint(...)
print(response["Body"].read())

Kết luận

Bài viết đã hướng dẫn chi tiết các bước triển khai, đào tạo và điều chỉnh mô hình Random Forest bằng Amazon SageMaker. Qua đó, bạn có thể ứng dụng vào các bài toán thực tế trong lĩnh vực học máy.

Tài liệu tham khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào