

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

# 最佳實務
<a name="best-practices"></a>

下列主題提供在 Amazon SageMaker AI 中部署機器學習模型的最佳實務指引。

**Topics**
+ [在 SageMaker AI 託管服務上部署模型的最佳實務](deployment-best-practices.md)
+ [監控安全最佳實務](monitor-sec-best-practices.md)
+ [使用 的低延遲即時推論 AWS PrivateLink](realtime-endpoints-privatelink.md)
+ [將推論工作負載從 x86 遷移至 AWS Graviton](realtime-endpoints-graviton.md)
+ [疑難排解 Amazon SageMaker AI 型部署](deploy-model-troubleshoot.md)
+ [推論成本最佳化最佳實務](inference-cost-optimization.md)
+ [將 GPU 驅動程式升級期間中斷的最佳做法降至最低](inference-gpu-drivers.md)
+ [使用 Amazon SageMaker AI 實現端點安全和健康狀態的最佳實務](best-practice-endpoint-security.md)
+ [更新推論容器以符合 NVIDIA 容器工具組](container-nvidia-compliance.md)

# 在 SageMaker AI 託管服務上部署模型的最佳實務
<a name="deployment-best-practices"></a>

使用 SageMaker AI 託管服務進行模型託管時，請考量下列事項：
+ 用戶端應用程式通常會將請求傳送至 SageMaker AI HTTPS 端點，藉此從部署的模型獲取推論。然而，您也可以在測試期間，從 Jupyter 筆記本將請求傳送至此端點。
+ 您能夠將 SageMaker AI 所訓練的模型部署至專屬的部署目標。若要執行該作業，則必須掌握模型訓練產生的模型成品，了解其所採用的演算法專屬格式。如需輸出格式的詳細資訊，請移至 [用於訓練的一般資料格式](cdf-training.md)，參閱對應至使用中演算法的小節。
+ 您可以將一個模型的多個變體部署至相同的 SageMaker AI HTTPS 端點。這將有助於生產環境中模型變體的測試作業。例如，假設您已將模型部署到生產。您想要將少量的流量 (假設 5%) 引導到新的模型，測試模型變異。若要執行此作業，請建立端點組態，該端點會說明兩種模型變體。您可以在傳送至 `ProductionVariant` 的請求中指定 `CreateEndPointConfig`。如需詳細資訊，請參閱[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html)。
+ 您可以將 `ProductionVariant` 設定為使用 Application Auto Scaling。如需設定自動調整規模的資訊，請參閱[Amazon SageMaker AI 模型的自動擴展](endpoint-auto-scaling.md)。
+ 您可以修改端點，且不需針對已經部署至生產環境的模型停止服務。例如，您可以增加新的模型變體、更新現有模型變體的機器學習 (ML) 運算執行個體組態，或是變更模型變體間的流量分配。欲修改端點，則需提供新的端點組態。SageMaker AI 會實作這些變更內容，且不會造成停機。如需詳細資訊，請參閱 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html) 及 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpointWeightsAndCapacities.html)。
+ 變更、刪除模型成品，或是在部署模型後變更推論程式碼，皆會導致無法預測的結果。如果您必須變更、刪除模型成品或變更推論程式碼，請提供新的端點組態並修改端點。提供新端點組態之後，即可變更或刪除對應至舊端點組態的模型成品。
+ 如果您想要取得整個資料集的推論，請考慮使用批次轉換替代託管服務。如需相關資訊，請參閱[使用 Amazon SageMaker AI 進行批次轉換以進行推論](batch-transform.md)。

## 跨可用區域部署多個執行個體
<a name="deployment-best-practices-availability-zones"></a>

**託管模型時建立強大的端點。**SageMaker AI 端點可協助保護您的應用程式不受[可用區域](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)中斷和執行個體故障影響。如果發生停機或執行個體故障，SageMaker AI 會自動嘗試將您的執行個體分散到各個可用區域。因此，我們強烈建議您為每個生產端點部署多個執行個體。

