关于专栏

人工智能写作

Al论文写作,AI本地知识库问答,上传本地文档进行问答和创作,长篇翻译,毕业论文助手,长篇文案,支持万字长文,拍照提问,图像文字识别OCR,pdf表格识别,印章识别,语音转文字转语音TTS,基于OpenAl为用户提供人工智能GPT聊天服务

2

文章

43

浏览

0

粉丝

投诉失败导致品牌滥用被移除,申诉几次都被拒了,请问有什么解决办法?
离申请结束 已结束
申请进度
100%
任务报酬 1.00金币
暂无评分
0 喜欢
已结束

gpt-3.5-turbo模型微调指南

原创 人工智能写作 2023-08-24 07:42:21 

 

 

作为微调示例,我们将使用RecipeNLG数据集进行微调,该数据集提供了各种食谱以及每个食谱中提取的通用成分列表。

我们将按照以下步骤进行操作:

1、设置:加载我们的数据集和必要的安装包。
2、数据准备:准备数据进行微调,创建训练和验证示例,并将其上传到Files接口。
3、微调:创建您的微调模型。
4、推理:使用您的微调模型进行推理。

完成这些步骤,您将能够训练、评估和部署一个经过微调的gpt-3.5-turbo模型。



1、设置

确保使用最新版本的openai python包
pip install --upgrade openai

  •  
  •  
import jsonimport openaiimport osimport pandas as pdfrom pprint import pprintOPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "")

gpt-3.5-turbo在特定专业领域进行微调会达到很好的效果。请确保您的数据集足够精准和覆盖面广。

  •  
  •  
recipe_df=pd.read_csv("data/cookbook_recipes_nlg_10k.csv")recipe_df.head()

 

2、数据准备

当使用 ChatCompletion 格式进行微调时,每个训练示例都是一个简单的消息列表(对话)。数据格式示例如下:

在训练过程中,此对话将被拆分,最终条目(也就是这里的assistant)将是模型生成的completion,其余消息充当Prompt。所以在构建训练示例数据时请注意这一点 - 如果您的模型将在多轮对话中起作用,那么请提供代表性示例,否则在对话开始扩展时它可能会表现不佳。请注意,目前每个训练示例的token限制为4096。任何超过此长度的内容都将被截断为4096 个token。

​​​​​​​

  •  
  •  
training_data = []system_message = "You are a helpful recipe assistant. You are to extract the generic ingredients from each of the recipes provided."def prepare_example_conversation(row):    messages = []    messages.append({"role""system""content": system_message})    user_message = f"""Title: {row['title']}\n\nIngredients: {row['ingredients']}\n\nGeneric ingredients: """    messages.append({"role""user""content": user_message})    messages.append({"role""assistant""content": row["NER"]})    return {"messages": messages}pprint(prepare_example_conversation(recipe_df.iloc[0]))

您可以从30-50个经过精心修剪的示例开始。随着训练集大小的增加,您应该会看到性能继续线性扩展,但您的工作也会花费更长的时间。

  •  
  •  
# use the first 100 rows of the dataset for trainingtraining_df = recipe_df.loc[0:100]# apply the prepare_example_conversation function to each row of the training_dftraining_data = training_df.apply(prepare_example_conversation, axis=1).tolist()for example in training_data[:5]:     print(example)

除了训练数据之外,我们还可以提供验证数据(可选),这些数据将用于确保模型不会过度拟合您的训练集。

  •  
  •  
validation_df = recipe_df.loc[101:200]validation_data = validation_df.apply(prepare_example_conversation, axis=1).tolist()

然后,我们需要将数据保存为 .jsonl 文件,每一行都是一个训练示例对话。

  •  
  •  
def write_jsonl(data_list: list, filename: str) -> None:     with open(filename, "w") as out:         for ddict in data_list:            jout = json.dumps(ddict) + "\n"            out.write(jout)
  •  
  •  
training_file_name="tmp_recipe_finetune_training.jsonl"write_jsonl(training_data, training_file_name)validation_file_name = "tmp_recipe_finetune_validation.jsonl"write_jsonl(validation_data, validation_file_name)


上传文件

将文件上传到Files端口以供微调模型使用。​​​​​​​

  •  
  •  
training_response = openai.File.create(    file=open(training_file_name, "rb"), purpose="fine-tune")training_file_id = training_response["id"]validation_response = openai.File.create(     file=open(validation_file_name, "rb"), purpose="fine-tune")validation_file_id = validation_response["id"]print("Training file ID:", training_file_id)print("Validation file ID:", validation_file_id)


