在人工智能的广阔天地中,大语言模型(LLM)正以其强大的能力,不断刷新我们对机器理解语言的认知。然而,要使这些模型在特定应用场景下发挥最大效能,关键在于如何巧妙地调整其超参数。本文将带你深入探索 LLM 超参数的世界,揭示它们如何影响模型的表现,并指导你如何通过精细调整,让模型的输出更加符合你的期望。让我们一起启程,揭开超参数调优的神秘面纱,解锁 AI 模型的无限潜能。
超参数的价值
当我们选择最佳的大语言模型时,有许多因素需要考虑。毫无疑问,参数数量与模型大小之间存在着强烈的相关性,因此查看 LLM 的大小是一个明智的策略。同样还可以查看其在常见基准测试或推理性能测试中表现如何 (SOTA) —— 这些测试不仅可以给出性能的定量指标,还给出了 LLM 相互之间衡量的尺度。
但是,在选择看似最适合需求的 LLM 之后,还有其他方法来进一步塑造语言模型以适应我们的特定需求 —— 超参数。实际上,对超参数的选择以及如何配置,可能是 LLM 表现好与差的关键所在。
超参数是什么
超参数 (hyperparameters) 是在开始学习过程之前设置的参数,而不是通过训练得到的参数。换句话说,这些参数是我们在开始训练之前就需要决定的,它们会影响学习过程 (即模型训练的方式) 以及模型的性能 (如准确性)。
超参数是一种配置项,可以使用它们来影响或控制训练 LLM 的过程。与模型参数或权重不同,超参数不会随着训练数据的传递而改变;相反,它们是模型的外部设置,在训练开始之前设置。随后,尽管它们控制了 LLM 的训练过程,但它们不会成为最终基础模型的一部分,我们无法确定模型在训练时使用了哪些超参数。
LLM 的超参数很重要,提供了一种可控的方式来调整模型的行为,以产生特定用例所需的结果。通过调整超参数来重新配置基础模型,使其遵循我们的期望表现,而不是经过大量努力和成本来开发定制的模型。
超参数类别
模型大小 (Model Size)
要考虑的第一个超参数是想要使用的 LLM 的大小。一般来说,更大的模型性能更好,能够处理复杂任务,因为它们的神经网络中有更多层。使之有更多权重可以从训练数据中学习,并更好地确定 token 之间的语言和逻辑关系。
然而,更大的 LLM 意味着成本更高,需要更大的数据集进行训练和更多的计算资源来运行,而且通常比小模型运行速度更慢。此外,模型越大越容易出现过度拟合的情况,即模型对其训练数据过于熟悉,不能对之前没有见过的数据进行一致的泛化。
相反,一个较小的基础 LLM 在简单任务上可以和其较大的 LLM 表现一样好,同时需要更少的资源来训练和推理运行。特别是在模型被量化 (使用压缩技术减少权重大小) 或微调 (即使用额外数据进一步训练) 的情况下。并且 LLM 越小越容易部署,在低版本 GPU 的设备上更可行。
最终,LLM 的最佳尺寸取决于希望应用它的用例的性质。任务越复杂,可用的计算资源和训练数据越多,模型就可以越大。
迭代次数 (Number of Epochs)
一个周期 (epoch) 指的是 LLM 对整个数据集进行一次完整的迭代处理。作为一个超参数,设置的 epoch 数量通过帮助确定模型的能力来影响输出。
更多的 epoch 可以帮助模型增加对一种语言及其语义关系的理解。然而,过多的 epoch 可能导致过拟合 —— 即模型对训练数据过于特化,并且在泛化能力上遇到困难。相反,过少的 epoch 可能导致欠拟合,即大语言模型从其训练数据中学习不够,无法正确配置其权重和偏置。
学习率 (Learning Rate)
学习率是一个基本的 LLM 超参数,它控制模型如何根据计算的损失函数进行快速更新,即在训练过程中预测出错的输出标签的频率。一方面,较高的学习率加快了训练过程,但可能导致不稳定性和过拟合。另一方面,较低的学习率增加了稳定性,并在推断过程中改善了泛化能力,但会延长训练时间。
此外,通过使用学习率调度,随着 LLM 的训练进展,减少其学习率通常是有益的。基于时间衰减、步长衰减和指数衰减是最常见的三种学习率调度。
- 基于时间衰减 (Time-based decay):根据预设的时间值降低学习速率。
- 阶梯衰减 (Step decay):也称为线性衰减,每几个周期将学习率按衰减因子降低。
- 指数衰减 (Exponential decay):每个时期将学习率按比例降低。
批大小 (Batch Size)
一个 LLM 的批大小参数决定了模型在每个 epoch 中处理的数据量。创建批大小需要将数据集分割成几个部分,因此较大的 Batch Size 相比较小的批量,加速了训练过程。然而,较小的批需要较少的内存和计算能力,并且可以帮助 LLM 模型更彻底地处理语料库的每个数据点。考虑到计算需求,批大小通常会受到硬件能力的限制。
最大输出 token (Max Output Tokens)
最大输出 token,也经常被称为最大序列长度,这是一个模型能够生成作为输出的 token 的最大值。虽然模型最终能够输出的 token 由其架构决定,但这可以进一步配置为超参数以影响一个回复的输出。
通常来说,最大输出 token 的设置越高,模型的响应就越连贯,且与上下文相关。允许 LLM 在制定响应时使用更多输出 token,这样它就能更好地表达自己的想法并全面地解决输入提示中给出的想法。然而这是有代价的 —— 输出越长,模型进行的推理就越多,从而增加了计算和内存需求。
相反设置较低的最大 token 限制需要更少的处理能力和内存,但是可能无法为模型提供足够的空间来制定最佳的响应,这样会导致不连贯和错误。在某些情况下,设置较低的最大序列长度会带来好处,例如:为了更好地控制推理成本;为了将生成的文本量限制在特定的格式;试图提升一个 LLM 的性能的其他方面,比如吞吐量或延迟,并希望通过缩短推理时间来加快这个过程时。
解码类型 (Decoding Type)
在组成大多数 LLM 的 Transformer 架构中,推理有两个阶段:编码和解码。编码是将用户的输入提示转换为向量嵌入的过程,即将文字转化为数字表示,以便模型能够生成最佳的回答。解码是选择的输出首先从向量嵌入转换为 token,然后作为回答呈现给用户。
解码有两种主要类型:贪婪和采样。在贪婪解码中,模型在推理过程的每一步都简单地选择具有最高概率的 token。采样解码则相反,模型选择潜在 token 的一个子集,然后随机选择一个 token 添加到输出文本中。这创造了更多的想象力或随机性,这是语言模型创意应用中的一种理想特性,不过选择采样解码会增加响应错误和风险。
Top-k 和 Top-p 采样
如果选择采样解码而不是贪婪解码时,将有两个额外的超参数来影响模型的输出:Top-k 和 Top-p。
Top-k 采样值是一个整数,范围从 1 到 100 (默认值为 50),它指定了模型采样的 token 应该是具有最高概率的 token,直到达到设定的值为止。
Top-p 采样值是一个在 0.0 到 1.0 范围内的小数,用于配置模型在样本的最高概率之间进行采样,直到这些概率的总和达到设定值。
如果 2 个采样都设置,Top-k 是优先选项,所有超出阈值集合的概率都设为 0。
温度 (Temperature)
温度与上述描述的 Top-k 和 Top-p 采样值类似,提供了一种改变可能输出 token 范围并影响模型 “创造力” 的方式。它由 0.0 到 2.0 之间的小数表示(0.0 实际上和贪婪解码一样,即按最高概率的 token 添加到输出;2.0 表示最大创造力)。
温度通过改变 token 概率分布的形状来影响输出。对于低设定值,概率之间的差异被放大,使得具有较高概率的 token 相对于概率较低的 token 更有可能被输出。因此,希望模型生成更可预测或可靠的回应时,应当将温度值设置低。相比之下,高设定值会使 token 概率趋向于接近,因此不太可能或不寻常的 token 会有更大的输出机会。鉴于此,如果想增加回复的随机性和创造力时,应设置较高的温度值。
停止序列 (Stop Sequences)
影响 LLM 回复长度的另一种方式是通过指定停止序列来自动停止模型的输出。停止序列是由一个或多个字符组成的字符串。常见的停止序列示例是句号(.
/ 。
)。
另外可以通过设置一个停止标记限制来指定序列的结束,这个限制是一个整数值,而不是一个字符串。例如,如果将停止标记限制设置为 1
,生成的输出将停在一个句子。另一方面,如果设置为 2
,回应将被限制在一个段落内。出于对预算的考虑,设置停止序列或停止 token 可以更好地控制推断过程。
频率和存在惩罚 (Frequency and Presence Penalties)
频率惩罚,也称重复惩罚,是一个 -2.0 到 2.0 之间的小数,它告诉模型应该避免过于频繁地使用相同的 token。它通过降低最近添加到响应中的 token 概率来起作用,降低被重复使用以产生更多样化的输出。
存在惩罚也类似,但仅应用于至少使用过一次的 token,而频率惩罚是按照特定 token 的使用频率成比例应用的。换句话说,频率惩罚通过防止重复影响输出,而存在惩罚则鼓励更广泛的 token。
超参数调优
超参数调优是在训练过程中调整不同超参数的过程,目标是找到能产生最优输出的组合。然而,这不可避免地会涉及大量的试错,需要精确跟踪每个超参数的应用,并记录输出的相应结果。因此,手动执行这个过程会耗费很多时间。针对这个问题,自动化超参数调优的方法出现了,大大简化这个过程。
自动超参数调整的三种最常见方法是随机搜索、网格搜索和贝叶斯优化。
随机搜索
随机搜索方法从一定范围内随机选择并评估超参数组合,使其成为一种简单而高效的方法,能够遍历大量的参数空间。然而,由于其简单性,它会牺牲一定的性能并且可能无法找到最优的超参数组合,同时也会占用较大的计算资源。
网格搜索
与随机搜索相反,该方法穷尽地搜索从数值范围内的每个可能的超参数组合。虽然和随机搜索一样资源密集,但它提供了更系统化的方式,确保找到保证超参数最佳选择的方法。
贝叶斯优化
与上述两种方法不同的是,它采用概率模型来预测不同超参数的性能,并选择最佳超参数以获得更好的响应。这使其成为一种高效的调优方法,既能更好地处理大型参数空间,又比网格搜索需要更少的资源。但缺点是,它的设置更加复杂,并且在识别最佳超参数集方面效果不如网格搜索。
自动化超参数调整提供的另一个优势是可以开发多个语言模型,使每个模型都具有不同的超参数组合。通过在相同的数据集上对它们进行训练,并比较它们的输出,确定最佳用例。同样的,调整了不同超参数和值范围的每个模型可能更适合不同的用例。
结语
通过深入分析,我们了解到超参数调优不仅仅是一项技术活动,更是一种艺术。它要求我们对模型有深刻的理解,对数据有敏锐的洞察,以及对目标有清晰的认识。每一次超参数的调整,都像是在与模型进行一场精心设计的对话,旨在引导它更好地服务于我们的愿景。记住,没有一成不变的最佳配置,只有不断探索和适应的最优解。让我们以这篇文章为起点,继续在 AI 的征途上,寻找那些能够点亮智慧之光的超参数组合。
如何学习AI大模型?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