玄学调参实践篇 | 深度学习模型 + 预训练模型 + 大模型LLM

😍 这篇主要简单记录一些调参实践,无聊时会不定期更新~

在这里插入图片描述

文章目录

  • 0、学习率与batch_size判断
  • 1、Epoch数判断
  • 2、判断模型架构是否有问题
  • 3、大模型 - 计算量、模型、和数据大小的关系
  • 4、大模型调参相关论文经验总结
  • 5、训练时模型的保存

0、学习率与batch_size判断

  • batch_size: 这不用多说,一般按2的指数设置如:2、4、8、16…。设多大基本看你的显卡显存能不能hold得住咯。
  • 学习率: 常用的一些自适应学习率调整策略如:linear_with_warmup、cosine_with_warmup。现在像一些大模型如ChatGLM、LLaMA等的训练里基本都用的cosine。学习率基本就是:3e-5, 4e-5, 5e-5…这样调。
  • 学习率与batch_size的关系: 一般来说,batch_size的大小一般与学习率的大小成正比。batch_size越大一般意味着算法收敛方向的置信度越大,也可以选择较大的学习率来加快收敛速度。而小的batch_size规律性较差,需要小的学习率保证不出错。在显存允许的情况下,选择大的batch-size。

1、Epoch数判断

  • 1、观察训练集和验证集的损失函数(loss)和准确率(accuracy)的变化曲线,如果训练集的指标持续下降或上升,而验证集的指标开始出现反向变化或者停滞不动,那么可能就是过拟合或者欠拟合的现象,需要及时停止训练或者调整参数。【😄提一小点:有时候玄学在于过拟合不一定会导致模型效果变差, 有时反而相反。可以参考instructgpt论文,或者自己在数学、代码等任务试验一下,往往过拟合效果是更好的】
  • 2、使用预训练模型(pre-trained model),比如BERT,GPT等,在大规模的数据集上进行了长时间的训练,已经学习到了很多通用的特征和知识,所以在微调的时候只需要少量的epoch就可以达到很好的效果。
  • 3、Early Stopping,即在每个epoch结束后,用验证集评估模型的性能,如果性能没有提升或者下降了一定次数,就停止训练,并保存最佳的模型。

⭐似乎在一些预训练大模型上开始微调,基本就是wamup用5个左右的epoch;cosine schedule用10个左右的epoch尝试。咱也不知对不对,我以往是这样搞的。自己可以变大变小试试。

2、判断模型架构是否有问题

⭐ 我觉得可以用部分数据,训多几个epoch,看看模型会不会过拟合,如果会,那模型大概没啥问题。

3、大模型 - 计算量、模型、和数据大小的关系

在大模型的研发中,通常会有下面一些需求:

  • 计划训练一个10B的模型,想知道至少需要多大的数据?
  • 收集到了1T的数据,想知道能训练一个多大的模型?
  • 老板准备1个月后开发布会,给的资源是100张A100,应该用多少数据训多大的模型效果最好?
  • 老板对现在10B的模型不满意,想知道扩大到100B模型的效果能提升到多少?

以上这些问题都可以基于Scaling Law的理论进行回答。本文是阅读了一系列 Scaling Law的文章后的整理和思考,包括Scaling Law的概念和推导以及反Scaling Law的场景。
⭐ 解析大模型中的Scaling Law: https://zhuanlan.zhihu.com/p/667489780

4、大模型调参相关论文经验总结

下面是知乎清华老哥的总结:

  • 最近在做一些大模型微调的工作。开始的时候比较头疼怎么调超参数,毕竟不能像小模型那样疯狂跑实验,看结果积累经验了,一是计算量太大,二是大模型比较不好评估(毕竟让模型做选择题不能准确的评估性能,一些垂类领域也很难搞到相关测试集,大部分在微调的工程师都是在调垂类模型吧:)。
  • 其次,如果用GPT4评估又涉及到数据隐私问题,同时下边列举的一篇文章显示,GPT4更倾向于给句子长的、回答更多样性的答案更高的分数,有时候也是不准的。。。)。最后也只能多看看微调/训练相关的论文借鉴借鉴经验了。下边会列出一些最近看的文章,给出重要结论以及我的一些个人观点,如果有感兴趣就去精读一下,希望能帮助到一些微调er,本文章不定期更新。。。
  • ⭐ 文章链接:https://www.zhihu.com/question/607397171

5、训练时模型的保存

  • 一般来说我们会搞个验证集,设置一个评估指标,训练到多少个step或是1个epoch时,测一遍验证集,每次保存在验证集上最优指标对应的模型。
  • 现在的一些大模型训练,基本在训练时不搞验证集,而是看train loss来保存最优模型。最常见的是每隔多少个step,保存一次模型checkpoint。最后训练结束后,再根据loss或是各个checkpoint在验证集的表现来挑个最优模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/186560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

压力测试+接口测试

jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因 为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是…

鸿蒙系统开发手册 - HarmonyOS内核驱动层源码分析

众所周知系统定义HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能…

Arrays.asList() 与 Collections.singletonList()的恩怨情仇

1. 概述 列表是我们使用 Java 时常用的集合类型。 众所周知,我们可以轻松地用一行初始化一个List。例如,当我们想要初始化一个只有一个元素的List时,我们可以使用Arrays.asList()方法或Collections.singletonList()方法。 在本文中&#x…

【Linux】基础IO--文件基础知识/文件操作/文件描述符

