IBM打造InstructLab:为AI模型的创建与性能提升开启新时代

IBM与红帽最近发布了InstructLab,这是一种用于大规模语言及代码模型的全新AI训练方案。

IBM与红帽最近发布了InstructLab,这是一种用于大规模语言及代码模型的全新AI训练方案。InstructLab解决了以往阻碍此类模型开发的缺点,采用一种基于MIT-IBM Watson AI Lab以及IBM员工于2024年4月共同发表的研究论文中提出的流程。除了开放及模型中立特性之外,InstructLab还提升了开源模型的性能并克服了传统大模型训练中存在的规模扩展挑战。

其中最独特的功能之一,就是InstructLab将大模型移交至开源开发者社区手中。类似于开源软件鼓励开发人员集体贡献代码、合并变更,借此对软件程序进行快速迭代一样,InstructLab鼓励开发人员集体为各类大模型贡献新的技能和知识、推动快速迭代与贡献合并,从而实现由全社区共同参与改进的模型。

这种社区式的方法与贡献融合,只有通过IBM新颖的大规模聊天机器人对齐(Large-scale Alignment for chatBots,简称LAB)指令微调方法才能实现。这种方法使用分类法引导的合成数据生成,并配合新颖的多相微调框架,强调在维护模型已经学到的内容不受影响之余,将新的知识和功能吸纳至基础模型当中。

通过社区贡献改进基础模型

在深入讨论InstructLab的细节之前,我们首先应当了解一些技术背景。目前,大多数大语言模型(即推动当下这股生成式AI热潮背后的基础模型类型)均是采取大量不同数据(包括文档、代码、JSON文件、书籍及其他信息来源)进行训练所创建而成。如果模型的训练完成后的性能表现无法令人满意,则可添加更多数据以进行额外训练,直至其获得符合预期的性能。

专门的生成式AI模型,则是采用针对特定用例的定制化较小数据集,对预训练后的大语言模型进行微调后创建而成。为了达成所需的专业化水平,微调模型的权重(即以怎样的优先级考虑某些主题或信息类型)往往也必不可少。但这种方法的潜在缺点是,尽管微调能够提高模型在特定主题上的性能,但额外的调整也可能会削弱模型的一般知识与适用性。

经过微调的模型由原始基础模型的副本加专门的生成式AI模型组成。尽管每种生成式AI模型都包含大语言模型副本,但这些副本现在去掉了大模型中原本存在的部分一般性知识,且专门用于少数特定用例。也就是说如果要涵盖多个用例,则需要针对各用例对基础模型进行微调。但事实证明,管理多个模型既复杂又昂贵,会带来大量额外的监控、维护与更新负担。

最近发布的Llama 3就是个很好的例子,说明不同的用例往往需要独立的对应模型。在Llama 3发布后几周,Hugging Face上即出现了它的6000多种分叉。由于分叉很少会与基础模型合并,因此相关社区付出的大量努力最终并没能转化为基础模型的效能改善。

而通过采取不同方法,InstructLab消除了构建及维护多套模型的需求。其能够将单一基础模型转化为协同开发成果,顺利将新的知识和技能整合至基础模型当中。

InstructLab的数据组织方式

InstructLab会首先选择一套值得信赖的开源基础模型,例如watsonx或者Hugging Face中的IBM Granite模型。为了使模型具有所需的技能和能力,InstructLab会向模型当中添加特定领域的知识和技能。

InstructLab的数据以树状结构进行组织——如上图所示——并由三个主要类别组成,各类别负责定义模型需要学习的内容。通过使用选择性信息,开发人员可以控制模型的专业知识及能力。

InstructLab中的数据组织方式名为分类法。在此结构中,每个数据层都被定义为一个节点。InstructLab分类法中的三个类别包括:

  • 知识数据按文档类型进行划分,例如主题书籍、教科书、技术说明及手册等。
  • 基础技能包括数学、编码、语言和推理技能,模型需要使用这些技能以获取更多知识。这些信息在公共数据库中随时可用。
  • 组合技能具体取决于工作或问题所需要的知识和基础技能。复杂的任务往往需要多种技能,这些技能将深厚的专业知识与认知技能相结合。例如,AI股票交易工具需要金融、经济行为及历史趋势方面的知识,同时也离不开数学和统计分析方面的基础技能。