如果您使用的是 [Amazon Virtual Private Cloud (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)，請至少使用兩個 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html#SageMaker-Type-VpcConfig-Subnets                     .html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_VpcConfig.html#SageMaker-Type-VpcConfig-Subnets                     .html) 設定 VPC，每個都位於不同的可用區域中。如果發生停機或執行個體故障，Amazon SageMaker AI 會自動嘗試將您的執行個體分散到各個可用區域。

一般而言，在不同的可用區域中使用多個小型[執行個體類型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)託管端點，可獲得更可靠的效能。

**部署推論元件以獲得高可用性。**除了上述的執行個體編號建議之外，若要達到 99.95% 的可用性，請確定您的推論元件已設定為具有兩個以上的複本。此外，在您的受管自動擴展政策中，也將執行個體數量下限設定為兩個。

# 監控安全最佳實務
<a name="monitor-sec-best-practices"></a>

使用 [AWS Security Hub CSPM](https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html) 監控 SageMaker AI 的使用情況，因為它與安全最佳實務相關。Security Hub CSPM 使用安全控制來評估資源組態和安全標準，以協助您符合各種合規架構。如需使用 Security Hub CSPM 評估 SageMaker AI 資源的詳細資訊，請參閱 Security Hub CSPM 使用者指南中的 [Amazon SageMaker AI 控制項](https://docs.aws.amazon.com/securityhub/latest/userguide/sagemaker-controls.html)。 *AWS *

# 使用 的低延遲即時推論 AWS PrivateLink
<a name="realtime-endpoints-privatelink"></a>

 Amazon SageMaker AI 為即時推論提供低延遲，同時使用多可用區域部署維持高可用性和彈性。應用程式延遲由兩個主要元件組成：基礎架構或額外負荷延遲以及模型推論延遲。減少額外負荷延遲開啟了新的可能性，例如部署更複雜、更深入且精確的模型，或將整體應用程式分割為可擴充且可維護的微服務模組。您可以使用 AWS PrivateLink 部署，減少 SageMaker AI 即時推論的延遲。透過 AWS PrivateLink，您可以使用界面 VPC 端點，以可擴展的方式從虛擬私有雲端 (VPC) 私下存取所有 SageMaker API 操作。介面 VPC 端點是包含私有 IP 地址的彈性網路介面，用於所有 SageMaker API 呼叫的彈性網路介面。

根據預設，具有 2 個或更多執行個體的 SageMaker AI 端點會部署在至少 2 個 AWS 可用區域 (AZ) 中，而任何 AZ 中的執行個體都可以處理調用。這會導致一個或多個 AZ “跳轉” 造成額外負荷延遲。其 `privateDNSEnabled` 選項設定為 `true` 的 AWS PrivateLink 部署可藉由達成兩個目標來減輕此問題：
+ 它會將所有推論流量保留在您的 VPC 中。
+ 它會在使用 SageMaker 執行時期時，將調用流量保持在與產生調用流量的用戶端相同的可用區域中。這樣可以避免 AZ 之間的 “跳轉”，從而減少額外負荷延遲。

本指南的以下各節示範如何透過 AWS PrivateLink 部署降低即時推論的延遲。

**Topics**
+ [部署 AWS PrivateLink](#deploy-privatelink)
+ [在 VPC 雲端中部署 SageMaker AI 端點](#deploy-sagemaker-inference-endpoint)
+ [調用 SageMaker AI 端點。](#invoke-sagemaker-inference-endpoint)

## 部署 AWS PrivateLink
<a name="deploy-privatelink"></a>

若要部署 AWS PrivateLink，請先為連線至 SageMaker AI 端點的 VPC 建立介面端點。請依照[使用介面 VPC 端點存取 AWS 服務](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)中的步驟來建立介面端點。建立端點時，請在主控台介面中選取下列設定：
+ 選擇**其他設定**下的**啟用 DNS 名稱**核取方塊
+ 選取要與 SageMaker AI 端點搭配使用的適當安全群組和子網路。

此外，請確定 VPC 已開啟 DNS 主機名稱。如需如何變更 VPC DNS 屬性的詳細資訊，請參閱[檢視和更新 VPC 的 DNS 屬性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)。

## 在 VPC 雲端中部署 SageMaker AI 端點
<a name="deploy-sagemaker-inference-endpoint"></a>

若要達到低額外負荷延遲，請使用您在部署 AWS PrivateLink時指定的相同子網路建立 SageMaker AI 端點。這些子網路應該符合用戶端應用程式的 AZ，如下列程式碼片段所示。

```
model_name = '<the-name-of-your-model>'

vpc = 'vpc-0123456789abcdef0'
subnet_a = 'subnet-0123456789abcdef0'
subnet_b = 'subnet-0123456789abcdef1'
security_group = 'sg-0123456789abcdef0'

create_model_response = sagemaker_client.create_model(
    ModelName = model_name,
    ExecutionRoleArn = sagemaker_role,
    PrimaryContainer = {
        'Image': container,
        'ModelDataUrl': model_url
    },
    VpcConfig = {
        'SecurityGroupIds': [security_group],
        'Subnets': [subnet_a, subnet_b],
    },
)
```

上述程式碼片段假設您已遵循中[開始之前](realtime-endpoints-deploy-models.md#deploy-prereqs)的步驟。

## 調用 SageMaker AI 端點。
<a name="invoke-sagemaker-inference-endpoint"></a>

最後，指定 SageMaker 執行時期用戶端，並調用 SageMaker AI 端點，如下列程式碼片段所示。

```
endpoint_name = '<endpoint-name>'
  
runtime_client = boto3.client('sagemaker-runtime')
response = runtime_client.invoke_endpoint(EndpointName=endpoint_name, 
                                          ContentType='text/csv', 
                                          Body=payload)
```

如需有關端點組態的詳細資訊，請參閱[部署用於即時推論的模型](realtime-endpoints-deploy-models.md)。

# 將推論工作負載從 x86 遷移至 AWS Graviton
<a name="realtime-endpoints-graviton"></a>

 [AWS Graviton](https://aws.amazon.com/ec2/graviton/) 是由 設計的一系列 ARM 型處理器 AWS。它們比基於 x86 的處理器更具能源效率，並且具有令人信服的性價比。Amazon SageMaker AI 提供以 Graviton 為基礎的執行個體，因此您可以利用這些進階處理器來滿足您的推論需求。

 您可以使用 ARM 相容容器映像或多架構容器映像，將現有的推論工作負載從 x86 型執行個體遷移到 Graviton 型的執行個體。本指南假設您使用的是 [AWS 深度學習容器映像檔](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)，或是您自己的 ARM 相容容器映像檔。如需建立自己映像的詳細資訊，請勾選[建立您的映像](https://github.com/aws/deep-learning-containers#building-your-image)。

 在高層級上，將推論工作負載從 x86 型執行個體遷移到 Graviton 型執行個體需要四個步驟：

1. 將容器映像推送至受管容器登錄檔 Amazon Elastic Container Registry (Amazon ECR) AWS 。

1. 建立 SageMaker AI 模型。

1. 建立端點組態。

1. 建立端點。

 本指南的以下各節提供有關上述步驟的更多詳細資訊。以您自己的資訊取代程式碼範例中的*使用者預留位置文字*。

**Topics**
+ [將容器映像推送到 Amazon ECR](#realtime-endpoints-graviton-ecr)
+ [建立 SageMaker AI 模型](#realtime-endpoints-graviton-model)
+ [建立一個端點組態](#realtime-endpoints-graviton-epc)
+ [建立端點](#realtime-endpoints-graviton-ep)

## 將容器映像推送到 Amazon ECR
<a name="realtime-endpoints-graviton-ecr"></a>

 您可以使用 將容器映像推送至 Amazon ECR AWS CLI。使用 ARM 相容映像時，請確認其支援 ARM 架構：

```
docker inspect deep-learning-container-uri
```

 回應 `"Architecture": "arm64"` 表示影像支援 ARM 架構。您可以使用 `docker push` 命令將它推送到 Amazon ECR。如需詳細資訊，請查看[推送 Docker 映像檔](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)。

 多架構容器映像基本上是一組支援不同架構或作業系統的容器映像檔，您可以透過通用資訊清單名稱來參考這些映像檔。如果您使用的是多架構容器映像，則除了將映像推送到 Amazon ECR 之外，您還必須將資訊清單推送到 Amazon ECR。資訊清單允許巢狀包含其他影像資訊清單，其中每個包含的映像檔都由架構、作業系統和其他平台屬性指定。下列範例會建立資訊清單，並將其推送至 Amazon ECR。

1. 建立資訊清單清單。

   ```
   docker manifest create aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \
     aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:amd64 \
   	aws-account-id.dkr.ecr.aws-account-id.amazonaws.com/my-repository:arm64 \
   ```

1.  註釋資訊清單，以便它正確識別哪個映像適用於哪個體系結構。

   ```
   docker manifest annotate --arch arm64 aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository \
     aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository:arm64
   ```

1. 推送清單檔案。

   ```
   docker manifest push aws-account-id.dkr.ecr.aws-region.amazonaws.com/my-repository
   ```

 如需建立和推送資訊清單至 Amazon ECR 的詳細資訊，請參閱為 Amazon ECR [簡介和[推](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-multi-architecture-image.html)送資訊清單的詳細資訊，請參閱適用於 Amazon ECR 的多架構映像](https://aws.amazon.com/blogs/containers/introducing-multi-architecture-container-images-for-amazon-ecr/)簡介。

## 建立 SageMaker AI 模型
<a name="realtime-endpoints-graviton-model"></a>

 透過呼叫 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) API 建立 SageMaker AI 模型。

```
import boto3
from sagemaker import get_execution_role


aws_region = "aws-region"
sagemaker_client = boto3.client("sagemaker", region_name=aws_region)

role = get_execution_role()

sagemaker_client.create_model(
    ModelName = "model-name",
    PrimaryContainer = {
        "Image": "deep-learning-container-uri",
        "ModelDataUrl": "model-s3-location",
        "Environment": {
            "SAGEMAKER_PROGRAM": "inference.py",
            "SAGEMAKER_SUBMIT_DIRECTORY": "inference-script-s3-location",
            "SAGEMAKER_CONTAINER_LOG_LEVEL": "20",
            "SAGEMAKER_REGION": aws_region,
        }
    },
    ExecutionRoleArn = role
)
```

## 建立一個端點組態
<a name="realtime-endpoints-graviton-epc"></a>

 呼叫 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) API 來建立端點組態。如需以 Graviton 為基礎的執行個體清單，請勾選[運算最佳化執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/compute-optimized-instances.html)。

```
sagemaker_client.create_endpoint_config(
    EndpointConfigName = "endpoint-config-name",
    ProductionVariants = [
        {
            "VariantName": "variant-name",
            "ModelName": "model-name",
            "InitialInstanceCount": 1,
            "InstanceType": "ml.c7g.xlarge", # Graviton-based instance
       }
    ]
)
```

## 建立端點
<a name="realtime-endpoints-graviton-ep"></a>

 透過呼叫 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) API 建立端點。

```
sagemaker_client.create_endpoint(
    EndpointName = "endpoint-name",
    EndpointConfigName = "endpoint-config-name"
)
```

# 疑難排解 Amazon SageMaker AI 型部署
<a name="deploy-model-troubleshoot"></a>

如果您在 Amazon SageMaker AI 部署機器學習模型時遇到問題，請參閱以下指引。

**Topics**
+ [在作用中的 CPU 計數中偵測錯誤](#deploy-model-troubleshoot-jvms)
+ [部署 model.tar.gz 檔案時發生的問題](#deploy-model-troubleshoot-tarballs)
+ [主要容器未通過 ping 健康檢查](#deploy-model-troubleshoot-ping)

## 在作用中的 CPU 計數中偵測錯誤
<a name="deploy-model-troubleshoot-jvms"></a>

如果您使用 Linux Java 虛擬機器 (JVM) 部署 SageMaker AI 模型，您可能會遇到防止您使用可用 CPU 資源的偵測錯誤。這個問題影響支援 Java 8 和 Java 9 的一些 JVM，以及支援 Java 10 和 Java 11 的大多數 JVM。這些 JVM 實作的機制可在 Docker 容器中 (更常見的是在 Linux `taskset` 命令或控制群組 (cgroups)) 中執行模型時偵測和處理 CPU 計數和最大可用記憶體。SageMaker AI 部署會利用 JVM 用來管理這些資源的一些設定。目前，這會導致容器無法正確偵測可用 CPU 數量。

SageMaker AI 不會限制對執行個體上的 CPU 存取。不過，在更多 CPU 可供容器使用時，JVM 可能會偵測到 CPU 計數為 `1`。因此，JVM 會將所有內部設定的執行方式調整為如同僅有 `1` 個 CPU 核心可供使用的情況。這些設定會影響廢棄項目收集、鎖定、編譯器執行緒和其他 JVM 內部函式，而對容器的並行、輸送量和延遲產生負面影響。

如需偵測錯誤的範例，在為使用基於 Java8\$1191 的 JVM 部署之 SageMaker AI 設定的容器中，且該容器在執行個體上擁有四個可用的 CPU，請執行以下命令來啟動 JVM：

```
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
```

這麼做會產生以下輸出：

```
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: determined by OSContainer: 1
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
```

受此問題影響的許多 JVM 可選擇停用這種行為，並重新建立與執行個體上所有 CPU 的完整存取權。停用不需要的行為，並建立與所有執行個體 CPU 的完整存取權，方法是在啟動 Java 應用程式時納入 `-XX:-UseContainerSupport` 參數。例如，執行 `java` 命令來啟動 JVM，如下所示：

```
java -XX:-UseContainerSupport -XX:+UnlockDiagnosticVMOptions -XX:+PrintActiveCpus -version
```

這麼做會產生以下輸出：

```
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
active_processor_count: sched_getaffinity processor count: 4
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
```

檢查容器中所用的 JVM 是否支援 `-XX:-UseContainerSupport` 參數。如果支援，請在啟動 JVM 時一律傳遞此參數。這可讓您存取執行個體中的所有 CPU。

您也可能在 SageMaker AI 容器中間接使用 JVM 時遇到此問題。例如，使用 JVM 來支援 SparkML Scala。`-XX:-UseContainerSupport` 參數也會影響 Java `Runtime.getRuntime().availableProcessors()` API `` 傳回的輸出。

## 部署 model.tar.gz 檔案時發生的問題
<a name="deploy-model-troubleshoot-tarballs"></a>

當您使用 `model.tar.gz` 檔案部署模型時，模型壓縮包不應包含任何符號連結。符號連結會導致模型建立失敗。此外，建議您不要在 tarball 中包含任何不必要的檔案。

## 主要容器未通過 ping 健康檢查
<a name="deploy-model-troubleshoot-ping"></a>

 如果您的主要容器未通過 ping 健康狀態檢查並顯示下列錯誤訊息，表示您的容器或指令碼發生問題：

```
The primary container for production variant beta did not pass the ping health check. Please check CloudWatch Logs logs for this endpoint.
```

 若要疑難排解此問題，您應該檢查有問題端點的 CloudWatch Logs 記錄，以查看是否有任何錯誤或問題阻止容器回應 `/ping` 或 `/invocations`。記錄檔可能會提供可能指向問題的錯誤訊息。確定錯誤和失敗原因後，您應該解決錯誤。

 在建立端點之前，最好先在本機測試模型部署。
+  使用 SageMaker SDK 中的本機模式，透過將模型部署到本機端點來模擬託管環境。如需詳細資訊，請參閱[本機模式](https://sagemaker.readthedocs.io/en/stable/overview.html#local-mode)。
+  使用普通 docker 命令來測試容器對 /ping 和 /invocations 的回應。如需詳細資訊，請參閱 [local\$1test](https://github.com/aws/amazon-sagemaker-examples/tree/main/advanced_functionality/scikit_bring_your_own/container/local_test)。

# 推論成本最佳化最佳實務
<a name="inference-cost-optimization"></a>

下列內容提供最佳化端點成本的技術和考量事項。您可以使用這些建議來最佳化新端點和現有端點的成本。

## 最佳實務
<a name="inference-cost-optimization-list"></a>

若要最佳化 SageMaker AI 推論成本，請遵循下列最佳實務。

### 選擇最適合該任務的推論選項。
<a name="collapsible-1"></a>

SageMaker AI 提供 4 種不同的推論選項，可為該任務提供最佳的推論選項。您可以選擇最符合您工作負載的推論選項，以節省成本。
+ 針對具有可預測流量模式的低延遲工作負載使用[即時推論](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html)，這些模式需要具有一致的延遲特性且一律可用。您需要支付使用該執行個體的費用。
+ 對具有同步流量模式並可接受 p99 延遲變化的同步工作負載使用[無伺服器推論](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html)。無伺服器推論會自動擴展以符合您的工作負載流量，因此您無需支付任何閒置資源的費用。您僅需按照推論請求期間支付費用。相同的模型和容器可與即時和無伺服器推論搭配使用，因此您可以在需求變更時在這兩種模式之間切換。
+ 對處理高達 1 GB 資料 (例如文字語料庫、映像、影片和音訊) 且對延遲不敏感且對成本敏感的非同步工作負載使用[非同步推論](https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference.html)。透過非同步推論，您可以指定固定數量的執行個體以獲得最佳處理速率，而不是針對尖峰進行佈建來控制成本。您還可以縮小到零以節省額外成本。
+ 對於離線發生的大量資料集進行所需推理 (即，不需要持續端點) 的工作負載 ，請使用[批次推論](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html)。您需要支付批次推論任務期間的執行個體費用。

### 選擇 SageMaker AI Savings Plan。
<a name="collapsible-2"></a>
+ 如果您在所有 SageMaker AI 服務中都具有一致的使用層級，則可以選擇加入 SageMaker AI Savings Plan，以協助降低高達 64% 的成本。
+ [Amazon SageMaker AI Savings Plans](https://aws.amazon.com/savingsplans/ml-pricing/) 為 Amazon SageMaker AI 提供彈性的定價模式，以換取一年或三年期限內一致使用量 (以每小時美元計算) 的承諾。這些計劃會自動套用至符合條件的 SageMaker AI ML 執行個體使用情況，包括 SageMaker Studio Classic Notebook、SageMaker On-Demand Notebook、SageMaker Processing、SageMaker Data Wrangler、SageMaker Training、SageMaker Real-time Inference 和 SageMaker Batch Transform，無論執行個體系列、大小或區域為何。例如，您可以隨時將在推理工作負載的使用情況從美國東部 (俄亥俄州) 執行的 CPU ml.c5.xlarge 執行個體變更為美國西部 (奧勒岡州) 的 ML.inf1 執行個體，並自動繼續支付 Savings Plans 價格。

### 最佳化您的模型以便更好地執行。
<a name="collapsible-3"></a>
+ 未最佳化的模型可能導致更長的執行時間並使用更多資源。您可以選擇使用更多或更大的執行個體來改善效能；然而，這會導致更高的成本。
+ 透過將模型最佳化以提高效能，您可以使用較少或更小的執行個體來降低成本，同時保持相同或更好的效能特性。您可以將 [SageMaker Neo](https://aws.amazon.com/sagemaker/neo/) 與 SageMaker AI 推論搭配使用，以自動最佳化模型。如需詳細資訊和範例，請參閱[使用 SageMaker Neo 最佳化模型效能](neo.md)。

### 使用最佳的執行個體類型和大小進行即時推論。
<a name="collapsible-4"></a>
+ SageMaker Inference 有超過 70 種執行個體類型和大小，可用於部署 ML 模型，包括針對 ML 最佳化的 AWS Inferentia 和 Graviton 晶片組。為您的模型選擇正確的執行個體，有助於確保您以最低的模型成本擁有效能最高的執行個體。
+ 透過使用 [Inference Recommender](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-recommender.html)，您可以快速比較不同的執行個體，以瞭解模型的效能和成本。有了這些結果，您就可以選擇部署具有最佳投資報酬率的執行個體。

### 將多個端點合併為單一端點以進行即時推論，藉此提高效率和成本。
<a name="collapsible-5"></a>
+ 當您部署多個端點時，成本可能會快速增加，尤其是在端點未完全利用基礎執行個體的情況下。若要瞭解執行個體是否未充分利用，請在 Amazon CloudWatch 中查看執行個體的使用率指標 (CPU、GPU 等)。如果您有多個這些端點，則可以將這些多個端點上的模型或容器合併為單一端點。
+ 使用[多模型端點](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-model-endpoints.html) (MME) 或[多容器端點](https://docs.aws.amazon.com/sagemaker/latest/dg/multi-container-endpoints.html) (MCE)，您可以在單一端點中部署多個機器學習 (ML) 模型或容器，以在多個模型或容器之間共用執行個體，並提高投資報酬率。若要進一步了解，請參閱 AWS Machine Learning 部落格》中的使用 [Amazon SageMaker AI 多模型端點或使用 Amazon SageMaker AI 多容器端點在單一執行個體上部署多個服務容器，以節省推論成本](https://aws.amazon.com/blogs/machine-learning/save-on-inference-costs-by-using-amazon-sagemaker-multi-model-endpoints/)。 [ Amazon SageMaker ](https://aws.amazon.com/blogs/machine-learning/deploy-multiple-serving-containers-on-a-single-instance-using-amazon-sagemaker-multi-container-endpoints/) 

### 設定自動擴展以符合您的工作負載需求，以進行即時和非同步推論。
<a name="collapsible-6"></a>
+ 若無自動調度資源，您需要針對峰值流量或無法使用風險模型進行佈建。除非您模型的流量全天穩定，否則會有過多的未使用容量。這會導致低使用率和資源浪費。
+ [自動擴展](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html)是一項立即可用的功能，可監控您的工作負載並動態調整容量，以盡可能低的成本維持穩定且可預測的效能。當工作負載增加時，自動調整規模功能會讓更多的執行個體上線。當工作負載減少時，自動擴展會移除不必要的執行個體，協助您降低運算成本。若要進一步了解，請參閱 AWS Machine Learning部落格中的在 [Amazon SageMaker AI 中設定自動擴展推論端點](https://aws.amazon.com/blogs/machine-learning/configuring-autoscaling-inference-endpoints-in-amazon-sagemaker/)。

# 將 GPU 驅動程式升級期間中斷的最佳做法降至最低
<a name="inference-gpu-drivers"></a>

SageMaker AI 模型部署會隨著時間的推移升級機器學習 (ML) 執行個體上的 GPU 驅動程式，以提供即時、Batch 和非同步推論選項，讓客戶能夠存取驅動程式提供者的改進功能。您可以在下方看到每個推論選項支援的 GPU 版本。不同的驅動程式版本可能會變更模型與 GPU 互動的方式。以下是一些策略，可協助您瞭解應用程式如何搭配不同的驅動程式版本運作。

## 目前版本和支援的執行個體系列
<a name="inference-gpu-drivers-versions"></a>

Amazon SageMaker AI 推論支援下列驅動程式和執行個體系列：

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/sagemaker/latest/dg/inference-gpu-drivers.html)

## 使用 GPU 功能疑難排解模型容器
<a name="inference-gpu-drivers-troubleshoot"></a>

如果您在執行 GPU 工作負載時遇到問題，請參閱下列指引：

### GPU 卡檢測失敗或 NVIDIA 初始化錯誤
<a name="collapsible-section-0"></a>

從 Docker 容器中執行 `nvidia-smi` (NVIDIA 系統管理介面) 命令。如果 NVIDIA 系統管理介面偵測到 GPU 偵測錯誤或 NVIDIA 初始化錯誤，它會傳回下列錯誤訊息：

```
Failed to initialize NVML: Driver/library version mismatch
```

根據您的使用案例，請遵循下列最佳作法來解決失敗或錯誤：
+ 請遵循[如果您攜帶自己的 (BYO) 模型容器](#collapsible-byoc)下拉式清單中描述的最佳作法建議。
+ 請遵循[如果您使用 CUDA 相容性層](#collapsible-cuda-compat)下拉式清單中描述的最佳作法建議。

如需詳細資訊，請參閱 [NVIDIA 網站上的 NVIDIA 系統管理介面頁面](https://developer.nvidia.com/nvidia-system-management-interface)。

### `CannotStartContainerError`
<a name="collapsible-section-cannot-start-container"></a>

 如果您的 GPU 執行個體使用的 NVIDIA 驅動程式版本與 Docker 容器中的 CUDA 版本不相容，則部署端點將會失敗，並顯示下列錯誤訊息：

```
 Failure reason CannotStartContainerError. Please ensure the model container for variant <variant_name> starts correctly when invoked with 'docker run <image> serve'
```

根據您的使用案例，請遵循下列最佳作法來解決失敗或錯誤：
+ 請遵循[我的容器依賴的驅動程序大於機器學習 (ML) GPU 執行個體上的版本](#collapsible-driver-dependency-higher)下拉式清單中描述的最佳作法建議。
+ 請遵循[如果您使用 CUDA 相容性層](#collapsible-cuda-compat)下拉式清單中描述的最佳作法建議。

## 使用不相符驅動程式版本的最佳實務
<a name="inference-gpu-drivers-cuda-toolkit-updates"></a>

以下提供如何更新 GPU 驅動程式的資訊：

### 我的容器依賴的驅動程序低於機器學習 (ML) GPU 執行個體上的版本
<a name="collapsible-driver-dependency-lower"></a>

無需採取任何動作。NVIDIA 提供向後相容性。

### 我的容器依賴的驅動程序大於機器學習 (ML) GPU 執行個體上的版本
<a name="collapsible-driver-dependency-higher"></a>

如果這是一個較小的版本差異，則不需要採取任何行動。NVIDIA 提供次要版本轉發相容性。

如果是主要版本差異，則需要安裝 CUDA 相容性 Package。請參閱 NVIDIA 說明文件中的 [CUDA 相容性](https://docs.nvidia.com/deploy/cuda-compatibility/index.html) Package 件。

**重要**  
CUDA 相容性套件無法向下相容，因此如果執行個體上的驅動程式版本大於 CUDA 相容性套件版本，則需要停用此套件。

### 如果您攜帶自己的 (BYO) 模型容器
<a name="collapsible-byoc"></a>

確保映像中沒有捆綁任何 NVIDIA 驅動程序包，這可能會導致與主機 NVIDIA 驅動程序版本發生衝突。

### 如果您使用 CUDA 相容性層
<a name="collapsible-cuda-compat"></a>

要驗證平台 Nvidia 驅動程序版本是否支援模型容器中安裝的 CUDA 相容性 Package 版本，請參閱 [CUDA](https://docs.nvidia.com/deploy/cuda-compatibility/index.html#use-the-right-compat-package) 文件。如果平台 Nvidia 驅動程式版本不支援 CUDA 相容性 Package 版本，您可以從模型容器映像中停用或移除 CUDA 相容性 Package。如果最新的 Nvidia 驅動程式版本支援 CUDA 相容性程式庫版本，我們建議您根據檢測到的 Nvidia 驅動程式版本啟用 CUDA 相容性套件，以便未來可以相容，方法為透過下面的程式碼片段新增到容器啟動 shell 指令碼中 (在 `ENTRYPOINT` 指令碼)。

該腳本示範如何根據模型容器部署的主機上檢測到的 Nvidia 驅動程序版本動態切換 CUDA 相容性 Package 的使用。當 SageMaker 發行較新的 Nvidia 驅動程式版本時，如果新驅動程式原生支援 CUDA 應用程式，則可以自動關閉已安裝的 CUDA 相容性 Package 件。

```
#!/bin/bash

verlt() {
    [ "$1" = "$2" ] && return 1 || [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
}

if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then
    CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 | cut -d'.' -f 3-)
    echo "CUDA compat package should be installed for NVIDIA driver smaller than ${CUDA_COMPAT_MAX_DRIVER_VERSION}"
    NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true)
    echo "Current installed NVIDIA driver version is ${NVIDIA_DRIVER_VERSION}"
    if verlt $NVIDIA_DRIVER_VERSION $CUDA_COMPAT_MAX_DRIVER_VERSION; then
        echo "Adding CUDA compat to LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
        echo $LD_LIBRARY_PATH
    else
        echo "Skipping CUDA compat setup as newer NVIDIA driver is installed"
    fi
else
    echo "Skipping CUDA compat setup as package not found"
fi
```

# 使用 Amazon SageMaker AI 實現端點安全和健康狀態的最佳實務
<a name="best-practice-endpoint-security"></a>

為了解決最新的安全問題，Amazon SageMaker AI 會自動將端點修補至最新且最安全的軟體。但是，如果您錯誤地修改了端點相依性，Amazon SageMaker AI 無法自動修補端點或取代運作狀態不良的執行個體。若要確保您的端點符合自動更新的資格，請套用下列最佳做法。

## 請勿在端點使用資源時刪除資源
<a name="dont-delete-resources-in-use"></a>

如果您有使用下列任何資源的端點，請避免刪除這些資源：
+ 您在 Amazon SageMaker API 中使用 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) 動作建立的模型定義。
+ 您為 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-ModelDataUrl](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-ModelDataUrl)參數指定的任何模型成品。
+ 您為 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ExecutionRoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-ExecutionRoleArn) 參數指定的 IAM 角色和許可。
**提醒**  
在端點使用的模型定義中，確保您指定的 IAM 角色具有正確的許可。如需有關 Amazon SageMaker AI 端點必要許可權的詳細資訊，請參閱[CreateModel API：執行角色許可](sagemaker-roles.md#sagemaker-roles-createmodel-perms)。
+ 您為[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-Image](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ContainerDefinition.html#sagemaker-Type-ContainerDefinition-Image)參數指定的推論影像 (如果您使用自己的推論程式碼)。
**提醒**  
如果您使用私有登錄功能，請確保只要您使用該端點，Amazon SageMaker AI 就可以存取私有登錄。
+ 您為.[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-VpcConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html#sagemaker-CreateModel-request-VpcConfig) 參數指定的 Amazon VPC 子網路和安全群組。
+ 您可以使用 [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) API 建立端點組態。
+ 您在端點組態中指定的任何 KMS 金鑰或 Amazon S3 儲存貯體。
**提醒**  
請確定您未停用這些 KMS 金鑰。

## 請遵循下列程序來更新您的端點
<a name="procedures-to-update-endpoint"></a>

當您更新 Amazon SageMaker AI 端點時，請使用符合您需求的下列任何程序。

**更新模型定義設定**

1. 使用 Amazon SageMaker API 中的 CreateModel 動作，以您更新的設定建立新的定義。

1. 建立使用新模型定義的新端點組態。若要這麼做，請使用 Amazon SageMaker API 中的 CreateEndpointConfig 動作。

1. 使用新的端點組態更新端點，以便更新的模型定義設定生效。

1. (選用) 如果您未將舊端點組態與任何其他端點搭配使用，請刪除該設定。如果您未將資源與任何其他端點搭配使用，也可以刪除在模型定義中指定的資源。這些資源包含 Amazon S3 中的模型成品和推論影像。

**若要更新您的端點組態**

1. 使用更新的設定建立新的端點組態。

1. 使用新設定更新端點，以便更新生效。

1. (選用) 如果您未將舊端點組態與任何其他端點搭配使用，請刪除該設定。如果您未將資源與任何其他端點搭配使用，也可以刪除在模型定義中指定的資源。這些資源包含 Amazon S3 中的模型成品和推論影像。

每當您建立新模型定義或端點組態時，建議您使用唯一的名稱。如果您要更新這些資源並保留其原始名稱，請使用下列程序。

**更新模型設定並保留原始模型名稱**

1. 刪除現有的模型定義。此時，使用模型的任何端點都會中斷，但您可以在下列步驟中修正此問題。

1. 使用更新的設定再次建立模型定義，並使用相同的模型名稱。

1. 建立使用更新模型定義的新端點組態。

1. 使用新的端點組態更新您的端點，以便更新生效。

**更新端點組態並保留原始組態名稱**

1. 刪除現有的端點組態。

1. 使用更新的設定建立新的端點組態，並使用原始名稱。

1. 使用新設定更新端點，以便更新生效。

# 更新推論容器以符合 NVIDIA 容器工具組
<a name="container-nvidia-compliance"></a>

從 1.17.4 版及更新版本開始，NVIDIA 容器工具組不再自動掛載 CUDA 相容性程式庫。此行為變更可能會影響 SageMaker AI 推論工作負載。您的 SageMaker AI 端點和批次轉換任務可能會使用與最新版 NVIDIA 容器工具組不相容的容器。為了確保工作負載符合最新需求，您可能需要更新端點或設定批次轉換任務。

## 更新 SageMaker AI 端點以確保合規性
<a name="endpoint-compliance"></a>

我們建議您更新現有的 SageMaker AI 端點，或建立支援最新預設行為的新端點。

若要確保端點與最新版的 NVIDIA 容器工具組相容，請依照下列步驟執行：

1. 如果您使用自有容器，請更新如何設定 CUDA 相容性程式庫。

1. 指定支援最新 NVIDIA 容器工具組行為的推論 Amazon Machine Image (AMI)。您可以在更新現有端點或建立新的端點時指定 AMI。

### 如果您使用自有容器，請更新 CUDA 相容性設定
<a name="cuda-compatibility"></a>

CUDA 相容性程式庫能夠向前相容。此相容性適用於比 SageMaker AI 執行個體所提供 NVIDIA 驅動程式新的任何 CUDA 工具組版本。

只有當 SageMaker AI 執行個體使用的 NVIDIA 驅動程式其版本比模型容器中的 CUDA 工具組舊時，您才必須啟用 CUDA 相容性程式庫。如果您的模型容器不需要 CUDA 相容性，可以略過此步驟。例如，如果您不打算使用比 SageMaker AI 執行個體所提供 CUDA 工具組還新的工具組，則可以略過此步驟。

由於 NVIDIA 容器工具組 1.17.4 版中引入的變更，您可以視需要明確啟用 CUDA 相容性程式庫，方法是將程式庫新增至容器中的 `LD_LIBRARY_PATH`。

我們建議您根據偵測到的 NVIDIA 驅動程式版本啟用 CUDA 相容性。若要啟用它，請將下方的程式碼片段新增至容器啟動 shell 指令碼。在 `ENTRYPOINT` 指令碼中新增此程式碼。

下列指令碼示範如何根據在為模型容器部署的主機上偵測到的 NVIDIA 驅動程式版本動態切換 CUDA 相容性的使用。

```
#!/bin/bash

verlt() {
    [ "$1" = "$2" ] && return 1 || [ "$1" = "$(echo -e "$1\n$2" | sort -V | head -n1)" ]
}

if [ -f /usr/local/cuda/compat/libcuda.so.1 ]; then
    CUDA_COMPAT_MAX_DRIVER_VERSION=$(readlink /usr/local/cuda/compat/libcuda.so.1 | cut -d'.' -f 3-)
    echo "CUDA compat package should be installed for NVIDIA driver smaller than ${CUDA_COMPAT_MAX_DRIVER_VERSION}"
    NVIDIA_DRIVER_VERSION=$(sed -n 's/^NVRM.*Kernel Module *\([0-9.]*\).*$/\1/p' /proc/driver/nvidia/version 2>/dev/null || true)
    echo "Current installed NVIDIA driver version is ${NVIDIA_DRIVER_VERSION}"
    if verlt $NVIDIA_DRIVER_VERSION $CUDA_COMPAT_MAX_DRIVER_VERSION; then
        echo "Adding CUDA compat to LD_LIBRARY_PATH"
        export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH
        echo $LD_LIBRARY_PATH
    else
        echo "Skipping CUDA compat setup as newer NVIDIA driver is installed"
    fi
else
    echo "Skipping CUDA compat setup as package not found"
fi
```

### 指定符合 NVIDIA 容器工具組的推論 AMI
<a name="specify-inference-ami"></a>

在 `ProductionVariant` 資料類型的 `InferenceAmiVersion` 參數中，您可以選取 SageMaker AI 端點的 AMI。每個支援的 AMI 都是預先設定的映像。每個映像都是由 AWS 設定一組軟體和驅動程式版本。

根據預設，SageMaker AI AMI 允許舊版行為。它們會自動在容器中掛載 CUDA 相容性程式庫。若要讓端點使用新行為，您必須指定針對新行為設定的推論 AMI 版本。

下列推論 AMI 版本目前遵循新行為。它們不會自動掛載 CUDA 相容性程式庫。

al2-ami-sagemaker-inference-gpu-2-1  
+ NVIDIA 驅動程式版本：535.54.03
+ CUDA 版本：12.2

al2-ami-sagemaker-inference-gpu-3-1  
+ NVIDIA 驅動程式版本：550.144.01
+ CUDA 版本：12.4

### 更新現有端點
<a name="update-existing-endpoint"></a>

使用下列範例來更新現有的端點。此範例使用推論 AMI 版本，可停用 CUDA 相容性程式庫的自動掛載。

```
ENDPOINT_NAME="<endpoint name>"
INFERENCE_AMI_VERSION="al2-ami-sagemaker-inference-gpu-3-1"

# Obtaining current endpoint configuration
CURRENT_ENDPOINT_CFG_NAME=$(aws sagemaker describe-endpoint --endpoint-name "$ENDPOINT_NAME" --query "EndpointConfigName" --output text)
NEW_ENDPOINT_CFG_NAME="${CURRENT_ENDPOINT_CFG_NAME}new"

# Copying Endpoint Configuration with AMI version specified
aws sagemaker describe-endpoint-config \
    --endpoint-config-name ${CURRENT_ENDPOINT_CFG_NAME} \
    --output json | \
jq "del(.EndpointConfigArn, .CreationTime) | . + {
    EndpointConfigName: \"${NEW_ENDPOINT_CFG_NAME}\",
    ProductionVariants: (.ProductionVariants | map(.InferenceAmiVersion = \"${INFERENCE_AMI_VERSION}\"))
}" > /tmp/new_endpoint_config.json

# Make sure all fields in the new endpoint config look as expected
cat /tmp/new_endpoint_config.json

# Creating new endpoint config
aws sagemaker create-endpoint-config \
   --cli-input-json file:///tmp/new_endpoint_config.json
    
# Updating the endpoint
aws sagemaker update-endpoint \
    --endpoint-name "$ENDPOINT_NAME" \
    --endpoint-config-name "$NEW_ENDPOINT_CFG_NAME" \
    --retain-all-variant-properties
```

### 建立新的端點
<a name="create-new-endpoint"></a>

使用以下範例建立新端點。此範例使用推論 AMI 版本，可停用 CUDA 相容性程式庫的自動掛載。

```
INFERENCE_AMI_VERSION="al2-ami-sagemaker-inference-gpu-3-1"

aws sagemakercreate-endpoint-config \
 --endpoint-config-name "<endpoint_config>" \
 --production-variants '[{ \
    ....
    "InferenceAmiVersion":  "${INFERENCE_AMI_VERSION}", \
    ...
    "}]'

aws sagemaker create-endpoint \
--endpoint-name "<endpoint_name>" \
--endpoint-config-name "<endpoint_config>"
```

## 執行合規批次轉換任務
<a name="batch-compliance"></a>

*批次轉換*是推論選項，最適合離線處理大量資料的請求。若要建立批次轉換任務，您可以使用 `CreateTransformJob` API 動作。如需詳細資訊，請參閱[使用 Amazon SageMaker AI 進行批次轉換以進行推論](batch-transform.md)。

NVIDIA 容器工具組的變更行為會影響批次轉換任務。若要執行符合 NVIDIA 容器工具組需求的批次轉換，請執行以下操作：

1. 如果您想要透過您已使用自有容器的模型執行批次轉換，請先更新容器以取得 CUDA 相容性。若要更新它，請遵循 [如果您使用自有容器，請更新 CUDA 相容性設定](#cuda-compatibility) 中的程序。

1. 使用 `CreateTransformJob` API 動作來建立批次轉換任務。在您的請求中，將 `SAGEMAKER_CUDA_COMPAT_DISABLED` 環境變數設定為 `true`。此參數會指示容器不要自動掛載 CUDA 相容性程式庫。

   例如，當您使用 建立批次轉換任務時 AWS CLI，您可以使用 `--environment` 參數設定環境變數：

   ```
   aws sagemaker create-transform-job \
       --environment '{"SAGEMAKER_CUDA_COMPAT_DISABLED": "true"}'\
       . . .
   ```