Skip to content

前言

image.png

我现在的模式便是有问题就会先问问ChatGPT,甭管它给予我的答案是正确的、错误的、模棱两可的,都可以给予我一定的参考。 下面我主要来尝试一下,如何通过代码来实现微调呢? Fine-tuning - OpenAI API 这个链接算是官网的指导,其实我就是看着官网的指导进行的

准备环境

可以先找到一个指定的文件夹,这里前提是要先安装 python

image.png

如果执行没有看到版本信息要先去安装下载了,然后顺序执行以下指令

// 安装依赖
pip install --upgrade openai

// 设置 OPENAI_API_KEY
export OPENAI_API_KEY="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"

// 设置openai 代理
export OPENAI_API_BASE="https://service-r7s1v88u-1253646855.usw.apigw.tencentcs.com/v1"

准备数据

数据文件为test.jsonl,这里的数据我也不准备多了,对我来说只是实践一下如何来微调数据产生自己的模型而已。 下面是我随便准备了两条json数据

{"prompt": "请使用golang写一个冒泡排序的算法", "completion": "这个算法不需要生成了,本地已经存在,请换其他问题"}
{"prompt": "请告诉我XX公司发展的怎么样了", "completion": "融资款已到,XX项目的首付剩余款也在路上,已步入正轨"}

重新格式化数据

openai tools fine_tunes.prepare_data -f test.jsonl

执行后会提供给我们一系列的建议,最后输出一个它建议的数据格式

image.png

创建微调模型

根据上面的数据进行创建微调模型,基础模型为 davinci,你也可以根据需要选择其他的模型。如果数据量很大,价格差距还是蛮大的

image.png

openai api fine_tunes.create -t "test_prepared.jsonl" -m "davinci"

image.png

image.png

看上图发现原来是stream流应该是不支持的, 这个是腾讯云的问题,于是我换成了使用cloudflare https://dash.cloudflare.com 搭建的代理

image.png

然后再次运行立马成功了

微调模型的调用

  • 第一种直接使用命令调用 image.png

  • 第二种使用接口调用

image.png

后续

通过官网 https://platform.openai.com/docs/guides/fine-tuning后面可以继续发现以下功能:

  • 可以删除微调的模型
  • 可以对微调的模型继续微调
  • 可以对微调模型名称进行自定义
  • 等等还有其他许多的细节知识有兴趣的可以去看原版

总结

如何使用OpenAI fine-tuning(微调)训练属于自己的专有模型? - 知乎 (zhihu.com) 这是知乎上一个大牛自己实测数据有兴趣的可以看一下。其实花费70、80美元还是蛮大的而且只是1000条数据而已,而且最终达到的效果并不是特别理想。Embedding模型其实在某些场景下的相似性、相关联结果还是非常棒的。对于微调模型暂时只能学习一下,感觉上并不能进行应用使用,或者使用的方法可能还存在问题,这里的实践仅供学术的参考。

本文所有代码都在我的go代码仓库: https://github.com/aehyok/go-api

我的个人博客:http://vue.tuokecat.com/blog

我的个人github:https://github.com/aehyok

我的前端项目:pnpm + monorepo + qiankun + vue3 + vite3 + 工具库、组件库 + 工程化 + 自动化
不断完善中,整体框架都有了
在线预览:http://vue.tuokecat.com
github源码:https://github.com/aehyok/vue-qiankun

本文正在参加「金石计划」