《大语言模型 原理与工程实践》第7-10章的阅读心得——工程实现的重点
<p>从9月开始工作量暴增,本人国庆一天都没有休息,留给个人学习上的时间确实相对被压榨了许多,不过我们的大模型学习之旅无论如何还是要坚持下去。<br /><br />
第7章主要讲的是大语言模型的评测体系,这是一个多维度且全面的复杂系统,涵盖了从基座模型到对话能力、安全性和行业特化的各个方面。每个环节都需要精心设计的评测方法。以LLaMA2为例,其评测基准包括了多个不同任务,如代码能力、常识推理能力、世界知识、阅读理解、数学能力、综合基准测试等。这种全面的评测体系让人联想到软件工程中的全面质量管理(TQM)理念。对于对话能力的评测,属于LLM性能评估的重头戏。相关的评测任务可以分为13种:<br />
1. 生活闲聊类评测任务<br />
2. 方法论指导类评测任务<br />
3. 特殊指令遵循类评测任务<br />
4. 语言理解类评测任务<br />
5. 常识百科类评测任务<br />
6. 数学计算类评测任务<br />
7. 逻辑推理类评测任务<br />
8. 摘要生成类评测任务<br />
9. 文案创作类评测任务<br />
10. 翻译类评测任务<br />
11. 代码类评测任务<br />
12. 中国特色类评测任务<br />
13. 多轮对话类评测任务</p>
<p>这些评测方法的出现标志着我们正从简单的准确率评估转向更复杂、更贴近实际应用的评测方向。<br />
</p>
<p>第8章介绍的是提示工程,它可以被称为驾驭大语言模型的艺术。市面上已经陆陆续续出品了不少提示词教学的书籍与课程,提示词工程师这样一个新兴岗位也是应运而生。不过我个人倾向于认为,还是大模型本身数据质量和背后训练技术支撑的不同能拉开差距。换再好的提示词,也只能逼近这个大模型本身的上限。就算有再好的提示词,可是用的大模型内核能力太差,那也不过是逼近它的上限。就好比一个人的天赋和努力,虽然我们很多人要强调后天的努力,天赋没法去弥补,但是就算再怎么勤奋,天花板就在那里了。提示词本身是我们可控的,所以对大众用户打磨提示词有必要的,但是如果大模型本身的差距拉的很大,即便提示词很一般,那个效果都会出来很不一样,也省去很多琢磨修改提示词的脑力消耗。</p>
<p>从零样本提示到复杂的思维树提示,这门“艺术”正在快速演进。特别值得一提的是思维链提示,它通过引导模型进行步骤化思考,显著提升了在复杂推理任务上的表现。这让人联想到人类解决问题的方式——通常是通过分步骤思考来处理复杂问题。而思维树提示则更进一步,引入了类似蒙特卡洛树搜索的思想,使模型能够在多个可能的思路中进行探索和评估。这种方法在一定程度上模拟了人类的创造性思维过程,有望大幅提升模型在开放性问题上的表现。检索增强生成(RAG)技术的引入,为大语言模型打开了一扇通向外部知识的大门,极大地扩展了模型的应用范围。<br />
</p>
<p>第9章探讨了工程实践,这是将大语言模型从理论推向应用的关键环节。书中图文并茂介绍了包括数据并行、张量并行、流水线并行、混合并行、ZeRO并行等不同的分布式训练技术。不过受篇幅限制,作者对于流水线并行、混合并行、ZeRO并行这几个并行方式的细节没有讲解特别清晰,尤其是“图9.7 PipeDream算法实现”我没有看懂那个所谓1F1B的过程。这个只有待于另外结合其他网络资料进一步深入研究了。不过值得一提的是,是ZeRO并行技术的出现,为解决大模型训练中的内存瓶颈提供了创新解决方案。通过将模型参数、梯度和优化器状态分片到不同的GPU上,ZeRO实现了近乎完美的存储效率和易扩展性。这种方法不仅大大提高了训练效率,还使得在普通硬件上训练超大规模模型成为可能。在优化技巧方面,书中提到的通信优化尤为关键。梯度累积和梯度压缩等技术有效减少了多GPU训练中的通信开销,这对于提升大规模分布式训练的效率至关重要。稳定性优化也是不可忽视的一个方面,尤其是在长时间训练大模型时。混合精度训练和梯度裁剪等技术的应用,有效解决了训练过程中的数值不稳定问题,确保了模型训练的顺利进行。<br />
</p>
<p>第10章是关于实战训练7B模型,其主旨在于将前面的理论知识付诸实践。这一章提到的自动化训练框架的设计理念特别值得关注。通过将训练流程解耦为多个子模块,实现了高度的灵活性和可维护性。这种模块化设计不仅方便了算法研究人员和工程人员的分工协作,还大大提高了实验迭代的效率。在预训练和微调过程中,数据的预处理和加载策略显得尤为重要。书中提到的FinCorpus开源金融语料的使用,展示了如何利用领域特定数据来增强模型的专业能力。而指令微调(SFT)的实现细节也值得深入研究,特别是如何设计高质量的指令数据集,以及如何平衡模型的通用能力和特定任务性能。这些实践经验为我们构建真正有用的大语言模型应用提供了宝贵的指导。<br />
终于来到hand in环节,能看到大量代码被贴上来了,然而这就已经接近完结撒花,作者最后讲到指令微调实践也就是简单罗列了一些参数就画上句点,那剩下N多实战细节只有自己另外把自己手上的琐碎事情处理完,再划出几个月时间来亲力亲为了。</p>
<p>大模型学习劲头还是很足的</p>
页:
[1]