问题描述:

微调baichuan2-7b模型,验证一轮后继续训练第一个iteration显存大幅增加

项目链接:

https://github.com/wp931120/baichuan_sft_lora

具体描述:

由于某些原因,笔者是在transformers4.30.2、torch2.0.1,accelerate==0.22版本上进行实验。

在训练过程中,发现显存溢出,考虑是句子长度问题,将1024设置为512。

然而训练还是显存溢出,通过调试分析,在评估验证集之前,显存大概占用11G左右,在评估过程中,显存依然保持11G左右,然而评估一结束,继续训练时,显存大幅增加,变为20G左右,后面不管怎么训练和评估,显存基本上都维持在20G。

然而根据项目作者的实验,明明12G左右的显存就够。

为此,后经群里大佬提示,考虑释放torch缓存或者更新transformers版本。

1、尝试各种方式在评估之后释放显存依然无效。

2、由于某些原因无法更新transformers版本,暂无法验证。

由于作者在原始代码上的更改并不多,遂怀疑是否是由于基座大模型(baichuan2-7b)的原因导致显存增加,因此将基座大模型换成chatglm2-6b,将数据处理的代码稍作修改后进行实验,发现模型在评估后继续训练显存没有大幅增加。

至此,虽然不清楚为什么baichuan-7b在当前环境无法正常训练,可能的原因是当前版本的transformers不太足够支持baichuan-7b的训练,对chatglm2-6b训练是足够的。

注释:

卡2是chatglm2-6b在qlora训练模式下的显存占用,卡3是baichuan2-7b在qlora训练模式下的显存占用。

微调baichuan2-7b遇到的显存坑的更多相关文章

  1. 我的Keras使用总结(5)——Keras指定显卡且限制显存用量,常见函数的用法及其习题练习

    Keras 是一个高层神经网络API,Keras是由纯Python编写而成并基于TensorFlow,Theano以及CNTK后端.Keras为支持快速实验而生,能够将我们的idea迅速转换为结果.好 ...

  2. 分页型Memory LCD显存管理与emWin移植

    上一篇随笔整理了一下逐行扫描型Memory LCD的显存管理与emWin移植,这篇就整理一下分页型Memory LCD显存管理与emWin移植. //此处以SSD1306作为实例 //OLED的显存/ ...

  3. 逐行扫描型Memory LCD显存管理与emWin移植

    因为Memory LCD 的特性,不能设置像素坐标,只能用缓存整体刷新. 所以对于Memory LCD来说,emWin移植仅与打点函数有关,这里用Sharp Memory LCD(ls013b7dh0 ...

  4. Cpu Gpu 内存 显存 数据流

    [精]从CPU架构和技术的演变看GPU未来发展 http://www.pcpop.com/doc/0/521/521832_all.shtml 显存与纹理内存详解 http://blog.csdn.n ...

  5. OpenGL8-直接分配显存-极速绘制(2)

    视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440/*** OpenGL8-直接分配显存-极速绘制(Opengl1 ...

  6. OpenGL8-直接分配显存-极速绘制(Opengl1.5版本才有)

    视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 /** * 这个例子介绍如何使用显卡内存进行绘制 下载地址 : ...

  7. Nvidia显卡怎样查看显存大小及硬件相关信息

    在电脑上安装Nvidia显卡驱动,平时也会通过Nvidia控制面板来查看显示显存位宽及宽带.显示显存容量和显示显存芯片信息等等,那么该如何查看Nvidia显存大小以及Nvidia硬件相关信息呢? 1. ...

  8. gpu显存(全局内存)在使用时数据对齐的问题

    全局存储器,即普通的显存,整个网格中的随意线程都能读写全局存储器的任何位置. 存取延时为400-600 clock cycles  很easy成为性能瓶颈. 訪问显存时,读取和存储必须对齐,宽度为4B ...

  9. [自制操作系统] 图形界面&VBE工具&MMIO显存&图形库/字库

    本文记录了在JOS(或在任意OS)上实现图形界面的方法与一些图形库的实现. 本文中支持的新特性: 支持基本图形显示 支持中英文显示(中英文点阵字库) 相关:VBE VESA MMIO 点阵字库 Git ...

  10. [置顶] 基于FPGA的VGA简易显存设计&NIOS ii软核接入

    项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...

随机推荐

  1. Java 配置 HTTP/Socks 代理竟能如此简单

    在网络请求过程中,使用代理是一种常见的需求.代理服务器可以帮助我们隐藏真实的 IP 地址.加速访问速度.访问公司特定内网等等要求.在 Java 中,我们可以通过一些库或框架来实现代理的设置和使用. 但 ...

  2. 10分钟理解契约测试及如何在C#中实现

    在软件开发中,确保微服务和API的可靠性和稳定性非常重要. 随着应用程序变得越来越复杂,对强大的测试策略的需求也越来越大,这些策略可以帮助团队在不牺牲敏捷性的情况下交付高质量的代码. 近年来获得广泛关 ...

  3. 2016A

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <algorithm& ...

  4. mysql 管理员常用命令

    1.创建用户 create user admin@localhost identified by 'password'; 2.赋权 grant privileges ON database.table ...

  5. MySQL 的 InnoDB 存储引擎简介

    MySQL 是世界上最流行的开源关系型数据库管理系统之一,而其中的存储引擎则是其关键组成部分之一.InnoDB 存储引擎在 MySQL 中扮演了重要角色,提供了许多高级功能和性能优化,适用于各种应用程 ...

  6. 带宽优化新思路:RoCE网卡聚合实现X2增长

    本文分享自华为云社区<2个RoCE网卡Bond聚合,实现带宽X2>,作者: tsjsdbd . 我们知道操作系统里面,可以将2个实际的物理网卡,合体形成一个"逻辑网卡" ...

  7. 其它——Apache-ab压力测试工具使用

    文章目录 一 介绍 二 安装 2.1 windows安装 2.2 Linux安装 三 使用 四 参数介绍 一 介绍 Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工 ...

  8. .NET 数据库大数据 方案(插入、更新、删除、查询 、插入或更新)

    1.功能介绍 (需要版本5.0.45) 海量数据操作ORM性能瓶颈在实体转换上面,并且不能使用常规的Sql去实现 当列越多转换越慢,SqlSugar将转换性能做到极致,并且采用数据库最佳API 操作数 ...

  9. GO数组解密:从基础到高阶全解

    在本文中,我们深入探讨了Go语言中数组的各个方面.从基础概念.常规操作,到高级技巧和特殊操作,我们通过清晰的解释和具体的Go代码示例为读者提供了全面的指南.无论您是初学者还是经验丰富的开发者,这篇文章 ...

  10. tiptop查询通配符

    *:表示任何符合的字符,例:A*,表示要找出全部为 A 开头的资料. ?:表示任一符合的字符,例:A?,表示要找出第一码为 A,第二码为任何 字符,但总共只有二码之数据. 注:以上二功能仅可在文字字段 ...