- SageMaker 教程
- SageMaker - 首頁
- SageMaker - 簡介
- 如何設定 SageMaker?
- SageMaker - 構建機器學習模型
- SageMaker - 訓練機器學習模型
- SageMaker - 部署機器學習模型
- SageMaker - 監控和最佳化
- SageMaker - 定價
- SageMaker 資源
- SageMaker 快速指南
- SageMaker - 資源
- SageMaker - 討論
SageMaker 快速指南
SageMaker - 簡介
Amazon SageMaker 是一款完全託管的機器學習 (ML) 服務,可幫助資料科學家和開發者快速構建、訓練和部署 ML 模型到可用於生產的託管環境中。它簡化了機器學習生命週期的每個步驟,從資料準備到模型訓練和部署。
- SageMaker 提供了一個直觀的使用者介面 (UI) 用於執行 ML 工作流,使其工具可在各種整合開發環境 (IDE) 中使用。
- SageMaker 還支援流行的機器學習框架,如TensorFlow、PyTorch 和 Scikit-learn。SageMaker 的此功能為開發者提供了使用所需工具的靈活性。
要開始使用 Amazon SageMaker,您需要設定 SageMaker 筆記本例項或使用 SageMaker Studio。然後,您可以上傳資料、選擇 ML 演算法、訓練模型並進行部署。
使用 Amazon SageMaker 進行機器學習的好處
在本節中,讓我們瞭解使用 Amazon SageMaker 的好處:
完全託管的服務
Amazon SageMaker 是完全託管的,這意味著 AWS 會設定伺服器,管理基礎設施,並根據需要擴充套件資源。使用者可以專注於其機器學習任務,而無需擔心繫統維護或效能問題。
擴充套件您的 ML 模型
Amazon SageMaker 允許您擴充套件您的機器學習模型,以適應您的資料和應用程式的擴充套件。它還支援分散式訓練,從而縮短處理時間。它還確保即使是複雜的模型也能有效地進行訓練。
成本效益
Amazon SageMaker 使用按需付費模式,這意味著您只需為使用的資源付費。您無需在昂貴的硬體上花錢。
SageMaker 還提供自動模型調整和最佳化,可幫助您減少計算時間和費用。
輕鬆部署模型
藉助 SageMaker,您可以輕鬆地在生產環境中部署機器學習模型。它提供各種部署選項,例如批次預測、即時推理和 A/B 測試。
內建演算法和預處理
使用者無需編寫自己的演算法,因為 Amazon SageMaker 提供了各種針對性能最佳化的內建演算法。這節省了大量時間和精力。
SageMaker 提供安全的環境
Amazon SageMaker 提供強大的安全功能來保護您的資料和模型。它與 AWS Identity 和 Access Management (IAM) 整合,允許您控制使用者許可權和訪問級別。
支援多種框架
Amazon SageMaker 支援各種機器學習框架,例如 TensorFlow、PyTorch 和 MXNet。它允許開發者為其專案選擇最佳工具。
如何設定 SageMaker?
按照以下步驟設定 Amazon SageMaker:
步驟 1:登入 AWS
設定 Amazon SageMaker 的第一步是登入您的 AWS 管理控制檯。如果您沒有 AWS 帳戶,則必須建立它。您可以在 AWS 網站上免費建立它。
步驟 2:導航到 SageMaker
登入後,在 AWS 控制檯中搜索“SageMaker”並選擇它。它將開啟 Amazon SageMaker 儀表板,您可以在其中管理您的機器學習專案。
步驟 3:建立 SageMaker 筆記本例項
要開始構建機器學習模型,您需要建立一個筆記本例項。單擊“筆記本例項”,然後選擇“建立筆記本例項”。
步驟 4:配置筆記本例項
您需要根據您的計算需求選擇例項型別。如果您是初學者,您可以從較小的例項型別開始,例如ml.t2.medium。
您還需要為您的筆記本例項命名。之後選擇具有必要許可權的角色。
步驟 5:啟動筆記本例項
配置完成後,單擊“建立筆記本例項”。例項準備就緒需要幾分鐘時間。
準備就緒並執行後,單擊“開啟 Jupyter”以訪問 Jupyter Notebook 介面。現在您可以開始編寫程式碼、訓練模型和執行實驗了。
步驟 6:準備您的資料
在開始訓練模型之前,您需要將資料上傳到 Amazon S3 儲存桶。
S3 是 AWS 推薦與 SageMaker 一起使用的儲存服務。您可以直接從筆記本環境訪問和預處理資料。
配置您的第一個 SageMaker 專案
SageMaker 筆記本例項準備就緒後,您可以開始配置您的第一個專案。請按照以下步驟操作
步驟 1:選擇預構建演算法或編寫您自己的演算法
SageMaker 提供許多針對性能最佳化的內建演算法,例如線性學習器、XGBoost 等。您可以選擇這些預構建演算法之一,也可以使用 Python 編寫您自己的演算法。
步驟 2:資料準備
資料準備是成功專案的關鍵。SageMaker 提供用於清理和轉換資料的工具。您可以直接從筆記本訪問儲存在 Amazon S3 中的資料集。
在將資料輸入機器學習模型之前,使用資料準備庫來探索、清理和預處理資料。
步驟 3:訓練您的模型
資料準備之後,下一步是訓練模型。在 Jupyter Notebook 中,您可以指定演算法、定義超引數和配置訓練作業。
步驟 4:調整和最佳化
Amazon SageMaker 提供自動模型調整,它會調整超引數以找到最佳模型效能。訓練後,您可以檢視結果並進一步調整模型以提高準確性。
您還可以使用 SageMaker 的內建最佳化工具來加快此過程。
步驟 5:部署模型
訓練和最佳化模型後,就可以部署它了。SageMaker 允許您直接將模型部署到端點以進行即時推理。
從 SageMaker 儀表板中選擇“建立端點”,並配置您的部署設定。部署後,您可以開始使用訓練好的模型進行預測。
步驟 6:監控和擴充套件
部署模型後,您可以監控其效能。您可以使用 SageMaker 的內建工具進行監控。它提供即時監控、基於需求的自動擴充套件和版本控制。
SageMaker - 構建機器學習模型
閱讀本章,瞭解如何使用 SageMaker 中的內建演算法構建機器學習 (ML) 模型。
在 Amazon SageMaker 中使用內建演算法
請按照以下步驟操作:
步驟 1:選擇內建演算法
首先,您需要選擇一個內建演算法。Amazon SageMaker 提供各種內建演算法,例如線性學習器(用於分類和迴歸)、XGBoost(用於分類的增強樹)和K 均值(用於聚類)。
步驟 2:準備資料
接下來,您需要將資料上傳到 Amazon S3 儲存桶。SageMaker 從 S3 讀取資料並將其用於訓練模型。資料應為 CSV 或 SageMaker 支援的其他格式。
步驟 3:建立 SageMaker 會話
開啟您的 Jupyter Notebook。匯入必要的庫並建立一個 SageMaker 會話:
import sagemaker from sagemaker import get_execution_role # Create a SageMaker session session = sagemaker.Session() # Define the S3 bucket and data path bucket = 'your-s3-bucket-name' prefix = 'your-data-prefix' role = get_execution_role()
步驟 4:配置演算法和訓練作業
建立 SageMaker 會話後,我們需要配置內建的線性學習器演算法。
您可以使用SageMaker 的 LinearLearner 估計器。然後,設定超引數並啟動訓練作業,如下所示:
from sagemaker.amazon.linear_learner import LinearLearner
# Configure the LinearLearner estimator
linear = LinearLearner(role=role, instance_count=1,
instance_type='ml.m4.xlarge',
predictor_type='binary_classifier',
output_path=f's3://{bucket}/{prefix}/output')
# Define the data channels (train and validation)
train_data = f's3://{bucket}/{prefix}/train/train.csv'
validation_data = f's3://{bucket}/{prefix}/validation/validation.csv'
data_channels = {'train': train_data, 'validation': validation_data}
# Train the model
linear.fit(inputs=data_channels)
步驟 5:部署模型進行推理
訓練後,將模型部署到 SageMaker 端點以進行即時預測,如下所示:
# Deploy the trained model predictor = linear.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge') # Make predictions result = predictor.predict([[1.5, 2.5, 3.0]]) print(result)
將您自己的模型引入 Amazon SageMaker
Amazon SageMaker 還允許您引入您自己的預訓練模型並進行部署。請按照以下步驟將您自己的模型引入 Amazon SageMaker:
步驟 1:儲存您的模型
如果您使用TensorFlow 或PyTorch 等框架訓練了模型,您可以將模型的權重和架構儲存到 S3 儲存桶。
請檢視以下示例:
import torch
import boto3
# Save a PyTorch model locally
torch.save(model.state_dict(), 'model.pth')
# Upload the model to S3
s3 = boto3.client('s3')
s3.upload_file('model.pth', 'your-s3-bucket-name', 'model/model.pth')
步驟 2:建立 SageMaker 模型
接下來,我們需要建立一個模型物件並指定託管模型的容器。您可以為此使用 SageMaker 的 Model 類。您還可以使用自定義 Docker 映象來服務您的模型,如下所示:
from sagemaker.model import Model
# Define the model
model = Model(model_data='s3://your-s3-bucket-name/model/model.pth',
role=role,
image_uri='your-custom-docker-image')
# Deploy the model
predictor = model.deploy(initial_instance_count=1, instance_type='ml.m4.xlarge')
步驟 3:部署模型
建立模型後,將其部署到 SageMaker 端點以使其可用於推理,如下所示:
# Perform inference using the deployed model result = predictor.predict([[1.5, 2.5, 3.0]]) print(result)
SageMaker - 訓練機器學習模型
您可以使用 Amazon SageMaker 的完全託管訓練服務輕鬆訓練機器學習 模型。
要訓練 ML 模型,您可以使用 SageMaker 的內建演算法或使用您自己的模型。在這兩種情況下,SageMaker 都允許您高效地執行訓練作業。
如何使用 Amazon SageMaker 訓練模型?
讓我們藉助以下給出的Python程式瞭解如何使用 SageMaker 訓練模型:
步驟 1:準備您的資料
首先,準備您的資料並將其以 CSV 格式或任何其他合適的格式儲存在 Amazon S3 中。Amazon SageMaker 從 S3 讀取資料以進行訓練作業。
步驟 2:定義估計器
現在,您需要定義估計器。您可以使用 Estimator 物件配置訓練作業。在本例中,我們將使用內建的 XGBoost 演算法訓練模型,如下所示:
import sagemaker
from sagemaker import get_execution_role
from sagemaker.inputs import TrainingInput
# Define your SageMaker session and role
session = sagemaker.Session()
role = get_execution_role()
# Define the XGBoost estimator
xgboost = sagemaker.estimator.Estimator(
image_uri=sagemaker.image_uris.retrieve("xgboost", session.boto_region_name),
role=role,
instance_count=1,
instance_type="ml.m4.xlarge",
output_path=f"s3://your-bucket/output",
sagemaker_session=session,
)
# Set hyperparameters
xgboost.set_hyperparameters(objective="binary:logistic", num_round=100)
步驟 3:指定訓練資料
我們需要指定訓練資料以進行進一步處理。您可以使用 TrainingInput 類指定資料在 S3 中的位置,如下所示:
# Specify training data in S3 train_input = TrainingInput (s3_data="s3://your-bucket/train", content_type="csv") validation_input = TrainingInput (s3_data="s3://your-bucket/validation", content_type="csv")
步驟 4:訓練模型
最後,透過呼叫 fit 方法啟動訓練作業,如下所示:
# Train the model
xgboost.fit({"train": train_input, "validation": validation_input})
訓練完成後,SageMaker 將自動配置資源、執行訓練作業並將模型輸出儲存到指定的 S3 位置。
使用 SageMaker 進行分散式訓練
Amazon SageMaker 支援分散式訓練,使您能夠跨多個例項擴充套件訓練。當您處理大型資料集或深度學習模型時,這非常有用。SageMaker 提供了支援分散式訓練的框架,例如 TensorFlow 和 PyTorch。
要啟用分散式訓練,您可以增加 Estimator 物件中的 instance_count 引數。
示例
下面是一個使用 TensorFlow 的示例:
from sagemaker.tensorflow import TensorFlow
# Define the TensorFlow estimator with distributed training
tensorflow_estimator = TensorFlow(
entry_point="train.py",
role=role,
instance_count=2,
instance_type="ml.p3.2xlarge",
framework_version="2.3",
py_version="py37",
)
# Train the model on multiple instances
tensorflow_estimator.fit({"train": train_input, "validation": validation_input})
在此示例中,SageMaker 使用兩個 ml.p3.2xlarge 例項進行分散式訓練。這將減少大型模型的訓練時間。
SageMaker - 部署機器學習模型
訓練完模型後,下一步是將其部署以進行預測。Amazon SageMaker 允許您將模型即時部署到 SageMaker 端點,或對大型資料集執行批次推理。部署後,您可以輕鬆地將機器學習模型整合到生產應用程式中。
將模型部署到 SageMaker 端點
使用 Amazon SageMaker 部署模型是一項非常簡單的任務。訓練後,您可以將模型即時部署到端點。然後,此端點將允許您執行即時預測。讓我們看看下面的步驟:
步驟 1:部署模型
模型訓練完成後,您可以使用 deploy 方法建立用於即時推理的端點,如下所示:
# Deploy the model to a SageMaker endpoint predictor = xgboost.deploy(initial_instance_count=1, instance_type="ml.m4.xlarge") # Perform real-time inference result = predictor.predict([[5.1, 3.5, 1.4, 0.2]]) print(result)
在上面的示例中,模型部署到 ml.m4.xlarge 例項。部署後,您可以使用 predict 方法對新資料執行推理。
步驟 2:監控端點
SageMaker 會自動為您管理端點。您可以使用 SageMaker 儀表板監控端點的效能並根據需要進行擴充套件。SageMaker 還支援基於流量的自動擴充套件。
使用 Amazon SageMaker 進行批次推理
SageMaker 具有批次推理功能,當您需要對不需要即時響應的大型資料集進行預測時,此功能非常有用。在這種情況下,SageMaker 會批次處理資料並將結果輸出到 S3 儲存桶。
請按照以下步驟操作:
步驟 1:配置轉換器
訓練後,您可以建立一個 Transformer 物件來執行批次推理,如下所示:
# Configure the transformer
transformer = xgboost.transformer(
instance_count=1, instance_type="ml.m4.xlarge", output_path="s3://your-bucket/batch-output"
)
# Perform batch inference
transformer.transform(data="s3://your-bucket/batch-input", content_type="text/csv", split_type="Line")
步驟 2:執行批次作業
SageMaker 將在儲存在 S3 中的指定資料集上執行批次推理作業。結果將儲存到您 S3 儲存桶中的 output_path。
SageMaker - 監控和最佳化
監控機器學習模型是確保模型在生產環境中部署時按預期執行的重要步驟。Amazon SageMaker 提供各種工具來監控模型、跟蹤指標並檢測效能隨時間的下降。
SageMaker 模型監控器
SageMaker 模型監控器工具會持續即時跟蹤模型的質量。它會監控傳入資料是否存在任何不一致之處,並在模型預測與預期預測存在差異時向您發出警報。此工具可確保您的模型始終保持準確和可靠。
CloudWatch 整合
另一個監控工具是 CloudWatch。Amazon SageMaker 可輕鬆與 Amazon CloudWatch 整合,以即時收集、跟蹤和視覺化效能指標。它允許您配置自定義指標,例如準確性或延遲。
自動重新訓練
SageMaker 還支援自動重新訓練,允許您設定觸發器,以便在滿足特定條件時重新訓練模型。透過自動重新訓練,您可以確保您的模型始終與最新資料保持同步。
超引數調整和最佳化
超引數調整在實現機器學習模型的最佳效能方面發揮著重要作用。Amazon SageMaker 的超引數最佳化功能允許您自動搜尋模型的最佳超引數組合。
在 SageMaker 中實現超引數調整
SageMaker 的自動超引數調整也稱為超引數最佳化 (HPO)。它透過執行具有不同引數組合的多個訓練作業來幫助您識別最佳超引數。
示例
下面是 SageMaker 中超引數調整的基本 Python 程式碼示例:
from sagemaker.tuner import HyperparameterTuner, ContinuousParameter
# Define the hyperparameters to tune
hyperparameter_ranges = {
'eta': ContinuousParameter(0.01, 0.2),
'max_depth': ContinuousParameter(3, 10)
}
# Set up the tuner
tuner = HyperparameterTuner(
estimator=xgboost_estimator,
objective_metric_name='validation:accuracy',
hyperparameter_ranges=hyperparameter_ranges,
max_jobs=10,
max_parallel_jobs=2
)
# Start tuning job
tuner.fit({"train": train_input, "validation": validation_input})
SageMaker - 定價
Amazon SageMaker 定價基於按需付費模式,這意味著您只需為使用的資源付費。定價取決於機器學習工作流的不同元件。
瞭解 Amazon SageMaker 定價
SageMaker 的主要定價元件如下所示:
Notebook 例項
當您使用 SageMaker 整合的 Jupyter 筆記本開發機器學習模型時,將根據例項型別和使用時間向您收費。
每種例項型別的每小時費率都不同,具體取決於它提供的 CPU、記憶體和 GPU 資源。您可以根據需要從各種例項型別中進行選擇。
訓練作業
對於訓練機器學習模型,SageMaker 將根據計算資源和訓練過程的持續時間收取費用。例如,如果您使用基於 GPU 的例項進行更快的訓練,則成本會更高。
另一方面,如果您使用基於 CPU 的例項,則成本會更低。成本也會根據您使用的區域和您正在訓練的模型型別(機器學習、深度學習或生成式 AI)而有所不同。
SagaMaker 會向您收取訓練例項和在訓練作業期間消耗的任何其他服務的費用。這些服務包括資料傳輸和 S3 儲存。
託管/推理端點
SageMaker 還將向您收取託管費用。託管從您的模型訓練並部署到 SageMaker 端點後開始。託管費用取決於用於部署的例項型別和活動端點的數量。
與訓練作業一樣,GPU 等高效能例項的成本會更高。計費按小時計算,針對每個端點。
S3 儲存和資料傳輸
SageMaker 依賴 Amazon S3 來儲存資料集。您將需要為 S3 中的資料儲存以及 S3 和 SageMaker 之間的所有資料傳輸付費。這些成本取決於使用的資料量和進出雲的資料量。
SageMaker 成本最佳化技巧
以下是一些方法,您可以藉助這些方法來管理和降低使用 SageMaker 時的成本:
使用 Spot 例項進行訓練作業
降低 SageMaker 訓練成本最有效的方法之一是使用Spot 例項。Spot 例項允許您以更低的價格使用未使用的 Amazon EC2 容量。
選擇正確的例項型別
選擇正確的例項型別有助於降低成本。因此,只選擇那些與您的開發、訓練和託管需求的工作負載相匹配的例項型別。
例如,如果您正在進行小型實驗,則基於 CPU 的例項就足夠了。您無需為此使用昂貴的 GPU 例項。
使用 Amazon SageMaker 託管 Spot 訓練
在 Amazon SageMaker 中設定訓練作業時,您可以啟用託管 Spot 訓練。此功能會自動使用 Spot 例項,從而將訓練作業的成本降低多達 70%。
監控和調整使用情況
您還可以使用Amazon CloudWatch 和AWS 預算來監控 SageMaker 的使用情況和成本。您還可以在其中設定警報。您還可以經常檢視您的使用情況以終止未使用的端點。
利用免費套餐和 AWS 積分
如果您是 SageMaker 的初學者,AWS 提供一個免費套餐,其中包括 250 小時的免費t2.medium 筆記本例項和 50 小時的m4.xlarge 例項使用時間用於訓練作業。