政安晨的AI大模型训练实践 十一 - 基于千问的Qwen2.5-VL-3B-Instruct 多模态模型进行微调参数认知 2

政安晨的个人主页:政安晨

欢迎 👍点赞✍评论⭐收藏

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

微调一个大模型要准备的背景知识还是很多的。 本节我们介绍训练阶段的一些主要参数。

这是训练阶段的一些基本参数:

在AI大模型训练阶段,这些基本参数的含义如下:

  1. 学习率(Learning Rate) :这是AdamW优化器的初始学习率。学习率决定了模型在每次迭代中更新权重的步长大小。过高的学习率可能导致模型无法收敛,而过低的学习率则会使训练过程变得非常缓慢。

  2. 训练轮数(Training Epochs) :这是需要执行的训练总轮数。一个epoch表示整个数据集被完整地遍历一次。训练轮数越多,模型有机会更好地学习数据中的模式,但也可能增加过拟合的风险。

  3. 最大梯度范数(Max Gradient Norm) :这是用于梯度裁剪的参数。梯度裁剪是一种防止梯度爆炸的技术,通过将梯度的范数限制在一个最大值内,可以稳定训练过程。

  4. 最大样本数(Max Samples) :这是每个数据集的最大样本数。它限制了训练过程中使用的数据量,对于大规模数据集,可以通过设置这个参数来控制训练的计算成本和时间。

这些参数的合理设置对模型的训练效果和效率有着重要影响。

在AI大模型训练阶段,混合精度训练是一种通过使用不同精度的数据类型来加速训练过程的技术。计算类型的含义如下:

  1. bf16(Brain Floating Point 16) :这是一种16位浮点数格式,专为深度学习设计。它在保持较高精度的同时,提供了比32位浮点数更快的计算速度和更低的内存占用。

  2. fp16(Floating Point 16) :这是另一种16位浮点数格式,广泛用于图形处理和机器学习中。与fp32相比,fp16可以显著减少内存带宽需求和计算量,从而加快训练速度。

  3. fp32(Floating Point 32) :这是标准的32位浮点数格式,提供较高的数值精度,但计算速度和内存占用相对较高。

  4. pure_bf16 :这表示在整个训练过程中完全使用bf16进行计算,不进行任何精度转换。这种方式可以最大化bf16的优势,但在某些情况下可能会影响模型的收敛性和最终性能。

选择合适的计算类型可以根据硬件支持、模型复杂度和对精度的要求来决定,以达到最佳的训练效果和效率。

在AI大模型训练阶段,这些参数的具体解释如下:

  1. 截断长度(Sequence Length) :这是输入序列分词后的最大长度。在处理文本数据时,每个输入样本会被分割成一系列的词或子词,这个参数决定了每个样本中允许的最大词数。较长的序列可以包含更多的上下文信息,但也会增加计算复杂度和内存需求。

  2. 批处理大小(Batch Size) :这是每个GPU处理的样本数量。批处理大小决定了每次迭代中更新模型参数所使用的样本数量。较大的批处理大小可以提供更稳定的梯度估计,加速训练过程,但也需要更多的内存资源。

  3. 梯度累积(Gradient Accumulation Steps) :这是梯度累积的步数。当可用的GPU内存不足以支持较大的批处理大小时,可以通过梯度累积来模拟大批次的效果。具体来说,它将一个大批次的数据分成多个小批次进行前向和反向传播,然后将梯度累加起来再进行一次权重更新。

  4. 验证集比例(Validation Set Ratio) :这是验证集占全部样本的百分比。在训练过程中,通常会将数据集划分为训练集和验证集,其中验证集用于评估模型的泛化能力。通过调整这个比例,可以在训练和验证之间找到合适的平衡点。

合理设置这些参数对于优化训练过程、提高模型性能和减少计算资源消耗都非常重要。

