由于在各种任务中的通用性,像ChatGPT和Llama 2这样的大型语言模型(LLM)广受欢迎。然而,有些应用程序需要使用自定义数据对这些模型进行微调,以获得更好的性能。
不幸的是,针对特定应用程序对大型语言模型(LLM)进行微调通常是复杂和令人沮丧的,并且在很大程度上取决于应用程序类型和所需的数据。幸运的是,HyperWrite公司首席执行官Matt Schumer开发了一个非常有用的工具--gpt-llm-trainer,它简化了Llama 2或GPT-3.5 Turbo的微调过程。
gpt-llm-trainer将微调LLM的复杂任务减少到单个简单明了的指令,让用户更容易根据自己的需求调整这些模型。
gpt-llm-trainer采用了一种称为“模型蒸馏”(Model Distillation)的技术。这个过程在本质上是将知识从一个规模较大的机器学习模型(教师)转移到一个规模较小的机器学习模型(学生)。在LLM的场景中,模型蒸馏通常涉及教师模型生成特定于任务的训练示例,这些示例随后用于训练规模较小的模型。
gpt-llm-trainer对开发者的任务进行描述,使用GPT-4自动为其要训练的规模较小模型生成训练示例。然后,这些示例用于开发者微调选择的模型,目前包括Llama 2和GPT-3.5 Turbo。
需要注意的是,模型蒸馏并不是一种微调LLM的万能解决方案。在许多情况下,开发者可能仍然需要经历手动管理自己数据的艰难过程。然而,模型蒸馏在教师模型的表现上超过学生的情况下被证明特别有效。
为了确定蒸馏是否是完成任务的一种正确方法,开发者可以参考基准绩效报告,或者对教师和学生模型进行自己的实证研究。这将帮助开发者做出明智的决定,并优化微调过程。
图1:LLM模型蒸馏
开发者可以在相关网站访问gpt-llm-trainer的GitHub页面。Matt还准备了两个谷歌Colab笔记本,一个用于GPT-3.5 Turbo,另一个用于Llama 2,这使得无需设置自己的Python环境即可轻松运行它们。
要使用gpt-llm-trainer工具,首先需要一个OpenAI帐户和一个有效的API密钥。这把密钥应该记在笔记本上,上面写着“你的密钥在这里”(YOUR KEY HERE)。
在笔记本的第一个单元格中,将输入任务的描述、所需示例的数量以及温度,这将调整模型的创造力水平。接下来的步骤很简单:依次运行单元以生成示例并训练模型。
如果使用的是Llama 2笔记本,生成的模型将保存到谷歌云盘中。如果使用的是GPT-3.5笔记本,则模型将存储在开发者的OpenAI帐户中。
值得注意的是,OpenAI的服务条款禁止使用其LLM来训练竞争产品的模型。这意味着开发者不能将经过gpt-llm-trainer微调的模型用于商业目的。但可以很容易地使用它来创建自己的写作或编码助手或其他个人日常使用的工具。
还要注意的是,数据生成和训练过程可能很耗时,这取决于开发者希望生成和微调模型的示例数量。由于示例是使用GPT-4生成的,因此监控训练成本非常重要,可以用不到一美元的费用生成大约50个简短的训练样本。但是,如果计划生成一个大型数据集,需要谨慎地考虑成本。你可以从生成一小批示例开始,然后评估它们的质量并根据需要调整指令,然后再继续创建整个数据集。
对于使用Llama 2笔记本的用户,gpt-llm-trainer将默认微调“NousResearch/ Llama -2-7b-chat-hf”模型,无需填写申请表即可访问。如果想调整原来的Meta Llama 2,需要修改代码并提供Hugging Face密码。另外,微调将使用Colab的GPU执行,因此请确保将运行环境配置为使用GPU。
虽然gpt-llm-trainer是一个功能强大的工具,但它基于谷歌Colab的界面并不是最友好的,因为Colab通常不是为生产环境设计的。
此外,还有几个功能可以增强这个工具的可用性。例如,生成的训练示例将不会被存储,并且在Colab会话结束后将被丢弃。但是,这些示例在会话期间存储在Pandas DataFrame中,并且通过一些编码,可以将它们导出到CSV文件以供将来使用。
一个有趣的想法是将gpt-llm-trainer移植到Streamlit,这将为微调LLM提供一个更加用户友好的界面,允许使用开发者自己的训练示例进行引导,并允许存储生成的示例以供以后使用。虽然gpt-llm-trainer是LLM蒸馏的一个很好的起点,但是有很多方法可以改进它。
原文标题:How to fine-tune GPT-3.5 or Llama 2 with a single instruction,作者:Ben Dickson
链接:https://bdtechtalks.com/2023/11/03/gpt-llm-trainer/