大语言模型超参数入门调参手册

embedded/2024/9/24 15:18:42/

人工智能的广阔天地中,大语言模型(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大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓

在这里插入图片描述


http://www.ppmy.cn/embedded/33261.html

相关文章

【信息收集】子域名扫描---subdomainbrute

下载地址:GitHub - lijiejie/subDomainsBrute: A fast sub domain brute tool for pentesters 用字典的方式去发现url的二级、三级、四级....子域名 并会自动在文件目录下生成一个txt记录 python subDomainsBrute.py csdn.net(别加 www.)

screen命令

首先明确screen和bash终端有区别&#xff0c;如果不小心按了ctrlad会停止向屏幕输出&#xff0c;此时需要ctrlaq才能输出 一.新建屏幕 四种方法 其中一种是为该页面新创建一个进程 screen -dmS <页面名> 这种方法是为该页面新创建一个进程&#xff0c; 类似于开启另一个…

人大金仓数据库技术的发展趋势和前景

人大金仓数据库技术作为中国社会科学院经济研究所主办的重要数据平台&#xff0c;其技术发展趋势和前景备受关注。随着信息技术的不断发展和应用场景的不断拓展&#xff0c;人大金仓数据库技术将面临新的挑战和机遇。在这篇文章中&#xff0c;我将探讨人大金仓数据库技术的发展…

Java | Leetcode Java题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; class Solution {private String line(List<String> list,int maxWidth,int totalLength,boolean isLast){StringBuilder sb new StringBuilder();sb.append(list.get(0));if(list.size() 1){String ap " ".repeat(maxW…

论文复现4,Awe:Waypoint-Based Imitation Learning for Robotic Manipulation

复现aloha增加航点预处理,代码根据官方代码链接:https://github.com/lucys0/awe 因为是在远程和local都安装过一次,遇到问题有点频繁,所以安装过程和问题一起写的,应该是挺全了。 git clone https://github.com/lucys0/awe.gitcd aweconda create -n awe python=3.9conda…

pandas读取文件导致jupyter内核崩溃如何解决

读取execl文件出现以下问题: str_name "D:\\cao_use\\2017_2021(new).xlsx" train_df pd.read_excel(str_name, usecols[0])崩溃的指示图如下所示: bug原因:读入的文件太大&#xff0c;所需时间过长&#xff0c;在读取的过程中&#xff0c;使用中断按钮暂停会直…

2024年Q1季度干衣机家电线上市场数据分析

春季阴雨绵绵&#xff0c;空气湿度增加&#xff0c;为晾晒衣物带来不便。与此同时&#xff0c;新消费主义的崛起也促使消费者更加注重时间效率和生活品质&#xff0c;寻求能够快速、方便地处理衣物的解决方案。借此&#xff0c;干衣机的需求量有所上涨。 根据鲸参谋数据显示&a…

区块链的应用场景以及解释为什么能够保证安全提高信任度

区块链的不可篡改性和透明性是其最重要的特征之一。 不可篡改性&#xff1a;是指一旦数据被写入区块链&#xff0c;就无法被修改或删除。这是因为区块链中的每个区块都包含了前一个区块的哈希值&#xff0c;这个哈希值与当前区块的数据一起计算得出。如果对当前区块的数据进行…