查尔斯·福斯特 (Charles Foster)
在 Finetune,我们正在构建 AI 解决方案,以解决教育技术中的一些最具挑战性的问题,包括自动内容生成和 AI 驱动的学习资源分类与推荐。由于我们的工具必须处理的主题跨越从 K-12 到劳动力发展,我们正在大力投资于能够扩大我们模型覆盖范围和深度的方法。这种方法的关键组成部分是灵活的方法,用于在通用模型不足的领域训练专业神经网络。在这篇博客文章中,我想分享我们探索这些方法的旅程。
微调
神经语言模型的典型微调涉及同时优化所有可训练参数,对于像 GPT-J 这样的网络,这些参数可以达到数十亿。在这样的规模下,微调和推理过程都不是简单的,这使得这些模型的广泛部署变得困难。在我们的调查中,几个关键问题似乎显得尤为突出:
- 仅仅运行这些 变换器模型 就已经接近 GPU 内存 (VRAM) 的极限,而在微调过程中,被优化的参数数量与额外消耗的内存量之间存在直接关系。
- 通过修改网络中的所有参数,预训练期间学习到的信息流可能会被打乱,导致遗忘和少量示例能力的丧失。
- 为每个用例提供一个定制的多千兆字节模型将造成不可接受的延迟和成本负担。
这些综合的担忧促使我们探索来自近期文献的其他方法,以调整我们的神经语言模型。幸运的是,在过去的一年中,自然语言处理研究领域开发出了一系列方法,以降低自定义预训练语言模型行为的成本。
提示调优
我们最初采用的方法称为 提示调优 或 软提示 (Lester et al. 2021)。在这种方法中,预训练网络的参数保持不变。相反,我们在输入提示标记前面添加少量可学习的嵌入向量(通常为 10 到 20 个),并在微调数据集上用常规语言建模目标调整这些嵌入。这些嵌入并不代表语言的标记;我们可以把它们看作网络可以条件化的密集上下文存储——通过 注意机制——在对序列中的标记进行预测时。
提示调优仅为模型增加了少量运行时成本,因为软提示的大小在千字节范围内,可以并行通过网络运行。这些特性使它们在服务多个并发用户时具有吸引力,正如最近在 AI 讲故事 中部署该技术所表明的那样。然而,将软提示集成到流行框架中,如 HuggingFace 的 变换器 是复杂的,因为接口主要设计用于处理标记索引序列而不是密集向量。此外,随着在软提示和生成之间添加更多上下文,我们开始看到软提示与标记上下文之间在条件强度上的不平衡。保留在运行时灵活添加数百个标记上下文的能力对我们来说很重要,因为这为项目创作过程提供了额外的细粒度可控性。如果我们想引导模型关注教科书的特定页面内容,或创作阅读理解题,或提供少量示例,长格式上下文化是重要的。
低秩适配器 (LoRA)
随后我们转向了一种称为 LoRA 或 低秩适配器 的方法 (Hu et al. 2021)。该技术是由微软的研究人员在研究 GPT-3 大小模型时开发的,并基于早期的适配器方法。如果我们将变换器视为通过每个残差层逐步细化其标记潜在状态,那么适配器的概念是在给定层向这些潜在状态添加一个小的、依赖输入的增量(初始化为无操作)。这种微小的推动能够在下游调节其行为,例如,强调与任务相关的输入部分。
低秩适配器是一种针对低秩子空间的适配器,这减少了我们需要训练的新参数数量(从 D2 到 2 × D × r,其中 D 在千级)。与软提示一样,我们保持网络的原始参数不变,以保留其在预训练中包含的知识,仅调整这些新的适配器参数。在我们的内部测试中,我们从 LoRA 中看到了良好的指标。除了使我们能够在小硬件预算上调整大型模型外,插入适配器层的模型在适应目标领域的同时,也保留了其原有的少量示例能力。值得注意的是,将低秩适配器集成到其他框架中是简单的,因为我们可以根据需要简单地用线性 + 适配器层替换现有的线性层。
展望未来
为了让大家了解我们在探索中看到的改进类型,下面我们分享了一小部分使用不同调优方法训练的模型生成的内容。这些项目都是使用与护理服务交付相关的相同三个输入提示生成的:第一个关注多个客户的需求优先级,第二个则关注团队环境中的行动。
项目 #1: 一名护士正在评估一名计划进行门诊手术的客户。以下哪个患者是护士接下来评估的对象? (A) 一名患有 1 型糖尿病的患者 (B) 一名患有急性胰腺炎的患者 (C) 一名需要静脉抗生素治疗的患者 (D) 一名患有克罗恩病的患者 项目 #2: 一名客户因充血性心力衰竭被送入医院。客户的母亲拒绝治疗。护士应该采取以下哪项行动? (A) 通知提供者该情况。 (B) 检查患者的药物清单。 (C) 检查客户的病历。 (D) 通知客户的医生客户的情况。
项目 #3: 一名护士正在评估儿科病房的一名患者。该客户计划进行包括胸部 X 光在内的诊断检查。护士应该计划接下来评估哪位患者? (A) 一名患有肺炎并发热的儿童 (B) 一名有皮疹且对药物无反应的儿童 (C) 一名发热且体温 >100.4 的儿童 (D) 一名发热且有皮疹的儿童 项目 #4: 一名有肾衰竭的客户在医院中,计划进行肾移植。该客户坚信移植外科医生不称职。客户拒绝让另一家医院的医生进行移植。责任护士应采取以下哪项行动? (A) 让客户声明移植外科医生称职并将其交给移植外科医生。 (B) 要求客户提供签名声明以支持她的主张。 (C) 联系移植外科医生,了解客户拒绝让另一家医院的外科医生进行移植的原因。 (D) 通知移植外科医生客户拒绝移植。
项目 #5: 一名护士计划将客户分配到各个床边站。护士应该将以下哪位客户分配到离护士站最近的床边站? (A) 一名怀疑诊断为肺栓塞的客户,需要进行计算机断层扫描 (B) 一名需要帮助进行排便的客户 (C) 一名有胸部 X 光急诊指征的客户 (D) 一名因咳嗽需要进行胸部 X 光的客户 项目 #6: 一名 LPN 正在照顾一名有留置尿管的客户,并请求护士帮助她清洁尿管。护士应采取以下哪项行动? (A) 向客户解释她将需要提供清洁溶液,并需要获得客户对此程序的同意。 (B) 请 LPN 提供帮助。 (C) 提供帮助客户清洁尿管。 (D) 向 LPN 保证护士会帮助她。
我们可以观察到,尽管基线模型中最好的项目在流畅性和逻辑一致性上大致良好,但它们往往约束不足(如 #1 所示),或对护理领域的知识要求很少(如 #3 所示)。与基线项目相比,提示调优和低秩适配器模型中的项目在其刺激、干预和选项中包含了更多细节。主题内容与领域相关,要求在护理管理中具备 特定知识,而不仅仅依赖背景知识。此外,低秩适配器模型中的项目形式更加一致。例如,项目始终将“客户”而不是“患者”作为引用,与评估中可能出现的语言相一致(比较 #5 与 #1 和 #3)。它还成功跟踪场景中的多个个体的引用(比较 #6 与 #4)。
对领域覆盖、风格一致性和逻辑一致性的改进可以显著提高神经语言模型的实用性。这仅仅是个开始:随着技术的成熟,甚至会发现更多的方法来创建大规模定制、可控的自然语言模型。随着这些方法的发现,我们将继续将学术界、工业界和独立研究中的最佳实践融入 Finetune 产品。
衷心感谢 Nick Koprowicz、Jesse Hamer、Saad Khan 和 Ogden Morse 在本博客文章开发过程中提供的友好和有益的反馈。
参考文献
Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., … & Chen, W. (2021). Lora: Low-rank adaptation of large language models. arXiv preprint arXiv:2106.09685.
Lester, B., Al-Rfou, R., & Constant, N. (2021). The power of scale for parameter-efficient prompt tuning. arXiv preprint arXiv:2104.08691.