如何高度优化适用于企业的AI (二) 数据准备
我们先从快速浏览整个过程
- 首先, 我们需要数据, 要尽可能使用CSV/Json格式, 基于这些信息, 我们要让AI获取所有所需要的信息来正确的完成它的工作
- 准备数据, 微调过程需要很长的书剑才能运行, 我们肯定是不希望出现错误的, 所以我们使用OpenAI的数据准备工具(CLI tool)来处理我们的数据, 让格式正确, 这样就不会被拒绝
- 上传数据, 告诉OpenAI来制作我们的微调模型, 同样的, 我们同样使用CLI tool来执行此操作, 启动是很快的, 但这可能需要很长时间来处理请求
- 当上面这个过程结束的时候, 我们会有自己特殊的端点, 然后我们可以使用我们新训练的模型来进行对话了
以上就是这整个过程的工作原理, 下面让我们一步一步的开始操作
1.Get Data
我们需要一些数据来微调我们的模型, 那第一个问题来了: 微调模型需要多少数据?
OpenAI给出了我们建议:
原文: You should provide at least a fewhundred high-quality examples,ideally vetted by human experts.
翻译: 你应该提供至少几百个高质量的例子, 最好由人类专家审查
更重要是, OpenAI说:
原文: Increasing the number of examples isusually the best and most reliable wayofimproving performance.
翻译: 增加示例数量, 通常是提高性能最好最可靠的方法
所以, 以上是微调模型的原则, 这是绝对要记住的
那有了数据量, 我们再来谈谈数据格式
下面是OpenAI官方给出的要求, 希望数据为 Json-L
格式, 并给我们一个示例
Json-L
是每行都用Json格式化的数据, 每行都必须是有效的Json, 而且每行都必须以换行符结尾
当然, 你如果不会写也不要紧, 我们会使用一种特殊的工具来创建它
现在让我们来使用更简单的CSV或逗号分隔值数据, 然后让OpenAI tool来完成繁重的工作
OpenAI对于我们的数据给了一些进一步的标准
原文: Each prompt should end with a separator to showwhere the prompt ends and the completion begins.
翻译: 每个提示都已分隔符结尾来显示提示结束位置和完成的开始位置
原文: Each completion should start with a whitespace
翻译: 每个完成都应该以空白开始
原文: Each completion should end with a stop sequence toinform the model where the completion ends.
翻译: 每个完成都应该以一个停止序列结束,以告知模型完成的终点
stop sequence
是什么我们暂时还不需要, 等我们后面到项目用的时候再来讨论它
坏消息是: 官方并没有告诉我们到底想要什么, 甚至是什么是停止序列
, 什么样的分隔符, 甚至连个例子都没有
好消息是: 它提供了工具, ↓
看一下这次训练我准备的数据
prompt
里给的是关键词, completion
里给的是回复, 每个数据都是来自于真实的数据
当然, 你也可以不必局限于这个格式, 你也可以直接在下面写一段总结式的内容, 直接作为 prompt
理想情况下, 我们需要更多的数据来训练, 但这里, 我们用这部分数据来尝试微调的工作原理
下面我们开始进行数据处理前的准备
我们将会使用终端来进行数据处理, 使用的python3
以及pip
(自己安装)
升级pip
到最新版 python3 -m ensurepip --upgrade
安装OpenAI工具 pip install --upgrade openai
这里要特别说明一下, 我们创建的微调模型是只有我们自己才能使用的, 所以, OpenAI工具需要我们的API秘钥
你可以使用export OPENAI_API_KEY="sk-vXXXXXXXXXXXXXXXXXXXXXXXXXXX4QbUMjo"
这个命令添加openAI秘钥
PS: windows系统是不认export指令的
所以到这里我们就开始使用CentOS系统了, 上面的操作都在CentOS系统上执行一遍
到这个命令为止, 系统并不会返回我们执行的结果, 说明已经成功接受了我们的秘钥
2.Prep Data
截止到当前操作, 我们已经成功安装OpenAI CLI并指定上了我们的秘钥
下面我们开始用它来准备我们的数据
现在, 我已经将准备好的数据放到了服务器上
然后让我们进入到这个文件夹下, 并执行
openai tools fine_tunes.prepare_data -f XXXX.csv
这个命令就是来告诉OpenAI使用微调工具来准备我们的数据, -f
标识将识别数据文件
这里我们遇到了一个问题
我们的终端一直在报: openai: 未找到命令
查阅了一些资料后发现, 可能是由于在使用OpenAI CLI命令时尚未激活虚拟环境(Virtual Environment)所致
所以我们再来创建一个虚拟环境
python3 -m venv myenv
source myenv/bin/activate
pip install openai
openai --version
可以看到, 现在确实能够使用OpenAI CLI了
继续重复上面的命令, 我们又遇到了新的问题
OK, 继续安装pandas
pip install openai pandas
pandas
安装成功, 我们再来试一下
然后下面的, 都选y就可以了
然后就得到了OpenAI CLI给处理好的Jsonl
文件
现在我们已经准备好我们的数据了, 下面就开始进行模型微调~
关注一下, 持续更新~