开源的大型语言模型(LLM)如Llama-2和Mistral因其灵活性和易用性而受到欢迎。您可以将它们部署在自己的服务器和计算机上,并为您的应用进行微调。部署得当的Llama-2模型可以为您节省时间和金钱,同时满足数据隐私要求。
然而,对LLM进行微调需要收集和准备数据、编写用于训练模型的代码、调整超参数、进行训练和测试等步骤。这些挑战往往使得个人和组织难以创建自定义模型。
为了解决这一问题,OthersideAI的创始人兼CEO马特·舒默(Matt Shumer)创建了claude-llm-trainer,这是一个只需一条指令即可帮助您针对特定任务微调Llama-2的工具。
如何使用claude-llm-trainer
Claude-llm-trainer是一个Google Colab笔记本,其中包含了用于微调Llama-2 7B以完成特定任务的代码。要使用claude-llm-trainer,您只需在第一个单元格中配置设置,包括您希望为训练模型而设置的任务描述、示例数量以及您的Claude API密钥(如果您没有Claude密钥,可以在Anthropic Console上注册免费账户并创建API密钥)。
之后,按顺序运行单元格,直到笔记本末尾。模型将保存在您的Google Drive中。现在,您可以下载模型并在自己的服务器上使用。
生成训练示例和微调模型的时间长短取决于您的Colab和Claude订阅情况。除了任务配置外,您还可以执行以下一些基本操作来配置您的训练模型:
– Claude-llm-trainer的默认基础模型是“NousResearch/llama-2-7b-chat-hf”。要更改模型类型,请将Cell 7中的“model_name”变量更改为所需模型的路径。例如,要使用Mistral-7B模型,您可以将其设置为“mistralai/Mistral-7B-Instruct-v0.2”。
– 要更改训练模型的存储位置,请将Cell 10中的“model_path”变量设置为您选择的Google Drive位置。
– 当您有100个训练示例并正在微调较小的模型之一时,该过程在免费的Colab层级上运行良好。但是,如果您想在更大的模型上进行更重的训练,请考虑注册Pro层级并使用更强大的GPU。
– 如果您可以访问更强大的计算机集群,如Amazon AWS或Microsoft Azure,您可以将Colab作为笔记本文档下载并在您选择的计算平台上使用。但是,您必须为存储平台(如Amazon S3、Azure Blob、本地存储等)修改Cell 10。
Claude-llm-trainer的工作原理
尽管Claude-llm-trainer非常方便,但它并不一定适合所有应用。为了确定它是否适合您的任务,您应该了解其工作原理。
在Cell 2中,Claude-llm-trainer使用Claude 3来生成训练示例。这个过程称为模型蒸馏,其中使用强大的模型(例如GPT-4或Claude 3),也称为“教师”模型,来训练较弱的模型(例如Llama-2或Mistral),即“学生”模型。
了解这一点很重要,因为如果训练器模型无法完成您的目标任务,那么使用模型蒸馏对您的应用将不会有用。例如,如果您想为您的LLM微调一个非常特殊的任务,这个任务需要与公司相关的专有知识,那么模型蒸馏可能就不会很有效。最好的方法是使用教师模型进行实验,看看它是否能完成您想要训练LLM的目标任务。默认情况下,Claude-llm-trainer使用Claude 3家族中最小、最快的Haiku作为教师模型来生成示例。您可以在Cell 2中修改教师模型。
在Cell 3中,Claude-llm-trainer使用Claude 3 Opus为训练后的模型生成系统提示。一旦单元格运行完毕,它将显示系统提示。如果您对系统提示不满意,可以多次运行该单元格。当您使用微调后的LLM进行下游任务时,您将需要这个系统提示。
在Cell 4和Cell 5中,生成的示例被编译成Pandas DataFrame,并被拆分为训练集和测试集。该工具还将数据集作为json文件存储在您的笔记本中。您可以下载它们以备后用。(请注意,您Colab环境中的文件将在会话结束时被删除。)
在Cell 6中,下载用于微调LLM所需的库。如果您更改了要微调的模型,您可能需要更改库的版本。Cell 7配置用于微调模型的超参数。在这里,您可以进行进一步的调整以改进模型的训练。
Cell 8是真正进行模型微调的地方。在模型经历多个训练周期时,您可以跟踪进度以及模型在训练和测试数据集上性能的提升。值得注意的是,Claude-llm-training使用低秩适应(LoRA)来训练模型。LoRA是一种技术,它在微调过程中仅使用基础模型中的一部分参数,这样做更快且更节省内存。
在Cell 9中,使用样本命令对训练后的模型进行测试。请确保将提示更改为与您的任务相匹配。
在Cell 10中,将LoRA适配器合并到主模型中,并将其存储在您的Google Drive中。最后两个单元格包含加载模型并在您的应用程序中使用的必要代码。