文章目录 一、文件相关基础知识二、文件操作1.C语言文件操作2.操作系统文件操作2.1 比特位传递选项2.2 文件相关系统调用2.3 文件操作接口的使用 三、文件描述符fd1.什么是文件描述符2.文件描述符的分配规则 一、文件相关基础知识 我们对文件有如下的认识: 1.文件 …

用最少数量的箭引爆气球[中等]

优质博文:IT-BLOG-CN 一、题目 有一些球形气球贴在一堵用XY平面表示的墙面上。墙面上的气球记录在整数数组points,其中points[i] [xstart, xend]表示水平直径在xstart和xend之间的气球。你不知道气球的确切y坐标。一支弓箭可以沿着x轴从不同点完全垂直…

Panalog 日志审计系统 前台RCE漏洞复现

0x01 产品简介 Panalog是一款日志审计系统,方便用户统一集中监控、管理在网的海量设备。 0x02 漏洞概述 Panalog日志审计系统 sy_query.php接口处存在远程命令执行漏洞,攻击者可执行任意命令,接管服务器权限。 0x03 复现环境 FOFA&#xf…

谭巍主任专业角度解读:疣体脱落前的症状是什么?

我们时常会发现身体各个部位长出一些赘生物,有些属于皮肤良性改变,而有些则是病毒引起的,称之为疣体。然而在疣体脱落之前,通常会出现一些症状,这些症状可能因人而异,但以下是一些常见的迹象: 1…

笔记61:注意力提示

本地笔记地址:D:\work_file\(4)DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章:动手学深度学习~注意力机制 a a a a a a a a

MySQL索引使用总结

索引(index) 官方定义:一种提高MySQL查询效率的数据结构 优点:加快查询速度 缺点: 1.维护索引需要消耗数据库资源 2.索引需要占用磁盘空间 3.增删改的时候会影响性能 索引分类 索引和数据库表的存储引擎有关,不同的存储引擎&am…

AndroidStudio - 新版本 Logcat 使用详解

最近这俩天正好有时间给自己做一下减法,忘记是去年还是今年,在升级 AndroidStudio 后使用 Logcat查看日志的方式也发生了一些变化,虽然一直在使用,但每当看到之前还未关闭 Logcat 命令行工具额昂也,就感觉可能还存在知…

Multi-head attention机制

多头:多个相同结构的线性变换层(方阵),要求分别线性变换 B站教学视频参考:https://www.bilibili.com/video/BV1eG4y1N7Jp/?p17&spm_id_frompageDriver&vd_sourcef4c7dcac0ad5ae8189bd414a3b23020d 什么是多头…

冒泡排序算法是对已知的数列进行从小到大的递增排序。

题目描述冒泡排序算法是对已知的数列进行从小到大的递增排序每个实例输出两行,第一行输出第1轮结果, 第二行输出最终结果 它的排序方法如下: 1.对数列从头开始扫描,比较两个相邻的元素,如果前者大于后者,则交换两者位置 2.重复步骤1,直到没有…

RocketMQ源码剖析之createUniqID方法

目录 版本信息: 写在前面: 源码剖析: 总计: 版本信息: RocketMQ-5.1.3 源码地址:https://github.com/apache/rocketmq 写在前面: 首先,笔者先吐槽一下RocketMQ的官方&#xff0…

attention中Q,K,V的理解

第一种 1.首先定义三个线性变换矩阵,query,key,value: class BertSelfAttention(nn.Module):self.query nn.Linear(config.hidden_size, self.all_head_size) # 输入768, 输出768self.key nn.Linear(config.hidde…

上海线下活动 | LLM 时代的 AI 编译器实践与创新

今年 3 月份, 2023 Meet TVM 系列首次线下活动从上海出发,跨越多个城市,致力于为各地关注 AI 编译器的工程师提供一个学习、交流的平台。 12 月 16 日 2023 Meet TVM 年终聚会将重返上海,这一次我们不仅邀请了 4 位资深的 AI 编…

自动伸缩:解密HPA、VPA、CA和CPA智能调整应用大小和数量

关注【云原生百宝箱】公众号,快速掌握云原生 Kubernetes提供了多种自动伸缩机制,例如HPA(Horizontal Pod Autoscaling),可以根据不同情况动态调整Pod副本数量。此功能使 Pod 能够有效地处理当前流量,而无需…

pytorch中的激活函数详解

1 激活函数介绍 1.1 什么是激活函数 激活函数是神经网络中引入的非线性函数,用于捕获数据中的复杂关系。它来自动物界的灵感,动物的神经元会接受来自对它有作用的其他神经元的信号,当然这些信号对该神经元的作用大小不同(即具有不…

Jmeter+ant+jenkins实现持续集成看这一篇就搞定了!

jmeterantjenkins持续集成 一、下载并配置jmeter 首先下载jmeter工具,并配置好环境变量;参考:https://www.cnblogs.com/YouJeffrey/p/16029894.html jmeter默认保存的是.jtl格式的文件,要设置一下bin/jmeter.properties,文件内容…

如何提高3D建模技能?

无论是制作影视动画还是视频游戏,提高3D建模技能对于你的工作都至关重要的。那么如何能创建出精美的3D模型呢?本文给大家一些3D建模技能方面的建议。 3D建模通过专门的软件完成,涉及制作三维对象。这项技能在视频游戏开发、建筑、动画和产品…

【Java Web学习笔记】0 - 技术体系的说明

B/S软件开发架构简述 B/S架构 1.B/S框架,意思是前端(Browser浏览器)和服务器端( Server )组成的系统的框架结构。 2. B/S架构也可理解为web架构,包含前端、后端、数据库三大组成部分。 3.示意图 ●前端 前端开发技术工具包括三要素: HTML、CSS和Jav…