3、微调

现在我们使用生成的文件和可选的后缀来创建微调作业。响应将包含一个 ID,您可以使用它来查询作业的更新状态。
注意:文件必须首先由openai系统进行处理,因此您可能会收到“File not ready”错误。出现这种情况,只需几分钟后重试即可。

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
response = openai.FineTuningJob.create(    training_file=training_file_id,     validation_file=validation_file_id,     model="gpt-3.5-turbo",     suffix="recipe-ner",)job_id = response["id"]print("Job ID:", response["id"])print("Status:", response["status"])


检查工作状态

您可以向 https://api.openai.com/v1/alpha/fine-tunes 接口发出GET请求来列出您的 alpha 微调作业。在这种情况下,您需要检查上一步获得的Job ID是否最终状态为:succeeded。

完成后,您可以使用 result_files 对验证集的结果进行采样(如果您上传了验证集),并使用fine_tuned_model参数中的ID来调用经过训练的模型。

  •  
  •  
  •  
  •  
response = openai.FineTuningJob.retrieve(job_id)print("Job ID:", response["id"])print("Status:", response["status"])print("Trained Tokens:", response["trained_tokens"])

我们可以使用events接口跟踪微调的进度。您可以重新运行下面的单元几次,直到微调准备就绪。

  •  
  •  
  •  
  •  
  •  
response = openai.FineTuningJob.list_events(id=job_id, limit=50)events = response["data"]events.reverse()for event in events:     print(event["message"])

现在已经完成了,我们可以从job中获取fine-tuned model ID

  •  
  •  
  •  
response = openai.FineTuningJob.retrieve(job_id)fine_tuned_model_id = response["fine_tuned_model"]print("Fine-tuned model ID:", fine_tuned_model_id)

 

4、进行推理

最后一步就是使用经过微调的模型进行推理。与经典的FineTuning类似,您只需修改model参数为微调模型名称就可以调用ChatCompletions。

  •  
  •  
  •  
  •  
  •  
  •  
test_row = test_df.iloc[0]test_messages = []test_messages.append({"role": "system", "content": system_message})user_message = create_user_message(test_row)test_messages.append({"role": "user", "content": create_user_message(test_row)})pprint(test_messages)
  •  
  •  
  •  
  •  
response = openai.ChatCompletion.create(    model=fine_tuned_model_id, messages=test_messages, temperature=0, max_tokens=500)print(response["choices"][0]["message"]["content"])


恭喜,您现在已完成微调您自己的模型!

人工智能写作团队致力于打造行业性AI应用模型定制专业版AI微调模型把人工智能与您现有知识库和业务系统进行深度对接,打造更加智能和高效的企业应用,需求的企业或个人可以与我们取得联系

 

 

免责声明:本文仅代表作者观点,与本站无关。对本文全部或者部分内容的真实性、完整性、及时性,本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本文如有侵权,请联系我们将立即删除。
您的账号尚未绑定微信,可能无法及时接收到平台的通知,点击 绑定微信
【内容创作承诺】

0 回答

排序

默认排序

时间排序

暂无评论,快来发表你的评论吧!

推荐阅读

【高效省钱】亚马逊捡漏广告打法,快来试试!
【高效省钱】亚马逊捡漏广告打法,快来试试!原创李真言小马说跨境小马说跨境微信号xiaomadeal功能介绍提供最前沿跨境电商行业资讯,分享跨境电商平台运营技巧和经验。发表于收录于合集小马推荐公众号跨境大罗洞观,一位想探索跨境一切的年轻人,有说产品,有说讯息,有分享实用技巧,有分析产品,关注我,你能找到你想要的答案。最新推荐内容:1.2023年将会流行的双站外推新品方法2.【亚马逊3.0时代】小卖家
21赞
1评论
18482浏览
亚马逊运营如何安全获取Review?
亚马逊运营如何安全获取Review?原创助教张瑞晓跨境电商赢商荟跨境电商赢商荟微信号dianshangwin_com功能介绍推送跨境电商新闻,分享跨境电商干货,传递跨境电商技巧,揭秘跨境电商黑幕。365天,每天更新不断,您口袋里的跨境电商小助手。发表于收录于合集1.Vine计划亚马逊邀请最值得信任的reviewer留评,卖家无法与reviewer直接联系,而为了保住自己的VineVoice地位,r
18赞
0评论
18030浏览
Wayfair中文运营详解丨一本全面指导手册
Wayfair的运营与其他平台相比,有哪些特点和区别?如何有效地运营,实现迅速并且持续的订单增长?为了解答供应商的这些疑惑,Wayfair正式发布了中文运营指导手册!
19赞
0评论
18015浏览
全套推亚马逊新品的流程!(32篇)
全套推亚马逊新品的流程!(32篇)原创一味君一味君一味君微信号yiweijun222功能介绍七年亚马逊经验,精通站外站内的结合打法,毫无保留的分享亚马逊技巧,同时也喜欢交朋友。记得关注,可能你就是我的下一位朋友。发表于收录于合集#第1系列:亚马逊运营干货44个【本文约3000字,阅读需要8分钟】公众号推送改革,建议老铁们把一味君公众号【设为星标】,公众号文章才会第一时间推送给你。一,开篇之言二,推
19赞
0评论
18014浏览
​怎么提高Listing页面的转化率?
​怎么提高Listing页面的转化率?原创简单小马说跨境小马说跨境微信号xiaomadeal功能介绍提供最前沿跨境电商行业资讯,分享跨境电商平台运营技巧和经验。发表于收录于合集#亚马逊运营144个#亚马逊145个推荐公众号简单跨境,跨境何必想那么复杂?跟着简单跨境,化繁为简,简单,再简单,清晰,再清晰,明白再明白,简简单单,明明白白,跨境吧!!请叫我简单,简单致力于有趣的亚马逊知识分享,并结合视觉
19赞
0评论
17841浏览
搜索页面新升级,卖家:脸都丢到家了!
搜索页面新升级,卖家:脸都丢到家了!原创Momo跨境者资讯跨境者资讯微信号kuajingzhe功能介绍专注跨境电商亚马逊平台,行业一手咨询,一线运营干货,8年资深经验,助力CPC广告成长发表于收录于合集点击蓝字,关注我们···近期,亚马逊平台持续进行着频繁的更新和改进,为卖家和买家带来更好的使用体验。亚马逊的搜索结果页面再次进行了新的变化,这次的更新主要集中在部分产品搜索页面上。不再显示评论数量,
17赞
0评论
17789浏览
全托管模式是坑还是商机?
全托管模式是坑还是商机?原创Momo跨境者资讯跨境者资讯微信号kuajingzhe功能介绍专注跨境电商亚马逊平台,行业一手咨询,一线运营干货,8年资深经验,助力CPC广告成长发表于收录于合集点击蓝字,关注我们···“全托管模式”已普遍成为电商行业的标配,“只需供货,无需运营”让卖家们觉得这是一个双方共赢的模式。而亚马逊、TEMU、SHEIN、TikTokShop等多个电商平台入局,多种电商模式,采
20赞
0评论
17743浏览
eBay春季卖家更新丨费用问题一探究竟
如何计算按比例收取的成交费?
23赞
0评论
17707浏览
Temu多项政策调整!卖家压力“三”大
Temu多项政策调整!卖家压力“三”大原创小吒三头六臂跨境电商联盟三头六臂跨境电商联盟微信号STLB-36HAPPY功能介绍三头六臂跨境电商联盟,致力于打造公平、公正、共同成长的跨境电商生态圈,联合中小卖家,互帮互助共享资源,为卖家提供国内外公司注册、国际商标专利、VAT、欧代英代、会务沙龙等服务;提供跨境电商的行业资讯和运营干货,帮助卖家更好地创造价值!发表于收录于合集最近,论坛上有其他平台的卖
23赞
0评论
17705浏览
你有认真对待广告分组吗?瞬间找到浪费钱的词
你有认真对待广告分组吗?瞬间找到浪费钱的词原创跨境人雨果哥藏龙荟跨境电商藏龙荟跨境电商微信号amz12306功能介绍分享跨境电商的干货,帮助从业者解开眼前困惑大熊自媒体联盟发表于收录于合集(2023跨境电商新周期!2本书带你学习系统,全面,立体式的亚马逊运营)随着跨境电商进入大众视野站内广告引流,推新成为必备技能现阶段大家都会开广告但广告的重点在于优化,而不是开启优化的重点也不仅仅是竞价和否词如果
22赞
0评论
17677浏览
17
0
收藏
分享
举报