

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立模型
<a name="async-inference-create-endpoint-create-model"></a>

下列範例示範如何使用 適用於 Python (Boto3) 的 AWS SDK建立模型。前幾行定義：
+ `sagemaker_client`：低階 SageMaker AI 用戶端物件，可讓您輕鬆向 AWS 服務傳送和接收請求。
+ `sagemaker_role`：具有 SageMaker AI IAM 角色 Amazon Resource Name (ARN) 的字串變數。
+ `aws_region`：具有您 AWS 區域名稱的字串變數。

```
import boto3

# Specify your AWS Region
aws_region={{'<aws_region>'}}

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Role to give SageMaker permission to access AWS services.
sagemaker_role= "arn:aws:iam::{{<account>:role/*}}"
```

接下來，指定儲存在 Amazon S3 中預先訓練模型的位置。在此範例中，我們使用名為 `demo-xgboost-model.tar.gz` 的 XGBoost 預先訓練模型。完整的 Amazon S3 URI 儲存在一個字串變數 `model_url`：

```
#Create a variable w/ the model S3 URI
s3_bucket = {{'<your-bucket-name>'}} # Provide the name of your S3 bucket
bucket_prefix='saved_models'
model_s3_key = f"{bucket_prefix}/demo-xgboost-model.tar.gz"

#Specify S3 bucket w/ model
model_url = f"s3://{s3_bucket}/{model_s3_key}"
```

指定主要容器。針對主要容器，您可以指定包含推論程式碼的 Docker 映像、成品 (來自先前的訓練)，以及推論程式碼在您部署模型以進行預測時所使用的自訂環境映射。

 在此範例中，我們指定 XGBoost 的內建演算法容器映像：

```
from sagemaker import image_uris

# Specify an AWS container image. 
container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')
```

使用 `CreateModel` 在 Amazon SageMaker AI 建立模型。指定下列內容：
+ `ModelName`：模型的名稱 (在這個範例中，它的儲存名稱是名為 `model_name` 的字串變數)。
+ `ExecutionRoleArn`：Amazon SageMaker AI 可扮演之 IAM 角色的 Amazon Resource Name (ARN)；該角色可存取模型成品和 Docker 映像檔，然後在機器學習 (ML) 運算執行個體上部署，或是用於批次轉換工作。
+ `PrimaryContainer`：主要 Docker 映像檔的位置，包含推論程式碼、關聯成品，以及推論程式碼在部署模型以進行預測時使用的自訂環境地圖。

```
model_name = {{'<The_name_of_the_model>'}}

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
    })
```

請參閱[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)描述 SageMaker 瞭解 API 參數的完整清單。

如果您使用 SageMaker AI 提供的容器，則可以在此步驟中設定環境變數，將模型伺服器逾時和承載大小從預設值增加到架構支援的最大值。如果您未明確設定這些變數，您可能無法利用非同步推論支援的逾時上限和承載大小。下列範例顯示，您可以如何基於 TorchService 的 PyTorch 推論容器設定環境變數。

```
model_name = {{'<The_name_of_the_model>'}}

#Create model
create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url,
        'Environment': {
            'TS_MAX_REQUEST_SIZE': '100000000',
            'TS_MAX_RESPONSE_SIZE': '100000000',
            'TS_DEFAULT_RESPONSE_TIMEOUT': '1000'
        },
    })
```

完成建立端點之後，您應該透過從 `inference.py` 指令碼列印出環境變數，測試環境變數是否已正確設定。下表列出數個架構的環境變數，您可以用這些設定來變更預設值。


| 架構 | 環境變數 | 
| --- | --- | 
| PyTorch 1.8 (基於 TorchServe) | 'TS\_MAX\_REQUEST\_SIZE': '100000000'<br />'TS\_MAX\_RESPONSE\_SIZE': '100000000'<br />'TS\_DEFAULT\_RESPONSE\_TIMEOUT': '1000' | 
| PyTorch 1.4 (基於 MMS) | 'MMS\_MAX\_REQUEST\_SIZE': '1000000000'<br />'MMS\_MAX\_RESPONSE\_SIZE': '1000000000'<br />'MMS\_DEFAULT\_RESPONSE\_TIMEOUT': '900' | 
| HuggingFace 推論容器 (基於 MMS) | 'MMS\_MAX\_REQUEST\_SIZE': '2000000000'<br />'MMS\_MAX\_RESPONSE\_SIZE': '2000000000'<br />'MMS\_DEFAULT\_RESPONSE\_TIMEOUT': '900' | 