在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 库。如果尚未安装,可以利用以下下令进行安装:
2. 确保AWS秘钥已精确配置,秘钥用于调用Amazon Bedrock服务的权限。可以通过配置 ~/.aws/credentials文件、以下下令或设置环境变量来实现。
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)。
检察预计的每小时、每日和每月本钱。
以下就是为蒸馏模型预制吞吐量的操作截图。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |