本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 Nova 蒸馏法
本快速入门指南可帮助您开始使用人工智能上的监督微调 (SFT) 进行 Amazon Nova 模型蒸馏。 SageMaker
概念
模型蒸馏是指将知识从大型、高级模型转移到小型、高效模型的方法。对于 Amazon Nova 模型,大型“教师式”模型(例如 Amazon Nova Pro 或 Amazon Nova Premier)将其功能传递给小型“学生式”模型(例如 Amazon Nova Lite 或 Amazon Nova Micro)。这将创建一个自定义的模型,该模型在使用更少资源的同时保持高性能。
关键组件
蒸馏过程主要涉及两种类型的模型:
教师模型作为知识来源,包括:
-
亚马逊 Nova Pro(亚马逊。 nova-pro-v1:0)
-
亚马逊 Nova Premier(亚马逊。 nova-premier-v1:0)
学生模型接收和运用知识:
-
亚马逊 Nova Lite(亚马逊。 nova-lite-v1:0300 k)
-
亚马逊 Nova Micro(亚马逊。 nova-micro-v1:0:128 k)
-
亚马逊 Nova Pro(亚马逊。 nova-pro-v1:0:300 k)-仅在使用亚马逊 Nova Premier 作为教师时可用
使用案例
在以下情况下,模式蒸馏特别有益:
-
您的应用程序对延迟、成本和准确性有严格的要求。
-
您需要针对特定任务使用自定义模型,但缺少足够的高质量带标签的训练数据。
-
您希望与高级模型的性能相匹配,同时保持较小模型的效率。
先决条件
-
AWS 账户 可以访问 Amazon Nova 型号和相应的服务配额(最少 6 个 P5 和 1 个 R5 实例)。
-
具有 SageMaker 训练任务权限的 IAM 角色。
-
用于存储训练数据和输出的 Amazon S3 存储桶。
数据增强设置
数据增强阶段使用 SageMaker 训练作业,使用教师模型生成高质量的训练数据。本节详细介绍了设置过程和要求。
IAM 角色
要创建 IAM 角色和附加策略,请参阅创建角色和附加策略(控制台)。如果您使用 AWS CLI,请按照 create- role 和中的说明进行操作。attach-role-policy有关更多信息,请参阅 SageMaker AI 开发者指南中的如何使用 SageMaker AI 执行角色。
以下是示例命令供您参考。
创建 A SageMaker I 执行角色
该角色是通过信任关系创建的,允许 SageMaker 人工智能 Amazon Bedrock 担任这个角色。这使这些服务能够在执行批量推理作业时代表您执行操作。
aws iam create-role \ --role-name NovaCustomizationRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["sagemaker.amazonaws.com", "bedrock.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }'
附上必要的政策
# Attach AmazonSageMakerFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess # Attach AmazonBedrockFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess # Attach S3 access policy aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess # Attach AmazonEC2FullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
将以下内联策略附加到蒸馏容器所需的客户执行角色。
-
AWS KMS 权限:允许角色与 AWS 密钥管理服务进行交互,这是访问加密资源或管理加密密钥所必需的。
-
IAM:PassRole:当一个服务需要将此角色传递给另一个服务时,通常需要此权限,这是 AWS 服务集成中的常见模式。
aws iam put-role-policy \ --role-name NovaCustomizationRole \ --policy-name Distillation-Additional-Permissions\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*" } ] }
亚马逊 VPC 配置
要使用为 A SageMaker I 训练任务创建 Amazon VPC 配置 AWS Management Console,请按照配置您的私有 VPC 进行 SageMaker 训练(控制台)中的说明进行操作。
创建新的亚马逊 VPC
Name: Distillation-VPC IPv4 CIDR: 10.0.0.0/16 (or your preferred range) Availability Zones: 2 Public Subnets: 2 Private Subnets: 2 NAT Gateways: 1 (in one AZ)
创建安全组
Name: Distillation-SG Description: Security group for data distillation jobs Inbound Rules: Allow all traffic from self Outbound Rules: Allow all traffic (0.0.0.0/0)
为以下服务创建 VPC 终端节点
com.amazonaws.[region].s3 com.amazonaws.[region].sagemaker.api com.amazonaws.[region].sagemaker.runtime com.amazonaws.[region].bedrock.api com.amazonaws.[region].bedrock.runtime com.amazonaws.[region].sts com.amazonaws.[region].logs com.amazonaws.[region].ecr.api com.amazonaws.[region].ecr.dkr
对于每个端点:
-
选择您的蒸馏-VPC
-
选择私有子网
-
选择 Destillation-SG 安全组
AWS KMS 钥匙
使用 Amazon Bedrock 批量推理时,需要 AWS KMS 密钥来确保数据安全和合规性。Amazon Bedrock 批量推理任务要求使用 AWS KMS 密钥对输入和输出 Amazon S3 存储桶进行加密,以确保静态数据保护。
使用 AWS CLI 以下命令创建 KMS 密钥:
# Create KMS key aws kms create-key \ --description "KMS key for Amazon Bedrock batch inference Amazon S3 bucket" \ --regionus-east-1
该命令将输出包括 ARN 在内的关键信息。输出示例:
{ "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } }
注意
保存输出中的 KMS 密钥 ARN,因为在下一节中创建 Amazon S3 存储桶时需要使用它。
Amazon S3 存储桶
您需要两种类型的 Amazon S3 存储。客户管理的 Amazon S3 存储桶存储您的输入数据和输出manifest.json文件。您可以创建和管理此存储桶,并且可以将单个存储桶用于输入和输出。此存储桶必须配置 KMS 加密,因为它将存储敏感的输出数据,并且将由 Amazon Bedrock 批量推理作业使用——Amazon Bedrock 需要使用 KMS 加密的存储桶来处理批量推理任务。
服务托管的 Amazon S3 存储桶存储模型权重。服务托管的 Amazon S3 存储桶是在您的第一次训练作业期间自动创建的。它具有受限的访问控制,只能通过清单文件访问特定路径。
要在特定存储桶中创建存储桶 AWS 区域,请使用 c reate-bucket CLI 命令。
创建带 AWS KMS 加密功能的 Amazon S3 存储桶的命令示例。{kms_key_arn}用您的 AWS KMS 密钥 ARN 替换。如果您尚未创建 AWS KMS 密钥,则需要先创建密钥。
aws s3api create-bucket \ --bucket {my_bucket_name} \ --region {aws_region} \ --create-bucket-configuration LocationConstraint={aws_region} \ --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{kms_key_arn}" }, "BucketKeyEnabled": true } ] }'
开始 SageMaker 训练作业
在开始训练作业之前,请准备好数据。
数据格式要求—— 您的输入数据集必须采用 JSONL 格式,每行都包含一个反向格式的样本,有关更多信息,请参阅准备数据以提炼理解模型。
数据集限制
-
最低提示数:100
-
最大文件大小:2GB
-
最大线路长度:180KB
-
文件格式:仅限 JSONL
要上传输入数据,请运行以下命令。
aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive
数据增强配方
您可以从配方库中获取蒸馏配SageMaker HyperPod 方recipes-collection/recipes/fine-tuning/nova. 数据增强过程由 YAML 配置文件控制。以下是每个参数的详细说明。所有字段均为必填字段。
| 参数 | 描述 |
|---|---|
| 名称 |
训练作业的描述性名称。这有助于确定您的工作 AWS Management Console。 |
| 蒸馏数据 |
启用数据提炼作业,请勿修改此字段。 |
| maxNumberOf提示 |
数据集中提示的最大数量。 |
| maxResponseLength |
每个提示的最大响应长度(标记)。 |
| maxInputFileSizeInGB |
输入文件的最大大小(以 GB 为单位)。 |
| maxLineLengthinkB |
输入文件中单行的最大大小(以 KB 为单位)。 |
| maxStudentModelFineTuningContextLengthInTokens |
学生模型的最大上下文窗口大小(标记)。is 的值不得超过学生模型的容量。您可以根据学生模型容量将此值设置为 32k 或 64k。 |
| teacherModelId |
设置教师型号 ID 时,请从以下两个选项中进行选择:
|
| 温度 |
控制响应随机性(建议平衡为 0.7)。 |
| top_p |
代币抽样的累积概率阈值(建议使用 0.9)。 |
| 客户存储桶 |
用于存储 input/output 数据的亚马逊 S3 存储桶。 |
| kms_key |
AWS KMS 加密 S3 中输出的密钥,Bedrock 批量推理需要此密钥来存储推理作业返回的输出。 |
限制
作为 Nova Premier 的教师模型——由于亚马逊 Bedrock 批量推断在 ARN (us-east-1) 区域不可用,因此仅在 IAD 区域 () 中支持。eu-north-1
最佳实践
数据准备
-
包括 100 个带有标签的高质量示例,以指导教师模型
-
提交前请移除质量差的标签
-
遵循文本理解提示最佳实践
-
在开始蒸馏之前,使用教师模型测试提示
型号选择
-
使用 Nova Pro 作为一般用例的老师
-
考虑使用 Nova Premier 获取专业领域知识
-
根据延迟和成本要求选择学生模型
性能优化
-
从推荐温度 (0.7) 和 top_p (0.9) 开始
-
在微调之前验证增强的数据质量
使用 pySDK 开始工作
以下示例笔记本演示了如何运行蒸馏 SageMaker 训练作业。有关更多信息,请参阅使用 A SageMaker I 估算器运行训练作业。
import os import sagemaker,boto3 from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # SETUP job_name = <Your_job_name> # Must be unique for every run input_s3_uri = <S3 URI to your input dataset> # Must end in .jsonl file output_s3_uri = <S3 URI to your output bucket> + job_name image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-distillation-repo:SM-TJ-DISTILL-LATEST" # Do not change instance_type = "ml.r5.4xlarge" # Recommedation is to use cpu instances instance_count = 1 # Must be 1, do not change role_arn = <IAM role to execute the job with> recipe_path = <Local path to your recipe> # Execution estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role_arn, instance_count=instance_count, instance_type=instance_type, training_recipe=recipe_path, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, subnets= ['subnet-xxxxxxxxxxxxxxxxx','subnet-xxxxxxxxxxxxxxxxx'], # Add subnet groups created in previous steps security_group_ids= ['sg-xxxxxxxxxxxxxxxxx'], # Add security group created in previous steps disable_profiler=True, debugger_hook_config=False ) trainingInput = TrainingInput( s3_data=input_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) # The keys must be "train". estimator.fit(inputs={"train": trainingInput})
验证增强的数据质量
在进行微调之前,验证增强数据的质量至关重要:
-
查看输出存储桶中的
sample_training_data.jsonl文件。此文件包含来自增强数据集的 50 个随机样本。 -
手动检查这些样本的相关性、连贯性以及与您的用例的一致性。
-
如果质量不符合您的预期,则可能需要调整输入数据或蒸馏参数,然后重新运行数据增强过程。
数据增强完成后,第二阶段涉及使用 Amazon 对学生模型进行微调。 SageMaker HyperPod有关更多信息,请参阅 全等级监督微调 (SFT)。
在 SFT 训练配方中,您可以传递从上一个作业返回的数据集路径。
data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"
还要覆盖上一步中生成的推荐训练配置。
限制
-
在此增强数据上仅支持 SFT Nova 微调技术。
-
仅支持 Amazon 上的 SFT Nova 微调技术。 SageMaker HyperPod
-
不支持多模式蒸馏。
-
不支持自定义教师模型。