关于向四套开源基础模型添加技能和知识的具体说明,请参阅IstructLab社区页面(https://huggingface.co/instructlab)。

合成数据

InstructLab的主体是一条合成数据生成管线。数据生成也是InstructLab乃至整个AI体系的核心。合成数据继承了真实数据的统计学属性,而由计算机负责创建大量具备多样性的合成数据,要比在现实世界中采集人工注释数据要便宜得多。除了成本较低之外,合成数据在缺少高质量现实数据时也能发挥重要作用。最后,合成数据还能支持迭代训练以适应社区贡献,同时不致覆盖掉现有学习结果。

要向InstructLab模型添加新的知识或缺失技能,首先需要创建一个新节点(在分类法中被称为「叶节点」)。叶节点包含模型所需的一系列新技能示例。

分步创建InstructLab模型

整个InstructLab模型创建过程分为多个步骤,此过程可以提高模型性能并引入新功能,同时不会导致基础模型丧失一般知识、亦无需分叉出数千个基础模型版本。

  • 组装一个精心挑选而成的知识与技能分类集合,以满足模型的实际需求。
  • 使用人工生成的示例,向模型展示其应该大规模生成何种指令。
  • 选择经过许可、安全且开源的大语言模型作为“教师”模型,负责使用人工生成的示例为分类集合生成数百万个问答样本。
  • 另设单独的“批评家”模型(属于教师模型的另一角色),负责分析数据准确性及质量,同时扫描涉及亵渎或暴力内容的违禁素材。
  • 至此,此流程即可创建出干净的数据集,且此数据集符合模型功能的初始要求。在经过审查之后,这套新的合成问答集即可用于基础模型微调,且遵循先提供新知识、再提供新技能的顺序。
  • 在确定满足安全性和实用性基准之后,该模型即可投入使用。其技能和知识的后续更新,可以通过社区贡献持续进行。
  •  

MT-Bench基准评估中包含80个高质量的多轮问题,旨在测试大模型的多轮对话与指令遵循能力,涵盖各类常见用例并专注于解决挑战性问题以区分模型性能。

IBM于2023年9月正式发布Granite-13B模型。三个月后,IBM研究人员又通过一种新的对齐方法(后来发展为InstructLab)在模型构建层面实现了突破,大大提高了Granite 13B的性能。新方法效果拔群,使得IBM Granite 13B模型(拥有130亿token)在性能上足以比肩Meta的大规模高性能Llama 2模型(拥有700亿token)。

当IBM研究人员将这种新的对齐方法应用于其他IBM开源Granite模型后,也获得了类似的性能提升。这些模型再次在各种用例当中表现出评分提升,并拥有出色的对话与指令遵循能力。

不同模型版本在相同提示词上的演进比较

InstructLab在诸多领域都显示出优势。其中一例,来自使用相同提示词比较不同模型版本的输出质量。在3种不同模型上运行相同的提示词,理论上会产生3条可以相互比较的不同输出。在这项测试当中,IBM研究人员在Granite-13B-chat-v1和Cranite-13B-chat-v2(均采用传统训练方式)上运行了两条相同的提示词,同时也在使用InstructLab方法构建的Labrador模型上进行测试。

使用的这两条提示词为:

  • IBM公司是做什么的?
  • 以70年代纽约黑帮的文字风格重写第一问的答案。

每个Granite版本都会根据提示要求生成独特的响应。初始Granite-13B-chat-v1用简单的一句话作答,更先进的Granite-13B-chat-v2则生成了三句话。

相比之下,使用InstructLab创建的Labrador版本则给出了一段拥有25个句子的结果,并使用独特的风格化文字模仿了街头黑帮的用语。其中用到了“是号人物”、“底子厚”和“不怕告诉你”等帮派风浓郁的字眼介绍了IBM公司。

与使用标准方法训练而成的两套模型相比,InstructLab技术明显创建出了一个具有差异化且更加有趣的版本。除了满足提示词中列出的要求之外,InstructLab训练的模型还对IBM做出了既准确又幽默的解读。

虽然大语言模型在当前这波生成式AI热潮中备受关注,但其他类型的模型同样不容忽视。作为对IBM模型改进方法的进一步验证,InstructLab在代码生成模型当中同样带来了出色的效果,具体如上图所示。使用Meta的Octoback基准测试(涵盖8项不同任务),体量较小的IBM Granite模型击败了规模相当于其两倍的Code Llama模型。这再次证明InstructLab能够在提升性能的同时,帮助模型构建者节约大量时间和金钱。

更好的大语言模型迭代方法

InstructLab项目代表着预训练大语言模型对齐领域的又一突破,并且将整个流程交付到了开源开发者社区手中。与InstructLab项目相关的模型拥有以下差异化因素:

  • 性能提升。
  • 可实现基于开发人员及社区贡献的模型快速迭代。
  • 通用且标准化的体验。

此外,传统大语言模型训练方法往往需要数千张GPU进行长达数月的运算。而InstructLab能够使用少量GPU为这些模型添加技能或知识,且整个重新训练过程一般不超过一周。但请注意,用户必须谨小慎微地筛选社区所输入的技能和知识,目前的这一全新流程仍有待经历充分测试。总之,建立并维持高标准对于InstructLab的长期成功将至关重要。

考虑到以上种种,IBM制定的目标是每周为InstructLab模型发布新版本,这基本遵循了开源软件的更新方式。频繁的发布将通过持续改进来增强各类基础模型。

IBM也在与旗下红帽部门密切合作,开发并交付其RHEL AI产品。这款产品采用IBM许可的Granite模型构建,而这些模型则与InstructLab亲密携手。IBM也将敦促红帽部门继续为其RHEL AI产品建设开源社区。

总的来说,InstructLab正在为开发人员及技术社区驱动的开源大语言模型开发带来一系列独特优势。相信InstructLab将使未来大模型开发方法的准入门槛更低,也将加快模型发展速度并解决更广泛的问题,最终令AI生态体系内的每位参与者从中获益。

来源:至顶网软件与服务频道

0赞

好文章,需要你的鼓励

2024

06/18

14:47

分享

点赞

邮件订阅