河南省汝州市文明建设网站,南昌网站建设兼职,网页制作成品图,优秀网站的链接利用GPT-3 Fine-tunes训练专属语言模型 文章目录什么是模型微调#xff08;fine-tuning#xff09;#xff1f;为什么需要模型微调#xff1f;微调 vs 重新训练微调 vs 提示设计训练专属模型数据准备清洗数据构建模型微调模型评估模型部署模型总结什么是模型微调#xff0… 利用GPT-3 Fine-tunes训练专属语言模型 文章目录什么是模型微调fine-tuning为什么需要模型微调微调 vs 重新训练微调 vs 提示设计训练专属模型数据准备清洗数据构建模型微调模型评估模型部署模型总结什么是模型微调fine-tuning
ChatGPT已经使用来自互联网的海量开放数据进行了预训练对于任何输入都可以给出通用回答。如果我们想让ChatGPT的回答更有针对性我们可以在输入时给出示例ChatGPT可以通过“示例学习”few-shot learning理解你希望它完成的任务并产生类似的合理输出。
但是“示例学习”每次需要给出示例使用起来很不方便。微调fine-tuning可以通过训练更多示例来改进“短学习”使用微调后的模型将不再需要在输入中提供示例。 这样既可以节约成本又可以实现更低延迟的请求。
更重要的是对于一些专业场景预训练模型可能无法达到理想的输出效果。此时需要我们给出更加具体和对口的数据对模型进行专门的强化使其能够更好地回答该领域的问题从而提升整体效果。
简而言之微调允许我们将自定义数据集与大型语言模型LLM相匹配让模型在我们的特定任务场景下依然表现良好。
为什么需要模型微调
微调 vs 重新训练
这里有必要区分一下微调fine-tuning 和 重新训练re-training 的概念。
简单地说重新训练是用新数据从头开始训练模型而微调是用新数据调整先前训练模型的参数。
针对特定任务场景微调比重新训练无论从时间还是费用上都更快更经济。
从头重新训练GPT-3 或 ChatGPT成本高的惊人。据估算GPT-3一次训练的成本大约140万美元ChatGPT模型更大一次训练大约需要1200万美元。这还不包括上万颗A100GPU的成本。一块Nvidia A100 80G显存显卡按5万计算1万块A100显卡光初始费用就5个小目标很少有企业能够负担得起这么巨大的软硬件支出。
在GPT-3上微调也有成本以功能最强的Davinci为例训练成本0.03美元/1千token这个成本相比重新训练天壤之别。下图是微调模型的训练和使用成本 所以目前对大多数企业来说只适合在GPT-3上做微调除了少数巨头绝大多数企业都没实力和能力重新训练。
微调 vs 提示设计
GPT-3支持“示例学习”few-shot learning我们可以通过在输入prompt时给予示例来提升模型输出效果但提升效果远不如微调的效果下面是微调和提示设计的效果对比 对比提示设计微调模型可以获得如下优势
更好的输出效果比示例学习更多的训练数据减少token消耗从而节约成本请求延迟更低
训练专属模型
可以通过以下6个主要步骤开始创建微调模型。为了方便大家理解我会结合我们在GPT-3上定制客服机器人的Python代码来演示微调过程。 数据准备
GPT-3微调需要的数据格式是专属JSONL格式形式如下
{prompt: prompt text, completion: ideal generated text}
{prompt: prompt text, completion: ideal generated text}
{prompt: prompt text, completion: ideal generated text}上面的数据格式很好理解——每行都包含一个prompt和一个completion表示特定提示对应的理想文本。
我们日常系统中的数据一般不会保存为JSONL格式因此需要先将数据转换为JSONL格式。OpenAI提供了命令行工具来帮我们将常见数据格式转化为JSONL格式用法如下
openai tools fine_tunes.prepare_data -f LOCAL_FILE其中LOCAL_FILE传入本地数据文件支持CSV、TSV、XLSX、JSON 和 JSONL格式只要文件中的数据格式是包含 prompt 和 completion 列或关键字就行。
数据准备阶段大家经常问的一个问题是*“我要准备多少数据用于微调才够”*。通常来说自然是“多多益善”但由于微调设计训练成本我们需要从中取得一个平衡。Open AI建议至少提供150–200个微调示例但我个人在实际项目中发现150-200个微调示例往往不够建议先从几百到一千条数据作为起始测试根据微调后的模型效果再决定是否追加更多训练数据。 GPT-3支持自定义模型的持续微调因此你可以随时用新数据在之前微调的模型上做进一步微调。 清洗数据
相比数据数量数据质量更为关键。
GPT-3本质上是一个大型神经网络它对我们来说是一个黑盒。所以它是典型的“garbage in, garbage out”模型输出质量与训练数据质量有着直接的关系。
数据质量和多样性越高模型就会工作得越好。通常需要一组不同的示例以确保模型能够很好地泛化到新的示例。最好能够提供一个正面示例和负面示例以确保模型能够处理各种输入。
为了验证微调模型质量我们通常会将数拆分为训练集和验证集通常按照80%/20%80\%/20\%80%/20%的比例进行拆分。 ⚠注意除JSONL格式外训练数据和验证数据文件必须是UTF-8编码并包含字节顺序标记BOM文件大小不能超过200MB。 构建模型
微调数据准备好后我们就协议开始着手微调模型了。在开始微调训练之前我们需要先确定微调的基础模型。
每个微调工作都从一个基础模型开始默认为curie。基础模型不同会影响模型的性能和微调模型的成本。目前支持微调的基础模型包括ada、babbage、curie或davinci。
下面是用Python完成模型构建
import openaiopenai.api_key YOUR_API_KEYresp openai.FineTune.create(training_filetraining_file_path, validation_filevalidation_file_path, check_if_files_existTrue, modeldavinci)
job_id resp[id]
status resp[status]
print(f微调任务ID: {job_id}状态: {status}\n)上面的代码选择davinci作为基础模型并传入了训练集和验证集的本地文件路径创建微调任务。如果创建成功则会返回微调任务的id及状态。
创建微调任务还支持其他参数说明如下
参数名类型默认值说明training_filestring训练集文件路径必须是JSONL格式validation_filestringnull验证集文件路径必须是JSONL格式如果提供则在微调期间定期生成验证度量。这些指标可以在微调结果文件中查看。训练集数据与验证集数据必须互斥。check_if_files_existbooleantrue是否检验文件是否存在modelstringcurie要微调的基础模型的名称。可以选择ada、babbage、curie、davinci或2022-04-21之后创建的微调模型。n_epochsint4训练几轮。batch_sizeintnull训练的批次大小。默认情况下批次大小将动态配置为训练集样本数的约0.2%上限为256。通常来说较大的批次大小对于较大的数据集更有效。learning_rate_multiplierfloatnull学习率系数。微调学习率预训练的原始学习率乘以该值。默认情况下学习率系数为0.05、0.1或0.2具体取决于最终批次大小较大的学习率往往在较大的批次大小下表现更好。我们建议使用0.02到0.2范围内的值进行实验以查看产生最佳结果的方法。prompt_loss_weightfloat0.01提示损失权重。控制模型学习生成提示生成输出的权重为1并增加输出较短时训练的稳定性。如果提示非常长相对于输出那么减少这个权重可以避免过度学习。compute_classification_metricsbooleanfalse如果为true则在每轮训练结束时使用验证集计算效果例如准确度和F-1 score 。这些指标可以在结果文件中查看。classification_n_classesintnull分类任务中的类别数。多类别分类需要此参数。classification_positive_classstringnull二分类任务中的正例。在进行二分类时需要此参数来生成精度、召回率和F1 score 。classification_betasarraynull如果提供将按照指定的beta值计算F-beta分数。F-beta是F-1的概括。仅用于二分类任务。beta为1即F-1分数时准确率和召回率的权重相同。beta越大召回率的权重越大准确率的权重越小。beta分数越小准确率权重越高召回率权重越低。suffixstringnull最多40个字符的字符串将添加到微调后的模型名称中。
微调模型
微调任务创建之后通常处于Pending状态这是因为OpenAI系统中通常有其他任务排在你之前我们的任务会先放在队列中等待被处理。一般来说一旦进入训练状态微调训练可能需要几分钟或几小时具体取决于选择的基础模型和数据集的大小。我们可以用微调任务id来查询微调任务的状态
while status not in [succeeded, failed]:time.sleep(2)# 获取微调任务的状态status openai.FineTune.retrieve(idjob_id)[status]print(f微调任务ID: {job_id}状态: {status})print(f微调任务ID: {job_id} 完成 结束状态: {status}\n)评估模型
微调成功后都会有训练结果输出可以通过如下代码获取评估结果
fine_tune openai.FineTune.retrieve(idjob_id)
result_files fine_tune.get(result_files, [])
if result_files:result_file result_files[0]resp openai.File.download(idresult_file[id])print(resp.decode(utf-8))这里有丰富的模型评估数据供我们对模型微调质量进行评估。
部署模型
如果模型效果满意我们就可以将模型投入生产使用了。openai.FineTune.retrieve()方法返回的数据结构中的fine_tuned_model就是微调后的模型名称。可以直接拿这个模型名称在API中使用。
model_name openai.FineTune.retrieve(idjob_id)[fine_tuned_model]response openai.Completion.create(modelmodel_name,prompt今天晚上吃什么好呢\n,temperature0.7,max_tokens256,top_p1,frequency_penalty0,presence_penalty0,stop[END]
)总结
ChatGPT最让人惊艳的一点就在于能够像人一样去对话。这种流畅的人机对话背后所展现的强大的自然语言理解力和表达力目前只表现在通用领域。一旦进入某个专业领域ChatGPT经常会“一本正经胡说八道”。此时用特定领域的知识对模型进行微调是时间成本和经济成本最高的解决方案。事实证明哪怕是最小的训练数据也会带来明显的表现提升。
未来随着LLM变得更大、更易访问和开源相信在不久的将来我们可以看到微调在自然语言处理中无处不在。同时我也非常期待边缘学习的突破可以将大模型训练的成本降下来那时我们再来看如何从头重新训练一个大模型。 文章转载自: http://www.morning.qkpzq.cn.gov.cn.qkpzq.cn http://www.morning.nytgk.cn.gov.cn.nytgk.cn http://www.morning.qfdmh.cn.gov.cn.qfdmh.cn http://www.morning.rxnr.cn.gov.cn.rxnr.cn http://www.morning.bwmq.cn.gov.cn.bwmq.cn http://www.morning.ityi666.cn.gov.cn.ityi666.cn http://www.morning.jtmrx.cn.gov.cn.jtmrx.cn http://www.morning.sxcwc.cn.gov.cn.sxcwc.cn http://www.morning.bhdyr.cn.gov.cn.bhdyr.cn http://www.morning.lmmh.cn.gov.cn.lmmh.cn http://www.morning.dnvhfh.cn.gov.cn.dnvhfh.cn http://www.morning.rwbh.cn.gov.cn.rwbh.cn http://www.morning.nsfxt.cn.gov.cn.nsfxt.cn http://www.morning.cznsq.cn.gov.cn.cznsq.cn http://www.morning.krjyq.cn.gov.cn.krjyq.cn http://www.morning.xdpjf.cn.gov.cn.xdpjf.cn http://www.morning.nylbb.cn.gov.cn.nylbb.cn http://www.morning.mnrqq.cn.gov.cn.mnrqq.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.xzsqb.cn.gov.cn.xzsqb.cn http://www.morning.krnzm.cn.gov.cn.krnzm.cn http://www.morning.swbhq.cn.gov.cn.swbhq.cn http://www.morning.spnky.cn.gov.cn.spnky.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.yfcbf.cn.gov.cn.yfcbf.cn http://www.morning.jkfyt.cn.gov.cn.jkfyt.cn http://www.morning.dshxj.cn.gov.cn.dshxj.cn http://www.morning.fpqq.cn.gov.cn.fpqq.cn http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn http://www.morning.snccl.cn.gov.cn.snccl.cn http://www.morning.hlmkx.cn.gov.cn.hlmkx.cn http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn http://www.morning.fxzgw.com.gov.cn.fxzgw.com http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.ngqty.cn.gov.cn.ngqty.cn http://www.morning.qkqpy.cn.gov.cn.qkqpy.cn http://www.morning.mzskr.cn.gov.cn.mzskr.cn http://www.morning.dbtdy.cn.gov.cn.dbtdy.cn http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn http://www.morning.jfxth.cn.gov.cn.jfxth.cn http://www.morning.sxwfx.cn.gov.cn.sxwfx.cn http://www.morning.rdkt.cn.gov.cn.rdkt.cn http://www.morning.rlqml.cn.gov.cn.rlqml.cn http://www.morning.gczzm.cn.gov.cn.gczzm.cn http://www.morning.wgtnz.cn.gov.cn.wgtnz.cn http://www.morning.srjgz.cn.gov.cn.srjgz.cn http://www.morning.xhqr.cn.gov.cn.xhqr.cn http://www.morning.crfjj.cn.gov.cn.crfjj.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.qdbcd.cn.gov.cn.qdbcd.cn http://www.morning.lpyjq.cn.gov.cn.lpyjq.cn http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.rkfxc.cn.gov.cn.rkfxc.cn http://www.morning.amlutsp.cn.gov.cn.amlutsp.cn http://www.morning.bxdlrcz.cn.gov.cn.bxdlrcz.cn http://www.morning.lmrjn.cn.gov.cn.lmrjn.cn http://www.morning.bpmnx.cn.gov.cn.bpmnx.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.lrflh.cn.gov.cn.lrflh.cn http://www.morning.lpzqd.cn.gov.cn.lpzqd.cn http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn http://www.morning.24vy.com.gov.cn.24vy.com http://www.morning.sfsjh.cn.gov.cn.sfsjh.cn http://www.morning.kkysz.cn.gov.cn.kkysz.cn http://www.morning.xlmpj.cn.gov.cn.xlmpj.cn http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn http://www.morning.mnrqq.cn.gov.cn.mnrqq.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.qmpbs.cn.gov.cn.qmpbs.cn http://www.morning.jbtlf.cn.gov.cn.jbtlf.cn http://www.morning.fbzdn.cn.gov.cn.fbzdn.cn http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn http://www.morning.nlrxh.cn.gov.cn.nlrxh.cn http://www.morning.lxyyp.cn.gov.cn.lxyyp.cn http://www.morning.bpmnh.cn.gov.cn.bpmnh.cn http://www.morning.krtky.cn.gov.cn.krtky.cn http://www.morning.bscsp.cn.gov.cn.bscsp.cn http://www.morning.rddlz.cn.gov.cn.rddlz.cn http://www.morning.qbfwb.cn.gov.cn.qbfwb.cn