在此博客中,我很高兴分享我们对训练Amabri基础(认知 - lab/ambari-7b-Instruct-v0.1)和Amabri指导(认知/Ambari-Lab/Ambari-7b-7b-Instruct-v0.1)的细致方法的见解。这种叙述使高级瞥见我们的过程,是即将到来的所有技术细节的启示的先驱 - 广泛的测试和评估的高潮。当我们解开导致创建Amabri的复杂性时,请继续关注,Amabri是一种创新的开源双语Kannada-英语模型。
Amabri背后的目的
在大语言模型(LLM)的动态景观中,Amabri的创建源于多方面的目的:
随着LLM越来越多地渗透到主流使用情况下,开源模型虽然富含世界知识,但主要来自以英语为中心的培训。 Amabri是一项开拓性计划,以扩大此范围并将LLMS适应不同的语言。
在LLM的不断发展的景观中,对大量培训数据的需求从1万亿到10万亿代币不等。但是,这对有限的资源有限的语言提出了挑战。在我们的追求中,我们专注于改编预先培训的LLM,例如Llama/Mistral,以理解新语言的细微差别 - 在Amabri的情况下。尽管Kannada并未被归类为一种非常低的资源语言,但它是检验我们的假设和方法论的理想候选人。严格地定义了培训和填充阶段,我们为整个过程设定了10亿个培训令牌的上限。
随后,我们精心制作的数据集,相应地分发了它们,并描述了流程的阶段:
这种故意的方法为Amabri的发展奠定了基础,从而在LLM领域推动了语言适应性的界限。
在语言模型效率上的关键组成部分是代币化,在开源LLM的背景下对Kannada文本提出了一个独特的挑战。许多现有模型效率低下,诉诸角色级别的令牌化,尤其是在推论期间,会影响整体性能。为了解决这个问题,我们使用句子为卡纳达文本开发了一种专门的令牌化模型。该模型与基本乳青拉拉玛(Base Llama)令牌无缝集成,导致49,600的全面词汇量扩大了17,600。
我们的方法涉及在三个不同的数据集大小上训练令牌模型,从而揭示了包含100,000个令牌的数据集。随着我们进化的Amabri,即将到来的迭代将采用精致的令牌化策略,采用词汇量减少48,000。通过安德烈·卡尔帕蒂(Andrej Karpathy)在他的Twitter帖子(Twitter上的Andrej Karpathy)中共享的见解,这一调整旨在提高整体效率。
好奇地探索效率获得了第一手的收益?您可以在此处测试引物。
预训练
有了有效的令牌仪,我们的下一个关键步骤是训练阶段,旨在使模型与新富集的词汇熟悉。为了优化此过程,我们策划了来自不同来源的全面数据集。值得注意的是,我们在此阶段探索了两种不同的方法:通过洛拉(Lora)进行训练并充分训练模型。这一战略决策源于我们渴望辨别Amabri发展的最佳途径。
这些方法之间的详细比较将很快揭幕,但我们已经收集了一些初步观察:
尽管我们承认我们正在进行的测试可能会完善这些观察结果,但该快照为我们的进步提供了宝贵的见解。训练前阶段采用了2XA100 GPU的簇,在包括5亿个代币的大量语料库上进行全权重训练大约需要25小时。
值得一提的是,拥抱面孔现在可以使用完全微调的模型的重量吗? -https://huggingface.co/cognitive-lab/ambari-7b-base-v0.1,为社区内的开源知识共享做出了贡献。
双语旁边的标记预测
这一阶段是受Sarvam.ai开放式Hathi系列的启发,是我们的培训策略计划外的但又关键的添加。创建一个具有200,000个代币的数据集,我们利用Lora进行微调,旨在使模型具有增强的语言理解。随着我们的进步,我们的重点转向在卡纳达语中灌输“世界知识”。考虑到卡纳达语内容的稀缺性,尤其是与英语相比,我们转向翻译。利用Indictrans2,我们将英文内容翻译成主要来自Wikipedia的英语内容,转化为卡纳达语。但是,我们没有传统的单语言预测,而是引入了一种开创性的方法 - 双语旁边的标志预测。这种方法与卡纳达语和英语之间的句子交替,迫使模型在下一步的预测期间跨语言访问信息。这种细微的方法不仅促进了卡纳达语和英语之间的一致性,而且在培训期间自然平衡了印地语和英语代币的平衡。这个阶段为Amabri的训练旅程增添了额外的复杂性。
翻译填充
此阶段的目的是建立英语和相应的卡纳达代币之间的连贯关系。我们采用低级改编进行微调,遇到了一些挑战,特别是决定使用非常低的价值的决定,事实证明这一点效率较低。数据集大小为100,000个令牌,此阶段提出了限制,我们承认需要改进。当我们完善培训过程的这一方面时,我们致力于增强Amabri双语能力的承诺仍然坚定不移。
双语指导微调
在这个关键阶段,我们采用了低级适应的监督微调来塑造模型的响应能力。拥抱由用户提示/说明和相应响应组成的聊天模板结构,我们冒险进入双语指示微调领域。这种方法涉及培训模型,以根据用户提示或说明中指定的语言进行熟练的响应。
聊天模板
< | user | >
{user prompt / instruction}
< | endoftext | >
< | assistant | >
{response}
< | endoftext | >例如,给定一个用户提示
“在卡纳达州给我10个学习技巧,”
回复
该模型无缝地在卡纳达语中产生响应,并保持语言连贯性。为了丰富培训过程,我们合并了各种指令数据集,包括羊驼指示,多莉指令等。利用翻译API,例如Google,Azure以及AI4BHARAT的IndiNTrans2模型的自定义部署,我们制作了一个全面的双语指示数据集。
该数据集现在在这里拥抱面孔公开可用,包括各种语言方案。在培训期间,我们实施了有四个不同表示的监督微调:
这种细致的方法不仅使模型熟悉不同语言的响应,而且为掌握各种跨语性任务奠定了基础。
这种精心调整的模型的权重可以在拥抱脸上访问,并且为了获得动手体验,您可以在chat.cognitivelab.in上探索4位量化版本。
在模型完善的最终阶段,我们深入研究了直接偏好优化的世界(DPO)。这种战略选择的灵感来自于在各种开源模型中观察到的成功,不仅旨在使我们的模型保持一致,还旨在推动基准的改进。我们利用了人类/HH-RLHF数据集,开始了这一实验之旅。将其转换为卡纳达语,我们对该模型进行了DPO微调,目前正在进行全面的评估以评估其性能影响。
改进范围
至关重要的是要意识到此框架中提供的模型尚未进行排毒。尽管他们展示了令人印象深刻的语言能力,但仍有可能被认为是有害或冒犯的内容的潜力。强烈建议用户行使酌处权,并密切监视模型的输出,尤其是在公共或敏感应用程序中。
我们欢迎捐款来增强和扩展该项目。如果您有建议或改进,请打开问题或提交拉动请求。
该项目已根据GNU GPL V3.0许可获得许可。有关详细信息,请参阅许可证文件。
重要的是: GPL 3.0许可证仅适用于此存储库中提供的源代码和数据集。由于Indiad-llm是Meta的Llama 2模型的衍生物,因此它受Llama 2的原始许可,无法更改。因此,有关模型许可的全面详细信息,请咨询Llama2许可文件。
该存储库从以下存储库中汲取灵感: