

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

# 在 Amazon Bedrock 中使用蒸馏功能自定义模型
<a name="model-distillation"></a>

*模型蒸馏*是指将知识从更大、更智能的模型（称为教师式模型）转移到更小、更快、更经济的模型（称为学生式模型）的过程。在此过程中，学生式模型在特定使用案例中的性能会得到提升。Amazon Bedrock 模型蒸馏功能使用最新的数据合成技术，从教师式模型中生成多样化、高质量的响应（称作合成数据），然后对学生式模型进行微调。

## 如何使用 Amazon 基岩模型蒸馏法
<a name="how-md-use"></a>

 要使用 Amazon Bedrock 模型蒸馏功能，请执行以下操作：

1. **选择教师模式和学生模型**-有关更多信息，请参阅[模型蒸馏的先决条件](prequisites-model-distillation.md)。

1. **准备训练数据以供提炼** — 您的训练数据是存储在`.jsonl`文件中的提示集合。Amazon Bedrock 使用输入数据从教师式模型生成响应，然后使用这些生成的响应来微调学生式模型。
   + **优化提示**-根据所需的用例设置输入提示的格式。有关更多信息，请参阅 [优化合成数据生成的输入提示](distillation-prepare-datasets.md#distillation-data-prep-prompt-optimization)。
   + **使用带标签的示例**-将带标签的输入数据准备为提示-响应对。Amazon Bedrock 可以将这些提示-响应对用作黄金示例，同时从教师式模型中生成响应。有关更多信息，请参阅 [选项 1：为数据准备提供您自己的提示](distillation-data-prep-option-1.md)。
   + **使用调用日志** — 如果您启用 CloudWatch 日志调用日志，则可以将存储在 Amazon S3 中的调用日志中的现有教师响应用作训练数据。Amazon Bedrock 中的调用日志是模型调用的详细记录。有关更多信息，请参阅 [选项 2：使用调用日志进行数据准备](distillation-data-prep-option-2.md)。

1. **创建蒸馏作业** — 这项工作为您的用例创建更小、更快、更具成本效益的模型。仅您可以访问最终的蒸馏模型。Amazon Bedrock 不会使用您的数据来训练任何其他教师式模型或学生式模型以供公众使用。有关更多信息，请参阅 [在 Amazon Bedrock 中提交模型蒸馏作业](submit-model-distillation-job.md)。有关设置按需推理的更多信息，请参阅[为自定义模型设置推理](model-customization-use.md)。

## Amazon Bedrock 模型蒸馏功能的工作原理
<a name="how-md-works"></a>

Amazon Bedrock 模型蒸馏功能是一个工作流，可自动执行创建蒸馏模型的过程。在此工作流中，Amazon Bedrock 会从教师式模型生成响应、添加数据合成技术以改善响应生成，并使用生成的响应微调学生式模型。增强后的数据集会被拆分成多个独立数据集以用于训练和验证。Amazon Bedrock 仅使用训练数据集内的数据来微调学生式模型。

在确定教师式模型和学生式模型后，可以选择您希望 Amazon Bedrock 如何为您的使用案例创建蒸馏模型。Amazon Bedrock 可以使用您提供的提示来生成教师式响应，或者您可以通过调用日志使用来自生产数据的响应。Amazon Bedrock 模型蒸馏功能使用这些响应来微调学生式模型。

**注意**  
如果 Amazon Bedrock Model Distillation 使用其专有的数据合成技术生成更高质量的教师回复，那么对教师模型的推理调用 AWS 账户 将产生额外费用。这些费用将按教师式模型的按需推理费率计算得出。数据合成技术可能会将微调数据集的大小增加到最多 15000 个提示-响应对。有关 Amazon Bedrock 费用的更多信息，请参阅 [Amazon Bedrock 定价](https://aws.amazon.com/bedrock/pricing/)。

### 使用您提供的提示创建蒸馏模型
<a name="using-prompts"></a>

Amazon Bedrock 使用您提供的输入提示生成来自教师式模型的响应。之后，Amazon Bedrock 会使用这些响应来微调您标识的学生式模型。根据您的使用案例，Amazon Bedrock 可能会添加专有数据合成技术来生成多样化的、质量更高的响应。例如，Amazon Bedrock 可能会生成类似的提示，以便从教师式模型生成更多样化的响应。或者，如果您选择以提示-响应对形式提供少量带标签的输入数据，则 Amazon Bedrock 可能会将这些提示-响应对用作黄金示例，以指导教师式模型生成类似的高质量响应。

### 使用生产数据创建蒸馏模型
<a name="using-prod-data"></a>

如果您已拥有教师式模型生成的响应，并且已将该响应存储在调用日志中，则可以使用这些现有的教师式响应来微调学生式模型。为此，您需要向 Amazon Bedrock 提供对调用日志的访问权限。Amazon Bedrock 中的调用日志是模型调用的详细记录。有关更多信息，请参阅[使用 CloudWatch 日志监控模型调用](https://docs.aws.amazon.com//bedrock/latest/userguide/model-invocation-logging.html)。

如果您选择此选项，则可以继续使用 Amazon Bedrocks 推理 API 操作，例如[InvokeModel](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_runtime_InvokeModel.html)或 C [onverse](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_runtime_Converse.html) API，并收集 Amazon Bedrock 中使用的所有调用的调用日志、模型输入数据（提示）和模型输出数据（响应）。

当您使用 `InvokeModel` 或 `Converse` API 操作从模型生成响应时，您可以选择将 `requestMetadata` 添加到响应。在创建蒸馏作业时，作为调用日志配置的一部分，您可以按此元数据进行筛选。您可以按特定使用案例进行筛选，之后，Amazon Bedrock 仅使用筛选后的响应来微调学生式模型。当您选择使用调用日志来微调学生式模型时，可以让 Amazon Bedrock 仅使用提示，或使用提示-响应对。

------
#### [ Choosing prompts with invocation logs ]

如果您选择让 Amazon Bedrock 仅使用调用日志中的提示，则 Amazon Bedrock 会使用这些提示生成来自教师式模型的响应。在此情况下，Amazon Bedrock 会使用这些响应来微调您标识的学生式模型。根据您的使用案例，Amazon Bedrock 模型蒸馏功能可能会添加专有数据合成技术来生成多样化的、质量更高的响应。

------
#### [ Choosing prompt-response pairs with invocation logs ]

如果您选择让 Amazon Bedrock 使用调用日志中的提示-响应对，则 Amazon Bedrock 将不会重新生成来自教师式模型的响应，也不会使用调用日志中的响应来微调学生式模型。要让 Amazon Bedrock 读取调用日志中的响应，模型蒸馏作业中指定的教师式模型必须与调用日志中使用的模型相匹配。如果两者不匹配，则不会使用调用日志。在已将请求元数据添加到调用日志中的响应的情况下，要微调学生式模型，您可以指定请求元数据筛选条件，以使 Amazon Bedrock 仅读取适用于您的使用案例的特定日志。

------

# 模型蒸馏的先决条件
<a name="prequisites-model-distillation"></a>

在开始之前，请确保您已了解模型蒸馏功能的访问权限和安全控制。您还必须为蒸馏工作选择教师和学生模式。

## Permissions
<a name="model-distillation-access-security"></a>

在开始之前，请确保您已了解模型蒸馏功能的访问权限和安全控制。您必须拥有一个 IAM 服务角色，该角色可以访问要用于存储模型蒸馏训练数据和验证数据的 Amazon S3 存储桶。Amazon Bedrock 还提供用于加密和进一步保护蒸馏作业与构件的选项。有关更多信息，请参阅 [模型自定义访问权限和安全性](custom-model-job-access-security.md)。

要在 Distillation 作业中为教师模型使用跨区域推理配置文件，除了推理配置文件中每个区域的模型外 AWS 区域，您的服务角色还必须有权在中调用推理配置文件。有关策略示例，请参阅[（可选）使用跨区域推理配置文件创建蒸馏作业的权限](custom-model-job-access-security.md#custom-models-cross-region-inference-profile-permissions)。有关跨区域推理的更多信息，请参阅[通过跨区域推理提高吞吐量](cross-region-inference.md)。

## 选择用于蒸馏的教师式模型和学生式模型
<a name="prequisites-teacher-student-models"></a>


****  

| 模型类型 | 选择标准 | 关键注意事项 | 要求 | 
| --- | --- | --- | --- | 
| 教师模型 | 选择在规模和能力方面显著超过学生式模型的教师式模型，并且要在使用案例中实现其准确性。 | 要提高蒸馏效率，请选择已基于与您的使用案例相似的任务进行训练的模型。对于某些教师模型，您可以选择跨区域推理配置文件。 | 必须具有调用每个区域的推理配置文件和模型的权限。有关策略示例，请参阅跨区域推理文档。 | 
| 学生模型 | 选择规模明显小于教师式模型的学生式模型。 | 学生模型必须是支持的模型表中与您的教师模型配对的学生模型之一。 | 必须与所选教师型号兼容，如下表所示。 | 

以下部分列出了 Amazon Bedrock 模型蒸馏功能支持的模型和区域。选择教师式模型和学生式模型后，您可以准备和优化用于蒸馏的训练数据集。有关更多信息，请参阅 [准备用于蒸馏的训练数据集](distillation-prepare-datasets.md)。

### Amazon Bedrock 模型蒸馏功能支持的模型和区域
<a name="model-distillation-supported"></a>

下表显示了教师和学生模型支持哪些模型和 AWS 区域 Amazon Bedrock Model Destillation。如果使用跨区域推理配置文件，则仅支持使用系统推理配置文件进行模型蒸馏。有关更多信息，请参阅 [通过跨区域推理提高吞吐量](cross-region-inference.md)。


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/prequisites-model-distillation.html)

**注意**  
对于 Claude  和 Llama 模型，蒸馏作业在美国西部（俄勒冈州）运行。您可以购买美国西部（俄勒冈州）的[预调配吞吐量](https://docs.aws.amazon.com//bedrock/latest/userguide/prov-throughput.html)，也可以[复制蒸馏模型](https://docs.aws.amazon.com//bedrock/latest/userguide/copy-model.html)至另一个区域，然后购买[预调配吞吐量](https://docs.aws.amazon.com//bedrock/latest/userguide/prov-throughput.html)。
对于 Nova 模型，在美国东部（弗吉尼亚州北部）运行蒸馏作业。要进行推断，您需要购买美国东部（弗吉尼亚州北部）的[预调配吞吐量](https://docs.aws.amazon.com//bedrock/latest/userguide/prov-throughput.html)。您无法将 Nova 模型复制到其他区域。

# 准备用于蒸馏的训练数据集
<a name="distillation-prepare-datasets"></a>

在启动模型自定义作业之前，您至少需要准备训练数据集。要为自定义模型准备输入数据集，您需要创建 `.jsonl` 文件，文件中的每一行都是与记录相对应的 JSON 对象。您创建的文件必须符合您选择的模型蒸馏和模型的格式要求。文件中的记录也必须符合大小要求。

提供输入数据作为提示。Amazon Bedrock 使用输入数据从教师式模型生成响应，然后使用生成的响应来微调学生式模型。要详细了解 Amazon Bedrock 使用的输入以及如何选择最适合您的使用案例的选项，请参阅 [Amazon Bedrock 模型蒸馏功能的工作原理](model-distillation.md#how-md-works)。有几个选项可用于准备输入数据集。

**注意**  
Amazon Nova 模型对蒸馏有不同的要求。有关更多信息，请参阅[蒸馏 Amazon Nova 模型](https://docs.aws.amazon.com/nova/latest/userguide/customize-distill.html)。

## 蒸馏支持的模态
<a name="distillation-supported-modalities"></a>

中列出的模型仅[Amazon Bedrock 模型蒸馏功能支持的模型和区域](prequisites-model-distillation.md#model-distillation-supported)支持该 text-to-text模式。

## 优化合成数据生成的输入提示
<a name="distillation-data-prep-prompt-optimization"></a>

在模型蒸馏期间，Amazon Bedrock 会生成一个合成数据集，用于针对您的特定使用案例微调您的学生式模型。有关更多信息，请参阅 [Amazon Bedrock 模型蒸馏功能的工作原理](model-distillation.md#how-md-works)。

您可以针对所需的使用案例为输入提示设置格式，从而优化合成数据生成过程。例如，如果您的已蒸馏模型的使用案例是检索增强生成（RAG），那么您为提示设置的格式将与您希望模型专注于代理使用案例时设置的格式不同。

下面是有关如何针对 RAG 或代理使用案例为输入提示设置格式的示例。

------
#### [ RAG prompt example ]

```
{
  "schemaVersion": "bedrock-conversation-2024",
  "system": [
    {
      "text": "You are a financial analyst charged with answering questions about 10K and 10Q SEC filings. Given the context below, answer the following question."
    }
  ],
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "text": "<context>\nDocument 1: Multiple legal actions have been filed against us as a result of the October 29, 2018 accident of Lion Air Flight 610 and the March 10, 2019 accident of Ethiopian Airlines Flight 302.\n</context>\n\n<question>Has Boeing reported any materially important ongoing legal battles from FY2022?</question>"
        }
      ]
    }
  ]
}
```

------
#### [ Agent prompt example ]

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [
        {
            "text": 'You are an expert in composing functions. You are given a question and a set of possible functions. Based on the question, you will need to make one or more function/tool calls to achieve the purpose.
                    Here is a list of functions in JSON format that you can invoke.
                    [
                        {
                            "name": "lookup_weather",
                            "description: "Lookup weather to a specific location",
                            "parameters": {
                                "type": "dict",
                                "required": [
                                    "city"
                                ],
                                "properties": {
                                    "location": {
                                        "type": "string",
                                    },
                                    "date": {
                                        "type": "string",
                                    }
                                }
                            }
                        }
                    ]'
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "text": "What's the weather tomorrow?"
                }
            ]
        },
        {
            "role": "assistant",
            "content": [
               {
                   "text": "[lookup_weather(location=\"san francisco\", date=\"tomorrow\")]"
               }
            ]
        }
    ]
}
```

------

# 选项 1：为数据准备提供您自己的提示
<a name="distillation-data-prep-option-1"></a>

收集您的提示并以 `.jsonl` 文件格式存储它们。JSONL 中的每条记录都必须使用以下结构。
+ 添加必须具有值 `bedrock-conversion-2024` 的字段 `schemaVersion`。
+ [可选] 添加一个系统提示，指示分配给模型的角色。
+ 在 `messages` 字段中，添加包含提供给模型的输入提示的用户角色。
+ [可选] 在 `messages` 字段中，添加包含所需响应的助手角色。

Anthropic 和 Meta Llama 模型仅支持单轮对话提示，这意味着您只能有一个用户提示。这些 Amazon Nova 模型支持多轮对话，使您可以在一条记录中提供多个用户和助手之间的交流内容。

**示例格式**：

```
{
    "schemaVersion": "bedrock-conversation-2024",
    "system": [{
        "text": "A chat between a curious User and an artificial intelligence Bot. The Bot gives helpful, detailed, and polite answers to the User's questions."
    }],
    "messages": [{
            "role": "user",
            "content": [{
                "text": "why is the sky blue"
            }]
        },
        {
            "role": "assistant",
            "content": [{
                "text": "The sky is blue because molecules in the air scatter blue light from the Sun more than other colors."
            }]
        }
    ]
}}
```

## 验证数据集
<a name="distillation-data-prep-option-1-validate"></a>

在运行蒸馏作业之前，您可以使用 [Python 脚本](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/custom-models/model_distillation/dataset-validation/README.md)验证输入数据集。

# 选项 2：使用调用日志进行数据准备
<a name="distillation-data-prep-option-2"></a>

在创建蒸馏任务时，您可以让 Amazon Bedrock 使用来自 CloudWatch 日志调用日志的现有教师回复作为训练数据。对于 Amazon Bedrock，调用日志是模型调用的详细记录。

要使用调用日志进行模型蒸馏，请将模型调用日志设置为开启，使用其中一个模型调用操作，并确保已将 Amazon S3 存储桶设置为日志的目标。在开始模型蒸馏作业之前，您必须为 Amazon Bedrock 授予访问日志的权限。有关设置调用日志的更多信息，请参阅使用 [Ama CloudWatch zon Logs 监控模型调用](https://docs.aws.amazon.com//bedrock/latest/userguide/model-invocation-logging.html)。

使用此选项时，您可以指定是希望 Amazon Bedrock 仅使用提示还是使用调用日志中的提示-响应对。如果您希望 Amazon Bedrock 仅使用提示，那么 Amazon Bedrock 可能会添加专有数据合成技术，以从教师式模型生成多样化和更优质的响应。如果您希望 Amazon Bedrock 使用提示-响应对，那么 Amazon Bedrock 不会从教师式模型重新生成响应。Amazon Bedrock 将直接使用调用日志中的响应来微调学生式模型。

**重要**  
您最多可以向 Amazon Bedrock 提供 15000 个提示或提示-响应对，用于微调学生式模型。为确保对学生式模型进行微调以满足您的特定需求，我们强烈建议您采取以下措施：  
如果您希望 Amazon Bedrock 仅使用提示，请确保从所有模型生成了至少 100 个提示-响应对。
如果您希望 Amazon Bedrock 使用调用日志中的响应，请确保您的调用日志中至少有 100 个从该模型生成的提示-响应对，而且这些提示-响应对与您选择的教师式模型完全匹配。

您可以选择使用其中一个模型调用操作向调用日志中的提示-响应对[添加请求元数据](#add-metadata-to-prompts)，稍后再使用该元数据来筛选日志。Amazon Bedrock 可以使用筛选后的日志来微调学生式模型。

要使用多个请求元数据筛选日志，请使用单个布尔运算符 AND、OR 或 NOT。您不能合并运算。对于单个请求元数据的筛选，请使用布尔运算符 NOT。

## 在调用日志中的提示和响应中添加请求元数据以进行模型蒸馏
<a name="add-metadata-to-prompts"></a>

模型调用日志记录会收集 Amazon Bedrock 中使用的所有调用的调用日志、模型输入数据（提示）和模型输出数据（响应）。如果您已启用日志记录，那么每当您通过任何 `Invoke` 或 `Converse` API 操作与 Amazon Bedrock 基础模型交互时，您都可以收集日志。如果您希望 Amazon Bedrock 使用调用日志中的提示和相关响应来微调学生式模型，则必须授予 Amazon Bedrock 访问这些日志的权限。使用模型已经生成的响应可以更快地微调学生式模型。使用调用日志中的响应还可以提高模型蒸馏的成本效益，但是，Amazon Bedrock 的专有数据合成技术未添加，而该技术原本可以提高已蒸馏模型的性能。

利用调用日志，您可以确定您希望 Amazon Bedrock 用于模型蒸馏的提示-响应对。这些提示-响应对可以用于特定使用案例。为了能够确定要用于蒸馏的提示-响应对，在调用模型或使用 `Converse` API 操作时，您必须向提示-响应对添加请求元数据字符串。请求元数据采用以下格式提供：`"priority" : "High"`。

当您继续使用 `Invoke` 或 `Converse` API 操作与模型交互时，交互和请求元数据会记录在调用日志中。下面是来自一次 `InvokeModel` 调用的调用日志的示例，其中展示了请求元数据：

```
{
    "schemaType": "ModelInvocationLog",
    "schemaVersion": "1.0",
    "timestamp": "2024-09-11T17:16:18Z",
    "accountId": "XXXXX",
    "identity": {
        "arn": "arn:aws:sts::XXXXXXX:assumed-role/Admin/XXXXXX"
    },
    "region": "us-east-1",
    "requestId": "7ee514f3-9eff-467c-af75-8fd564ce58e5",
    "operation": "InvokeModel",
    "modelId": "meta.llama3-1-405b-instruct-v1:0",
    "input": {
        "inputContentType": "application/json",
        "inputBodyJson": {
            "prompt": "story of two dogs",
            "max_tokens_to_sample": 300
        },
        "inputTokenCount": 13
    },
    "output": {
        "outputContentType": "application/json",
        "outputBodyJson": {
            "type": "completion",
            "completion": " Here is a story about two dogs:\n\nRex and Charlie were best friends who lived next door to each other. Every morning, their owners would let them out into the backyard to play. Rex was a golden retriever with long, shaggy fur. He loved to run and chase sticks. Charlie was a corgi with short legs and a big smile. He was happy just sniffing the grass and rolling around. \n\nThe two dogs spent every day playing together. Rex would grab a stick and bring it over to Charlie, wagging his tail excitedly. Charlie would take the other end of the stick in his mouth and they'd have a friendly game of tug-of-war. After tiring themselves out, they'd flop down in the warm sunshine for a nap. \n\nAt lunchtime, their owners would call them in for food. Rex would gobble up his kibble hungrily while Charlie ate his at a more leisurely pace. After lunch, it was right back outside for more playtime. The afternoon sunbeams would light up their fur as they chased each other around the yard. \n\nWhen it started getting late, their owners called them in for the night. Rex and Charlie would head inside, tired but happy after another fun day of play. After slurping up fresh water from their bowls, they'd curl up on their beds, Rex's fluffy golden tail tucked over his nose and little",
            "stop_reason": "max_tokens",
            "stop": null
        },
        "outputTokenCount": 300
    },
    "requestMetadata": {
        "project": "CustomerService",
        "intent": "ComplaintResolution",
        "priority": "High"
    }
}
```

启动模型蒸馏作业时，您可以将调用日志指定为输入数据来源。您可以使用 API 或 AWS SDK 在 Amazon Bedrock 控制台中启动模型蒸馏作业。 AWS CLI

**提供请求元数据的要求**

请求元数据必须满足以下要求：
+ 以 JSON `key:value` 格式提供。
+ 键值对必须是长度不超过 256 个字符的字符串。
+ 最多提供 16 个键值对。

### 使用请求元数据筛选条件
<a name="request-metadata-filter"></a>

您可以将筛选条件应用于元数据，以便有选择地决定要在蒸馏中包含哪些提示-响应对用于微调学生式模型。例如，您可能只想包含那些带有 “project”: “CustomerService” 和 “优先级”: “高” 请求元数据的请求。

要使用多个请求元数据筛选日志，请使用单个布尔运算符 AND、OR 或 NOT。您不能合并运算。对于单个请求元数据的筛选，请使用布尔运算符 NOT。

启动模型蒸馏作业时，您可以指定调用日志作为输入数据来源，并可以指定使用哪些筛选条件来选择提示-响应对。您可以使用 API 或 AWS SDK 在 Amazon Bedrock 控制台中启动模型蒸馏作业。 AWS CLI有关更多信息，请参阅 [在 Amazon Bedrock 中提交模型蒸馏作业](submit-model-distillation-job.md)。

## 验证数据集
<a name="distillation-data-prep-option-2-validate"></a>

在运行蒸馏作业之前，您可以使用 [Python 脚本](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/custom-models/model_distillation/dataset-validation/README.md)验证输入数据集。

# 在 Amazon Bedrock 中提交模型蒸馏作业
<a name="submit-model-distillation-job"></a>

[您可以通过 Amazon Bedrock 控制台或使用亚马逊 Bedrock 控制平面终[CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)端节点发送请求来执行模型提炼。](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#br-cp)

## 先决条件
<a name="submit-model-distillation-job-prerequisites"></a>
+ 创建具有所需权限的 IAM 服务角色。有关全面的安全和权限信息，请参阅[模型自定义访问权限和安全性](custom-model-job-access-security.md)。
+ （可选）加密输入和输出数据、自定义作业或向自定义模型发出的推理请求。有关更多信息，请参阅 [自定义模型加密](encryption-custom-job.md)。
+ （可选）创建虚拟私有云 (VPC) Private Cloud 以保护您的自定义任务。有关更多信息，请参阅 [（可选）使用 VPC 保护模型自定义作业](custom-model-job-access-security.md#vpc-model-customization)。

有关设置按需推理的更多信息，请参阅[为自定义模型设置推理](model-customization-use.md)。

## 提交作业
<a name="submit-model-distillation-job-how-to"></a>

------
#### [ Console ]

1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。 AWS 管理控制台 然后，在 [https://console.aws.amazon.com/](https://console.aws.amazon.com/bedrock)bedrock 上打开 Amazon Bedrock 控制台。

1. 在左侧导航窗格的**调整**下，选择**自定义模型**。

1. 选择**创建蒸馏作业**。

1. 对于**蒸馏模型详细信息**，执行以下操作：

   1. 在**蒸馏模型名称**中，输入您的蒸馏模型的名称。

   1. （可选）对于**模型加密**，如果您要提供密钥来加密作业及其相关构件，请选中该复选框。

      有关更多信息，请参阅 [自定义模型加密](encryption-custom-job.md)。

   1. （可选）对蒸馏模型应用**标签**。

1. 对于**作业配置**，执行以下操作：

   1. 在**作业名称**中，输入蒸馏作业的名称。

   1. （可选）对于**模型加密**，如果您要提供密钥来加密作业及其相关构件，请选中该复选框。

      有关更多信息，请参阅 [自定义模型加密](encryption-custom-job.md)。

   1. （可选）为作业应用**标签**。

1. 对于**教师式模型 – 学生式模型详细信息**，请选择用于创建蒸馏模型的教师式模型和学生式模型。

   有关更多信息，请参阅 [模型蒸馏的先决条件](prequisites-model-distillation.md)。

1. 要**合成数据生成**，请执行以下操作：

   1. 在 **最大响应长度**中，指定教师式模型生成的合成响应的最大长度。

   1. 在**蒸馏输入数据集**内，选择以下选项之一：
      + **直接上传到 S3 位置**：指定存储用于蒸馏的输入数据集（提示）的 S3 位置。有关更多信息，请参阅 [选项 1：为数据准备提供您自己的提示](distillation-data-prep-option-1.md)。
      + **提供对调用日志的访问权限**：指定 S3 位置，该位置存储调用日志以及用于蒸馏的输入数据集（提示）。有关更多信息，请参阅 [选项 2：使用调用日志进行数据准备](distillation-data-prep-option-2.md)。
        + （可选）如果您希望 Amazon Bedrock 仅使用日志中的某些提示进行蒸馏，请在**请求元数据筛选条件**中指定筛选条件。
        + 根据您希望 Amazon Bedrock 从日志中访问的内容，选择**阅读提示**或**读取提示-回复对**。请记住，只有当您的教师式模型与日志中的模型匹配时，才会读取回复。

1. 对于**蒸馏输出**，请指定用于上传蒸馏作业的指标和报告的 S3 位置。

   有关更多信息，请参阅 [分析模型自定义作业的结果分析模型自定义作业结果](model-customization-analyze.md)。

1. 对于 **VPC 设置**，请选择 VPC 配置，用于访问包含训练数据的 S3 存储桶。

   有关更多信息，请参阅 [（可选）使用 VPC 保护模型自定义作业](custom-model-job-access-security.md#vpc-model-customization)。

1. 对于**服务访问权限**，请指定 IAM 角色，用于访问包含训练数据的 S3 存储桶。除非您使用跨区域推理配置文件或 VPC 配置，否则您可以使用自动配置的正确权限在 Amazon Bedrock 控制台中创建角色。也可以使用现有的服务角色。

    对于具有 Amazon VPC 配置或使用跨区域推理配置文件的作业，您必须在 IAM 中创建具有所需权限的新服务角色。

   有关更多信息，请参阅 [为模型自定义创建 IAM 服务角色](custom-model-job-access-security.md#custom-model-job-service-role)。

1. 选择**创建蒸馏作业**以启动蒸馏作业。自定义模型后，您可以为模型设置推理。有关更多信息，请参阅 [为自定义模型设置推理](model-customization-use.md)。

------
#### [ API ]

使用 Amazon Bedrock API 时，您必须至少提供以下字段才能提交模型蒸馏作业。


****  

| 字段 | 说明 | 
| --- | --- | 
| baseModelIdentifier | 学生式模型的模型标识符 | 
| customModelName | 新蒸馏模型的名称 | 
| jobName | 模型蒸馏作业的名称 | 
| roleArn | 向 Amazon Bedrock 授予权限来读取训练和验证文件和写入输出路径的角色 | 
| trainingDataConfig | 包含训练数据的 Amazon S3 路径 | 
| outputDataConfig | 包含训练和验证指标的 Amazon S3 路径 | 
| distillationConfig | 蒸馏作业所需的输入 | 
| customModelKmsKeyId | 加密自定义模型 | 
| clientRequestToken | 防止请求多次完成的令牌 | 

以下字段是可选字段：


****  

| 字段 | 说明 | 
| --- | --- | 
| customizationType | 对于蒸馏作业，默认设置为 DISTILLATION  | 
| validationDataConfig | Amazon S3 路径验证数据列表 | 
| jobTags | 将标签与作业相关联 | 
| customModelTags | 将标签与生成的自定义模型相关联 | 
| vpcConfig | VPC 可保护您的训练数据和蒸馏作业 | 

为防止请求多次完成，请添加一个 `clientRequestToken`。

您可以添加以下可选字段进行额外的配置。
+ `jobTags` and/or `customModelTags`— 将[标签](tagging.md)与自定义任务或生成的自定义模型相关联。
+ `vpcConfig` – 添加[虚拟私有云（VPC）的配置，以保护您的训练数据和自定义作业](custom-model-job-access-security.md#vpc-model-customization)。

以下是 [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API 的示例片段。此示例使用调用日志中的提示-回复对作为输入数据来源，并指定筛选条件用于选择提示-回复对。

```
"trainingDataConfig": {
    "invocationLogsConfig": {
        "usePromptResponse": true,
        "invocationLogSource": {
            "s3Uri": "string"
        },
        "requestMetadataFilters": {
            "equals": {
                "priority": "High"
            }
        }
    }
}
```

**响应**

响应返回模型蒸馏作业中的 `jobArn`。

------

## 后续步骤
<a name="submit-model-distillation-next-steps"></a>
+ [监控您的蒸馏作业](model-customization-monitor.md)。有关设置按需推理的更多信息，请参阅[为自定义模型设置推理](model-customization-use.md)。

# 克隆蒸馏作业
<a name="clone-model-distillation-job"></a>

您可以使用 Amazon Bedrock 控制台来克隆蒸馏作业。通过克隆蒸馏作业，您可以运行多个具有相同设置的作业。使用克隆功能重试已停止或遇到问题的作业。新作业继承除服务访问配置、任何 VPC 设置和任何标签之外的所有设置。

1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。AWS 管理控制台然后，在 [https://console.aws.amazon.com/](https://console.aws.amazon.com/bedrock)bedrock 上打开 Amazon Bedrock 控制台。

1. 在左侧导航窗格的**调整**下，选择**自定义模型**。

1. 选择要克隆的蒸馏作业，然后选择**克隆作业**。

1. 如果需要，请调整作业的设置。

1. 选择**创建蒸馏作业**以启动新作业。