

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 微调策管中心模型
<a name="jumpstart-curated-hubs-fine-tune"></a>

在您的私有策管模型中心中，您可以使用模型参考运行微调训练作业。模型引用指向 SageMaker AI 公共中心中公开可用的 JumpStart 模型，但您可以根据自己的数据针对您的特定用例对模型进行微调。微调作业完成后，您可以访问模型权重，然后可以使用这些权重或将其部署到端点。

使用 Pyth SageMaker on SDK，只需几行代码即可对精心策划的中心模型进行微调。有关微调公开可用 JumpStart模型的更多一般信息，请参阅[用于微调的基础模型和超参数](jumpstart-foundation-models-fine-tuning.md)。

## 先决条件
<a name="jumpstart-curated-hubs-fine-tune-prereqs"></a>

要微调精选中心中的 JumpStart 模型引用，请执行以下操作：

1. 确保您的用户的 IAM 角色附加了 SageMaker AI `TrainHubModel` 权限。有关更多信息，请参阅《Amazon IAM 用户指南》**中的[添加和移除 IAM 身份权限](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

   您应将下列示例策略附加到用户的 IAM 角色。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": "sagemaker:TrainHubModel",
               "Resource": "arn:aws:sagemaker:*:{{111122223333}}:hub/*"
           }
       ]
   }
   ```

------
**注意**  
如果您跨多个账户共享策管中心，并且中心内容归其他账户所有，请确保您的 `HubContent`（模型参考资源）具有基于资源的 IAM 策略，另外向请求的账户授予 `TrainHubModel` 权限，如以下示例所示。  

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "AllowCrossAccountSageMakerAccess",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::{{111122223333}}:root"
               },
               "Action": [
                   "sagemaker:TrainHubModel"
               ],
               "Resource": [
                   "{{arn:aws:sagemaker:*:111122223333:hub/*}}"
               ]
           }
       ]
   }
   ```

1. 拥有一个私人策划中心，其中包含对要微调的 JumpStart 模型的模型引用。有关创建私有中心的更多信息，请参阅 [创建私有模型中心](jumpstart-curated-hubs-admin-guide-create.md)。要了解如何向您的私有中心添加公开可用的 JumpStart 模型，请参阅[将模型添加到私有中心](jumpstart-curated-hubs-admin-guide-add-models.md)。
**注意**  
您选择的 JumpStart 模型应该是可微调的。您可以通过查看[内置算法与预训练模型表](https://sagemaker.readthedocs.io/en/stable/doc_utils/pretrainedmodels.html)来验证模型是否可微调。

1. 有一个要用于微调该模型的训练数据集。数据集应采用适用于您希望微调的模型的训练格式。

## 微调策管中心模型参考
<a name="jumpstart-curated-hubs-fine-tune-pysdk"></a>

以下过程向您展示了如何使用 Pyth SageMaker on SDK 在您的私有策划中心中微调模型引用。

1. 确保你安装了（至少`2.242.0`）最新版本的 SageMaker Python 开发工具包。有关更多信息，请参阅[使用 SageMaker Python 软件开发工具包的 2.x 版本](https://sagemaker.readthedocs.io/en/stable/v2.html)。

   ```
   !pip install --upgrade sagemaker
   ```

1. 从 SageMaker Python 软件开发工具包中导入 适用于 Python (Boto3) 的 Amazon SDK 和你需要的模块。

   ```
   import boto3
   from sagemaker.jumpstart.estimator import JumpStartEstimator
   from sagemaker.session import Session
   ```

1. 初始化 Boto3 会话、A SageMaker I 客户端和 Pyth SageMaker on SDK 会话。

   ```
   sagemaker_client = boto3.Session(region_name={{<Amazon-region>}}).client("sagemaker")
   sm_session = Session(sagemaker_client=sagemaker_client)
   ```

1. 创建`JumpStartEstimator`并提供 JumpStart 模型 ID、包含模型引用的中心名称以及您的 SageMaker Python SDK 会话。有关模型列表 IDs，请参阅 “[带有预训练模型的内置算法表](https://sagemaker.readthedocs.io/en/stable/doc_utils/pretrainedmodels.html)”。

   或者，您可以在创建估算器时指定 `instance_type` 和 `instance_count` 字段。如果您不这样做，则训练作业将使用您所使用的模型的默认实例类型和计数。

   您也可以选择指定要存储经过微调的模型权重的 Amazon S3 位置的 `output_path`。如果您未指定`output_path`，则使用账户中该区域的默认 A SageMaker I Amazon S3 存储桶，其命名格式如下：`sagemaker-{{<region>}}-{{<account-id>}}`。

   ```
   estimator = JumpStartEstimator(
       model_id="meta-textgeneration-llama-3-2-1b",
       hub_name={{<your-hub-name>}},
       sagemaker_session=sm_session, # If you don't specify an existing session, a default one is created for you
       # Optional: specify your desired instance type and count for the training job
       # instance_type = "ml.g5.2xlarge"
       # instance_count = 1
       # Optional: specify a custom S3 location to store the fine-tuned model artifacts
       # output_path: "s3://{{<output-path-for-model-artifacts>}}"
   )
   ```

1. 使用 `training` 键创建字典，其中您指定了微调数据集的位置。此示例指向 Amazon S3 URI。如果您还有其他注意事项，例如使用本地模式或多个训练数据通道，请参阅 SageMaker Python SDK 文档中的 [ JumpStartEstimator.fit ()](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#sagemaker.jumpstart.estimator.JumpStartEstimator.fit) 以了解更多信息。

   ```
   training_input = {
       "training": "s3://{{<your-fine-tuning-dataset>}}"
   }
   ```

1. 调用估算器的 `fit()` 方法并传入您的训练数据和您的 EULA 接受情况（如果适用）。
**注意**  
以下示例设置 `accept_eula=False.`。要接受 EULA，您应该手动将该值更改为 `True`。

   ```
   estimator.fit(inputs=training_input, accept_eula=False)
   ```

您的微调作业现在应该开始了。

您可以在 SageMaker AI 控制台中或使用 [ListTrainingJobs](https://docs.amazonaws.cn/sagemaker/latest/APIReference/API_ListTrainingJobs.html)API 查看训练作业，查看微调作业。

您可以在`JumpStartEstimator`对象中指定的 Amazon S3 `output_path` 上访问经过微调的模型项目（该区域的默认 SageMaker AI Amazon S3 存储桶，或者您指定的自定义 Amazon S3 路径（如果适用））。