在AI大模型训练阶段,学习率调节器(也称为学习率调度器)用于动态调整学习率,以优化训练过程和提高模型性能。以下是各学习率调节器的介绍及解释:

  1. linear 线性学习率调度器。它按照线性规律逐渐减少学习率,通常从一个较高的初始值开始,然后在训练过程中逐步降低到一个较小的最终值。

  2. cosine 余弦退火学习率调度器。它根据余弦函数的形状来调整学习率,从初始值开始,先快速下降,然后缓慢上升,再下降,形成一个平滑的周期性变化。这种调度器有助于模型在训练后期进行更精细的参数调整。

  3. cosine_with_restarts 带重启的余弦退火学习率调度器。它在余弦退火的基础上增加了周期性的重启机制,即在每个周期结束时将学习率重新设置为初始值,然后再进行下一个周期的余弦退火。这种方式可以防止模型陷入局部最优解,促进更好的收敛。

  4. polynomial 多项式学习率调度器。它根据多项式函数来调整学习率,通常从一个较高的初始值开始,然后按照多项式的规律逐渐减少到一个较小的最终值。这种调度器适用于需要在训练后期进行平滑收敛的情况。

  5. constant 常数学习率调度器。在整个训练过程中保持学习率不变,适用于对学习率有明确要求或希望进行简单调试的情况。

  6. constant_with_warmup 带有预热的常数学习率调度器。它在训练初期使用较低的学习率进行预热,然后在达到一定迭代次数后切换到常数学习率。这种方式有助于模型在训练初期更好地适应数据分布。

  7. inverse_sqrt 逆平方根学习率调度器。它根据逆平方根函数来调整学习率,通常从一个较高的初始值开始,然后按照逆平方根的规律逐渐减少。这种调度器适用于需要在训练初期进行较大更新、后期进行较小更新的情况。

  8. reduce_lr_on_plateau 基于平台期减少学习率的调度器。它在训练过程中监测模型的性能指标(如验证集上的损失),当指标在一段时间内没有显著改善时,自动减少学习率。这种方式有助于模型在遇到平台期时进行更有效的探索。

  9. cosine_with_min_lr 带有最小学习率的余弦退火学习率调度器。它在余弦退火的基础上增加了一个最小学习率限制,即使在余弦函数的低点,学习率也不会低于这个最小值。这种方式可以在保证模型收敛的同时,避免学习率过低导致的训练停滞。

  10. warmup_stable_decay 预热稳定衰减学习率调度器。它在训练初期使用较低的学习率进行预热,然后在达到一定迭代次数后逐渐增加到一个稳定的学习率,并在此基础上进行衰减。这种方式有助于模型在训练初期更好地适应数据分布,同时在后期进行更稳定的参数调整。

选择合适的学习率调节器可以根据模型的特性、数据集的规模和训练目标来决定,以达到最佳的训练效果和效率。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

心理咨询小程序的未来发展

还在眼巴巴看着心理咨询行业的巨大蛋糕却无从下口?今天就来聊聊心理咨询小程序的无限潜力 据统计,全球超 10 亿人受精神心理问题困扰,国内心理健康问题也日益突出,心理咨询需求猛增。可传统心理咨询预约难,费用高&…

反欺诈平台|基于Springboot+vue的反欺诈平台(源码+数据库+文档)​

目录 基于Springbootvue的反欺诈平台系统 一、前言 二、系统设计 三、系统功能设计 5.1用户信息管理 5.2 反诈视频管理 5.3视频收藏管理 5.1案例分析管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介…

