说是基于大模型,训练自己的大模型,其实就是 fine_tunes 微调。
这篇文章会写的更意识流一些,更多的是作为笔记。下面记录的代码也都是基于命令行,进行技术验证,非python代码。
相关概念 利用GPT-3 Fine-tunes训练专属语言模型
英文过关的话可以直接查看官方文档: https://platform.openai.com/docs/guides/fine-tuning
准备
安装openai
1pip install --upgrade openai设置openai api key
linux
1export OPENAI_API_KEY="<OPENAI_API_KEY>"windows
1setx OPENAI_API_KEY "<OPENAI_API_KEY>"上传训练文件(非必要)
这步可以跳过,发现后面的fine_tunes.create可以直接上传当前目录下的文件
GPT 列出所有上传的文件
1curl https://api.openai.com/v1/files -H "Authorization: Bearer sk-***"或
1set OPENAI_API_KEY="sk-***"2curl https://api.openai.com/v1/files -H "Authorization: Bearer %OPENAI_API_KEY%"GPT 上传文件
1curl https://api.openai.com/v1/files -H "Authorization: Bearer sk-***" -F purpose="fine-tune" -F file="@file.jsonl"返回
1{2 "object": "file",3 "id": "file-***",4 "purpose": "fine-tune",5 "filename": "file.jsonl",6 "bytes": 281,7 "created_at": 168*******,8 "status": "uploaded",9 "status_details": null10}微调模型
创建微调模型
1openai api fine_tunes.create -t file.jsonl -m ada --suffix "test_model"1openai api fine_tunes.create -t file-*** -m davinci --suffix "test_d_model"可以忽略前面的单独上传文件,这里可以点击回车,自动上传当前目录下的文件 这里使用已上传的文件,可以直接输入文件id,如file-***
列出微调模型
1openai api fine_tunes.list跟踪事件流
1openai api fine_tunes.follow -i ft-***输出
1[2023-07-***] Created fine-tune: ft-***2[2023-07-***] Fine-tune costs $0.003[2023-07-***] Fine-tune enqueued. Queue number: 24[2023-07-***] Fine-tune is in the queue. Queue number: 15[2023-07-***] Fine-tune is in the queue. Queue number: 06[2023-07-***] Fine-tune started7[2023-07-***] Completed epoch 1/48[2023-07-***] Completed epoch 2/49[2023-07-***] Completed epoch 3/410[2023-07-***] Completed epoch 4/411[2023-07-***] Uploaded model: ada:ft-8000:text-model-2023-07-***12[2023-07-***] Uploaded result file: file-***13[2023-07-***] Fine-tune succeeded14
15Job complete! Status: succeeded 🎉3 collapsed lines
16Try out your fine-tuned model:17
18openai api completions.create -m ada:ft-8000:text-model-2023-07-*** -p <YOUR_PROMPT>1openai api completions.create -m davinci:ft-8000:test-d-model-2023-07-*** -p <YOUR_PROMPT>列出微调模型
1openai api fine_tunes.list输出
1{2 "object": "list",3 "data": [4 {5 "object": "fine-tune",6 "id": "ft-***"7 "hyperparams": {8 "n_epochs": 4,9 "batch_size": 1,10 "prompt_loss_weight": 0.01,11 "learning_rate_multiplier": 0.112 },13 "organization_id": "org-***",14 "model": "ada",15 "training_files": [31 collapsed lines
16 {17 "object": "file",18 "id": "file-***",19 "purpose": "fine-tune",20 "filename": "file.jsonl",21 "bytes": 281,22 "created_at": 168*******,23 "status": "processed",24 "status_details": null25 }26 ],27 "validation_files": [],28 "result_files": [29 {30 "object": "file",31 "id": "file-***",32 "purpose": "fine-tune-results",33 "filename": "compiled_results.csv",34 "bytes": 894,35 "created_at": 168*******,36 "status": "processed",37 "status_details": null38 }39 ],40 "created_at": 168*******,41 "updated_at": 168*******,42 "status": "succeeded",43 "fine_tuned_model": "ada:ft-8000:text-model-2023-07-***"44 }45 ]46}参考
利用GPT-3 Fine-tunes训练专属语言模型
手把手带你微调自己的GPT-davinci-003
https://platform.openai.com/docs/guides/fine-tuning