智能体课程文档

为函数调用微调模型

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

为函数调用微调模型

我们现在准备好为函数调用微调我们的第一个模型了 🔥。

我们如何训练模型进行函数调用?

答案:我们需要数据

模型训练过程可分为 3 个步骤

  1. 模型在大规模数据上进行预训练。该步骤的输出是一个预训练模型。例如,google/gemma-2-2b。它是一个基础模型,只知道如何预测下一个 token,不具备强大的指令遵循能力

  2. 为了在聊天语境中发挥作用,模型需要微调以遵循指令。在这一步,它可以由模型创建者、开源社区、您或任何其他人进行训练。例如,google/gemma-2-2b-it 是由 Gemma 项目背后的 Google 团队进行指令微调的模型。

  3. 然后,模型可以根据创建者的偏好进行对齐。例如,一个客户服务聊天模型必须永远不对客户无礼。

通常,像 Gemini 或 Mistral 这样的完整产品会经历所有 3 个步骤,而您在 Hugging Face 上找到的模型已经完成了这些训练的一个或多个步骤。

在本教程中,我们将基于 google/gemma-2-2b-it 构建一个函数调用模型。我们选择微调模型 google/gemma-2-2b-it 而不是基础模型 google/gemma-2-2b,因为微调模型已经针对我们的用例进行了改进。

从预训练模型开始将需要更多的训练才能学习指令遵循、聊天和函数调用

通过从指令微调模型开始,我们最大限度地减少了模型需要学习的信息量

LoRA(大型语言模型的低秩适应)

LoRA 是一种流行且轻量级的训练技术,可显著减少可训练参数的数量

它的工作原理是向模型中插入少量新的权重作为适配器进行训练。这使得使用 LoRA 进行训练更快、内存效率更高,并产生更小的模型权重(几百兆字节),这些权重更容易存储和共享。

LoRA inference

LoRA 通过向 Transformer 层添加成对的秩分解矩阵来工作,通常专注于线性层。在训练过程中,我们将“冻结”模型的其余部分,并且只更新这些新添加的适配器的权重。

通过这样做,我们需要训练的参数数量大大减少,因为我们只需要更新适配器的权重。

在推理过程中,输入被传递到适配器和基础模型中,或者这些适配器权重可以与基础模型合并,从而不会产生额外的延迟开销。

LoRA 对于使大型语言模型适应特定任务或领域特别有用,同时保持资源需求可管理。这有助于减少训练模型所需的内存。

如果您想了解更多关于 LoRA 如何工作的信息,您应该查看此教程

为函数调用微调模型

您可以访问教程笔记本 👉 此处

然后,点击 在 Colab 中打开,以便在 Colab Notebook 中运行它。

< > 在 GitHub 上更新