本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 Nova 蒸馏法
本快速入门指南可帮助您开始使用人工智能上的监督微调 (SFT) 进行 Amazon Nova 模型蒸馏。 SageMaker
概念
模型蒸馏是一种将知识从大型高级模型转移到更小、更高效的模型的方法。对于亚马逊Nova机型,较大的 “教师” 模型(例如Amazon Nova Pro或Amazon Nova Premier)将其功能传递给了较小的 “学生” 模型(例如亚马逊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" \ --region
us-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 微调技术。
-
仅支持亚马逊上的 SFT Nova 微调技术。 SageMaker HyperPod
-
不支持多模态蒸馏。
-
不支持自定义教师模型。