现在我们已经准备好了微调 GPT 模型需要的数据,下面就可以去创建微调模型了。用一下 openai 这个命令行工具,执行的是 api fine_tunes.create ,用 -t 这个选项设置一下训练数据文件所在位置,这里就是当前目录 data 里的 posts_new_prepared_train.jsonl 这个文件。
然后用 -m 选项可以设置一下要使用的基础模型,比如用一下 ada 作为我们微调的这个模型的基础模型。后面再用 --suffix 这个选项,设置一下模型的名称的后缀,比如 classify subject。
执行一下,这个命令会先把训练数据上传到 OpenAI 的服务器,然后创建微调。按一下 ctrl + c 可以停止显示,但是不会中断微调任务。
如果想继续跟进微调任务,可以使用这个 openai api fine_tunes.follow 命令,一个小 i 选项,后面是创建的这个微调的 id。训练需要的时间跟我们提供的数据量还有选择的基础模型有关,我们这次用的数据量比较少,大概需要几分钟的时间可以完成微调。
完成以后,会提示 Fine-tune succeeded。
测试模型
这里会显示模型的名字,我这里就是 ada 冒号,然后是 ft,表示 fine-tune,后面是组织的名称,ninghao,冒号的右边是在创建微调模型的时候设置的 suffix 选项的值,最后是一个日期。
这样我们就可以使用这个微调好的模型去做一些任务了。在命令行可以使用这个 openai api completions.create 命令测试使用这个微调模型。
-m 选项的后面是模型的名字,在 -p 选项的后面可以输入 prompt。 比如 '创建Vue.js组件-->',注意在这个 prompt 的结尾需要加上我们在训练模型的时候,在训练数据的 prompt 结尾添加的分隔符,这里就是 --> 。
执行一下,补全文本里显示这个标题的分类是 '前端开发'。
Playground
下面可以在 Playground 里面再测试一下,在 Model 这里,现在会出现我们自己训练的微调之后的模型,选择使用这个模型。把 temperature 设置成 0 ,再设置一下 Stop sequences,需要设置成 $!,就是我们训练这个模型的时候用的停止符号。
然后在左边输入一个 prompt “使用 Nest.js 构建一个 GraphQL 服务-->” 发送请求,模型补全的文本就是根据标题内容推断出来的类别。
这次我们在写 prompt 的时候,并没有提供示例数据,因为用的这个模型是微调过的,在训练这个模型的时候,模型已经从提供的训练数据里面学会了处理这种任务,所以就不需要再提供示例数据了。
View code
点击 view code,这里会显示使用这个模型的方法,可以选择 json,你会发现,如果通过 rest 接口使用这个模型,需要在请求的主体数据里面,把 model 属性的值设置成我们自己微调之后的这个模型的名字。