P8772 [蓝桥杯 2022 省 A] 求和--简单题的陷阱——(不开long long见祖宗!!!

P8772 [蓝桥杯 2022 省 A] 求和 题目分析代码 题目 分析 cnmmd 没什么好分析的&#xff0c;n≤210^5&#xff0c;tmd 我拿着a[100010]算半天 简单题的陷阱- - 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #i…

如何让传统制造企业从0到1实现数字化突破?

随着全球制造业不断向智能化、数字化转型&#xff0c;传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新&#xff0c;更是管理、文化、业务流程等全方位的变革。从零开始&#xff0c;如何带领一家传统制造企业走向数字化突破&#xff0c;是许多企业领导者面…

TMDS视频编解码算法

因为使用的是DDR进行传输&#xff0c;即双倍频率采样&#xff0c;故时钟只用是并行数据数据的5倍&#xff0c;而不是10倍。 TMDS算法流程&#xff1a; 视频编码TMDS算法流程实现&#xff1a; timescale 1 ps / 1ps //DVI编码通常用于视频传输&#xff0c;将并行数据转换为适合…

SpringBoot源码解析(十一):准备应用上下文

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…

跟李沐学AI:InstructGPT论文精读(SFT、RLHF)

原论文&#xff1a;[2203.02155] Training language models to follow instructions with human feedback 原视频&#xff1a;InstructGPT 论文精读【论文精读48】_哔哩哔哩_bilibili 简介 1. RLHF 的基本概念 RLHF 是一种结合强化学习和人类反馈的训练方法&#xff0c;旨在…

基于YOLO11深度学习的运动鞋品牌检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

条款24:若所有参数皆需类型转换,请为此采用 non-member 函数

1.针对隐式转换的情况&#xff0c;可能会出现误用的情况 示例代码 #include <iostream>class Rational { public:Rational(float iNum1 1, float iNum2 2) { fNum iNum1 / iNum2; }~Rational() {}//自定义逻辑const Rational operator * (const Rational& rhs) …

无人机实战系列(番外一)本地图像+Apple ML Depth Pro

这篇文章作为系列文章 “无人机实战系列” 的一篇番外文章&#xff0c;主要测试了下 Apple 推出的一个基于机器学习的单目图像转深度的工具 ml-depth-pro&#xff0c;这个也是我在找这方面工具时意外发现的一个仓库&#xff0c;后期仍然会以 Depth Anything V2 为主线进行记录。…

MySQL数据库连接池泄露导致MySQL Server超时关闭连接

前言 最近做项目&#xff0c;发现老项目出现xxx&#xff0c;这个错误其实很简单&#xff0c;出现在MySQL数据库Server端对长时间没有使用的client连接执行清楚处理&#xff0c;因为是druid数据库&#xff0c;且在github也出现这样的issue&#xff1a;The last packet successf…

人工智能基础知识笔记一:核函数

1、简介 核函数有严格的数学要求&#xff0c;凡满足Mercer定理【参考本文第9章节】的都可以作为核函数。Mercer 定理确保高维:间任意两个向量的内积一定可以被低维空间中两个向量的某种计算表示(多数时候是内积的某换)。本节通过一个例子讲解核函数的使用。 2、核函数定义 设…

本地部署DeepSeek-R1(Ollama+Docker+OpenWebUI知识库)

安装Ollama 打开 Ollama官网 https://ollama.com/下载安装 Ollama服务默认只允许本机访问&#xff0c;修改允许其它主机访问 OLLAMA_HOST0.0.0.0 ollama serve也可以添加系统环境变量 都知道模型体积很大&#xff0c;顺便也通过环境变量修改模型存放位置&#xff0c;我这…

图论算法篇:BFS宽度优先遍历

那么bfs算法的大名想必大家都一定听闻过&#xff0c;那么也许有的人在认识我们bfs算法之前是先接触的我们的dfs算法&#xff0c;那么目前我们的算法世界中的两种搜索算法就是我们的dfs和我们的bfs&#xff0c;那么废话不多说&#xff0c;就让我们进入bfs算法的学习 BFS算法原理…

初识.git文件泄露

.git 文件泄露 当在一个空目录执行 git init 时&#xff0c;Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库&#xff0c;只需把这个目录拷贝至另一处就可以了 这是一种常见的安全漏洞&#xff0c;指的是网站的 .git 目录…

【SpringBoot】【JWT】使用JWT的claims()方法存入Integer类型数据自动转为Double类型

生成令牌时使用Map存入Integer类型数据&#xff0c;将map使用claims方法放入JWT令牌后&#xff0c;取出时变成Double类型&#xff0c;强转报错&#xff1a; 解决&#xff1a; 将Integer转为String后存入JWT令牌&#xff0c;不会被自动转为其他类型&#xff0c;取出后转为Integ…

JVM之JVM的组成

Java 虚拟机&#xff08;JVM&#xff09;是 Java 程序的运行核心&#xff0c;它主要由类加载系统、运行时数据区、执行引擎和本地方法接口这几个关键部分组成。 类加载系统&#xff08;Class Loading System&#xff09; 类加载系统负责在程序运行时动态地将 Java 类加载到 J…

数据库面试题(基础常考!!!)

在数据库领域&#xff0c;无论是日常开发还是面试场景&#xff0c;都有一些高频且重要的问题需要我们深入理解和掌握。本文将对这些常见面试题进行详细阐述&#xff0c;帮助大家更好地应对面试和实际工作中的挑战。 面试题一&#xff1a;三范式详解 什么是三范式 三范式是关…

Linux网络 网络层

IP 协议 协议头格式 4 位版本号(version): 指定 IP 协议的版本, 对于 IPv4 来说, 就是 4. 4 位头部长度(header length): IP 头部的长度是多少个 32bit, 也就是 4 字节&#xff0c;4bit 表示最大的数字是 15, 因此 IP 头部最大长度是 60 字节. 8 位服务类型(Type Of Service):…

uniapp 微信小程序打包之后vendor.js 主包体积太大,解决办法,“subPackages“:true设置不生效

现在是打包的时候&#xff0c;vendor.js 的内容全部打到了主包里面&#xff0c; 说一下我的方法&#xff1a; 1. 通过发行 小程序打包 这样打包的体积是最小的&#xff0c;打包之后打开微信开发工具&#xff0c;然后再上传 2.manifest.json,在“mp-weixin”里添加代码 "…