本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將模型部署至 Amazon EC2
若要取得預測,EC2請使用 Amazon 將模型部署至 Amazon SageMaker。
將模型部署至 SageMaker 託管服務
若要EC2使用 Amazon 透過 Amazon 託管模型 SageMaker,建立和執行訓練任務請呼叫xgb_model
估算器deploy
的方法來部署您在 中訓練的模型。呼叫 deploy
方法時,您必須指定要用於託管端點的 EC2 ML 執行個體數量和類型。
import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
-
initial_instance_count
(int) — 要部署模型的執行個體數目。 -
instance_type
(str) — 您要操作已部署模型的執行個體類型。 -
serializer
(int) – 將各種格式 ( NumPy 陣列、清單、檔案或緩衝區) 的輸入資料序列化為 CSV格式化字串。我們使用這個,因為XGBoost演算法接受 CSV 格式的輸入檔案。
此deploy
方法會建立可部署模型、設定 SageMaker託管服務端點,並啟動端點以託管模型。如需詳細資訊,請參閱 Amazon SageMaker Python SDKdeploy
方法所產生的端點名稱,請執行下列程式碼:
xgb_predictor.endpoint_name
這應該會傳回的端點名稱 xgb_predictor
。端點名稱的格式為 "sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS"
。此端點在機器學習 (ML) 執行個體中保持作用中狀態,而且您可以隨時進行即時預測,除非您稍後將其關閉。複製此端點名稱並儲存,以便在 SageMaker Studio 或 SageMaker筆記本執行個體的其他位置重複使用和進行即時預測。
提示
若要進一步了解如何編譯和最佳化模型以部署至 Amazon EC2執行個體或邊緣裝置,請參閱使用 Neo 編譯和部署模型。
(選用) 使用 SageMaker Predictor 重複使用託管端點
將模型部署至端點後,您可以配對端點並持續在任何其他筆記本中進行即時預測,藉此設定新的 SageMaker 預測器。下列範例程式碼示範如何使用 SageMaker Predictor 類別,使用相同的端點來設定新的預測器物件。重新使用您用於 xgb_predictor
的端點名稱。
import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="
sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS
", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )
xgb_predictor_reuse
Predictor 的行為與原始 xgb_predictor
完全相同。如需詳細資訊,請參閱 Amazon SageMaker Python SDK
(選用) 使用批次轉換進行預測
您可以執行一次性批次推論任務,使用 SageMaker 批次轉換對測試資料集進行預測,而不是在生產中託管端點。模型訓練完成後,您可以將估算器擴展至以 SageMaker Transformertransformer
物件。批次轉換器從指定的 S3 儲存貯體讀取輸入資料並進行預測。
執行批次轉換任務
執行下列程式碼,將測試資料集的特徵資料欄轉換為 CSV 檔案,並上傳至 S3 儲存貯體:
X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
為批次轉換任務指定URIs輸入和輸出的 S3 儲存貯體,如下所示:
# The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
建立指定最少參數數目的轉換器物件:執行批次轉換工作的
instance_count
和instance_type
參數,output_path
以及儲存預測資料,如下所示:transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
通過執行
transformer
物件的transform()
方法,如下所示啟動批次轉換工作:transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
當批次轉換任務完成時, 會 SageMaker 建立儲存在
batch_output
路徑中的test.csv.out
預測資料,其格式應該如下:s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction
。執行下列動作 AWS CLI ,以下載批次轉換工作的輸出資料:! aws s3 cp {batch_output} ./ --recursive
這應該在當前工作目錄下建立
test.csv.out
檔案。您將能夠看到根據XGBoost訓練任務的羅吉斯迴歸預測的浮點數。