在2024年的亚马逊云科技re:Invent全球云计算春晚里,亚马逊云科技CEO - Matt Garman介绍了亚马逊云科技的AI模型托管平台Amazon Bedrock上的模型蒸馏服务Model Distillation,令小李哥印象十分深刻。该功能可自动化地为特定场景的知识创建一个蒸馏模型。它通过一个大参数的基础模型(FM),即教师模型(Teacher Model)生成回复响应,并使用这些响应对一个较小的学生模型(Student Model)进行微调。同时该新功能采用数据合成技术来改进教师模型的响应。Amazon Bedrock会托管最终的蒸馏模型用于推理,为特定知识场景提供响应速度更快、成本更低,且精度接近教师模型的新模型。

 在本系列的上篇中,小李哥为大家介绍了在亚马逊云科技上蒸馏模型的工作原理,核心就是通过教师模型生成模型响应把特定领域的知识向学生模型进行转移,并且如何利用Amazon Bedrock为模型蒸馏生成合成数据扩充训练数据集,以及如何在控制台创建一个蒸馏任务。接下来我们来了解关于在亚马逊云科技上为Llama 3.1 405B进行模型蒸馏更多相关知识,如API调用方法、使用历史模型响应自动添加训练数据和调用蒸馏模型生成回复等。

文章所需背景知识

模型蒸馏的背后原理

亚马逊云科技上的上的模型蒸馏通常是通过教师大模型生成响应,利用专有数据合成技术改进教师模型的响应生成,并对学生模型进行微调提高特定知识场景的性能。Amazon Bedrock采用了多种行业领先的数据合成技术来增强教师模型的响应生成能力,并创建高质量的微调数据集。这些技术针对特定的场景进行了优化,比如Amazon Bedrock可以根据开发者现有数据集内的提示词,生成类似的提示词来扩充训练数据集,从而有效地增加微调数据的数量,解决开发者微调训练集不足的问题。此外还可以使用Amazon Bedrock提供的人工专业生成的预制提示-响应对作为训练集,以生成高质量的教师模型响应。目前Amazon Bedrock Model Distillation模型蒸馏功能支持Anthropic、Meta和Amazon Nova模型。

什么是Amazon Bedrock服务?

Amazon Bedrock 是亚马逊云科技(AWS)提供的一项生成式AI管理管理服务,可以帮助开发者轻松构建和部署基于基础模型(Foundation Models, FMs)的生成式AI应用。借助 Amazon Bedrock,开发者无需管理底层基础设施,即可在亚马逊云科技上访问来自多个领先AI模型提供商的预训练模型,快速实现文本生成、图像创作、语义搜索等AI任务。如Anthropic、AI21 Labs、Cohere和Stability AI等厂商。

Amazon Bedrock可广泛应用于智能客服、内容生成、个性化推荐、代码生成、营销自动化等多个领域,帮助开发者减去基础设施维护、成本托管的高昂成本,仅需API调用即可便捷的将模型的能力集成到AI应用之中,提升用户体验和运营效率。

在亚马逊云科技上创建模型蒸馏的实操步骤

通过Python SDK Boto3蒸馏模型

除了通过控制台创建模型蒸馏任务外,我们还可以通过亚马逊云科技提供的Python SDK,通过API调用的方式创建。

1. 确保已安装 Boto3 库。如果尚未安装,可以使用以下命令进行安装:

pip install boto3

2. 确保AWS秘钥已正确配置,秘钥用于调用Amazon Bedrock服务的权限。可以通过配置 ~/.aws/credentials文件、以下命令或设置环境变量来实现。

aws configure

3.以下是使用Boto3调用Amazon Bedrock服务创建模型蒸馏任务的示例代码:

import boto3

# 创建 Bedrock 客户端
client = boto3.client('bedrock', region_name='us-east-1')

# 定义模型蒸馏任务的参数
response = client.create_model_distillation_job(
    jobName='your-distillation-job-name',
    roleArn='arn:aws:iam::your-account-id:role/your-role-name',
    clientRequestToken='unique-token-for-idempotency',
    inputDataConfig={
        's3Uri': 's3://your-bucket/your-training-data.jsonl'
    },
    outputDataConfig={
        's3Uri': 's3://your-bucket/your-output-data/'
    },
    distillationConfig={
        'teacherModelIdentifier': 'model-provider.teacher-model-id',
        'studentModelIdentifier': 'model-provider.student-model-id',
        'autoDistill': True
    }
)

# 输出响应
print(response)

使用Amazon Bedrock上的模型调用历史数据进行模型蒸馏

如果大家想在蒸馏过程中重复使用过去的历史数据,跳过在上篇中介绍模拟训练数据生成的步骤,我们可以通过启用模型调用日志(Model Invocation Logging)来收集调用日志、模型输入数据和输出数据。这些日志将记录所有在Amazon Bedrock上执行的模型调用请求中的输入、输出数据。通过添加请求元数据(Request Metadata),我们可以在后续更轻松地筛选日志选择出我们需要的用于训练的历史数据。历史日志格式示例如下:

request_params = {
    'modelId': 'meta.llama3-1-405b-instruct-v1:0',
    'messages': [
        {
            'role': 'user',
            'content': [
                {
                    "text": "What is model distillation in generative AI?"
                }
            ]
        }
    },
    'requestMetadata': {
    "ProjectName": "myLlamaDistilledModel",
    "CodeName": "myDistilledCode"
    }
}
response = bedrock_runtime_client.converse(**request_params)
pprint(response)
---
'output': {'message': {'content': [{'text': '\n''\n'
    'Model distillation is a technique in generative AI that involves training a smaller,'
    'more efficient model (the '"student") to mimic the behavior of a larger, '
    'more complex model '(the "teacher"). The goal of model distillation is to'
    'transfer the knowledge and capabilities of the teacher model to the student model,'
    'allowing the student to perform similarly well on a given task, but with much less computational'
    'resources and memory.\n'
    '\n'}]
    }
}

如果想使用历史数据用于教师模型蒸馏。我们需要在数据生成步骤中勾选“Provide access to inocation logs”,并授权Amazon Bedrock访问调用日志的IAM角色权限。在这个步骤中我们可以指定请求元数据筛选条件,以便仅筛选符合我们蒸馏场景的特定日志,用于微调学生模型。

需要注意的是如果大家希望Amazon Bedrock直接复用调用日志中的历史响应数据,蒸馏过程中选择的教师模型必须与调用历史日志所属的模型保持一致。

调用蒸馏模型生成回复

在使用蒸馏模型之前,我们需要为Amazon Bedrock提权预配置吞吐量(Provisioned Throughput),然后才能使用生成的蒸馏模型进行推理。在购买预配置吞吐量时,我们需要配置和检查以下步骤:

选择承诺期限(Commitment Term)。

选择所需的模型计算单元数(Model Units)。

查看预计的每小时、每日和每月成本。

以下就是为蒸馏模型预制吞吐量的操作截图。

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