

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

# 將 XGBoost 0.90 版升級至 1.5 版
<a name="xgboost-version-0.90"></a>

如果您正在使用 SageMaker Python SDK，若要將現有的 XGBoost 0.90 版任務升級至 1.5 版，您必須安裝 SDK 的 2.x 版，並將 XGBoost `version` 和 `framework_version` 參數變更為 1.5-1 版。如果您正在使用 Boto3，則需要更新 Docker 映像，以及一些超參數和學習目標。

**Topics**
+ [將 SageMaker AI Python SDK 1.x 版升級至 2.x 版](#upgrade-xgboost-version-0.90-sagemaker-python-sdk)
+ [將映像標籤變更為 1.5-1 版](#upgrade-xgboost-version-0.90-change-image-tag)
+ [變更適用於 Boto3 的 Docker 映像](#upgrade-xgboost-version-0.90-boto3)
+ [更新超參數和學習目標](#upgrade-xgboost-version-0.90-hyperparameters)

## 將 SageMaker AI Python SDK 1.x 版升級至 2.x 版
<a name="upgrade-xgboost-version-0.90-sagemaker-python-sdk"></a>

如果您還在使用 SageMaker Python SDK 的 1.x 版，您必須升級至 SageMaker Python SDK 的 2.x 版。有關 SageMaker Python SDK 的最新版本的資訊，請參閱[使用 SageMaker Python SDK 的版本 2.x](https://sagemaker.readthedocs.io/en/stable/v2.html)。若要安裝最新版本，請執行：

```
python -m pip install --upgrade sagemaker
```

## 將映像標籤變更為 1.5-1 版
<a name="upgrade-xgboost-version-0.90-change-image-tag"></a>

如果您正在使用 SageMaker Python SDK 和 XGBoost 內建演算法，請變更 `image_uris.retrive` 中的版本參數。

```
from sagemaker import image_uris
image_uris.retrieve(framework="xgboost", region="us-west-2", version="1.5-1")

estimator = sagemaker.estimator.Estimator(image_uri=xgboost_container, 
                                          hyperparameters=hyperparameters,
                                          role=sagemaker.get_execution_role(),
                                          instance_count=1, 
                                          instance_type='ml.m5.2xlarge', 
                                          volume_size=5, # 5 GB 
                                          output_path=output_path)
```

如果您正在使用 SageMaker Python SDK 和 XGBoost 內建演算法做為架構來執行自訂的訓練指令碼，請在 XGBoost API 中變更 `framework_version` 參數。

```
estimator = XGBoost(entry_point = "your_xgboost_abalone_script.py", 
                    framework_version='1.5-1',
                    hyperparameters=hyperparameters,
                    role=sagemaker.get_execution_role(),
                    instance_count=1,
                    instance_type='ml.m5.2xlarge',
                    output_path=output_path)
```

在 SageMaker Python SDK 1.x 版中的 `sagemaker.session.s3_input` 已重新命名為 `sagemaker.inputs.TrainingInput`。您必須使用 `sagemaker.inputs.TrainingInput`，如下列範例所示。

```
content_type = "libsvm"
train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type)
validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type)
```

 有關 SageMaker Python SDK 2.x 版更改的完整清單，請參閱[使用 SageMaker Python SDK 的版本 2.x](https://sagemaker.readthedocs.io/en/stable/v2.html)。

## 變更適用於 Boto3 的 Docker 映像
<a name="upgrade-xgboost-version-0.90-boto3"></a>

如果您正在使用 Boto3 訓練或部署您的模型，請將 Docker 映像標籤 (1 版、0.72 版、0.90-1 版或 0.90-2 版) 變更為 1.5-1 版。

```
{
    "AlgorithmSpecification":: {
        "TrainingImage": "746614075791.dkr.ecr.us-west-1.amazonaws.com/sagemaker-xgboost:1.5-1"
    }
    ...
}
```

如果您正在使用 SageMaker Python SDK 擷取登錄檔路徑，請變更 `image_uris.retrieve` 中的 `version` 參數。

```
from sagemaker import image_uris
image_uris.retrieve(framework="xgboost", region="us-west-2", version="1.5-1")
```

## 更新超參數和學習目標
<a name="upgrade-xgboost-version-0.90-hyperparameters"></a>

無訊息參數已棄用，而且在 XGBoost 1.5 及更新版本中不再可用。請改用 `verbosity`。如果您使用的是 `reg:linear` 學習目標，它也已被棄用，由 ` reg:squarederror` 取而代之。請改用 `reg:squarederror`。

```
hyperparameters = {
    "verbosity": "2",
    "objective": "reg:squarederror",
    "num_round": "50",
    ...
}

estimator = sagemaker.estimator.Estimator(image_uri=xgboost_container, 
                                          hyperparameters=hyperparameters,
                                          ...)
```