XTuner 大模型单卡低成本微调实战-程序员宅基地

技术标签: 语言模型  人工智能  

XTuner 大模型单卡低成本微调实战

视频链接:https://www.bilibili.com/video/BV1yK4y1B75J/?vd_source=bebd279bbc043ae1c13d45838597180f
文档地址:https://github.com/InternLM/tutorial/tree/main/xtuner
XTuner Repo: https://github.com/InternLM/xtuner/tree/main

Finetune 简介在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

XTuner

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8GB 显存玩转 LLM

在这里插入图片描述
FlashAttention 旨在避免从 HBM(High Bandwidth Memory)中读取和写入注意力矩阵,这需要做到:
目标一:在不访问整个输入的情况下计算 softmax 函数的缩减;
目标二:在后向传播中不能存储中间注意力矩阵。

DeepSpeed ZeRO有三个主要的优化阶段(如下图所示),它们对应于优化器状态、梯度和参数的划分。
1.Optimizer State Partitioning(Pos):将优化器状态切分到不同的 GPU
2.添加梯度分区(Pos+g):将梯度切分到不同的 GPU
3.添加参数分区(Pos+g+p):将模型参数切分到不同的 GPU
在这里插入图片描述
在这里插入图片描述

整体基本步骤

  1. 准备数据
    下载所需数据集,比如 https://huggingface.co/datasets/timdettmers/openassistant-guanaco/tree/main
  2. 修改配置文件
    使用 xtuner list-cfg 查看支持的模型配置
# xtuner list-cfg
[2024-01-14 10:44:08,415] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)
[2024-01-14 10:44:20,046] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)
==========================CONFIGS===========================
省略...
internlm_20b_qlora_alpaca_e3
internlm_20b_qlora_alpaca_enzh_e3
internlm_20b_qlora_alpaca_enzh_oasst1_e3
internlm_20b_qlora_alpaca_zh_e3
internlm_20b_qlora_arxiv_gentitle_e3
internlm_20b_qlora_code_alpaca_e3
internlm_20b_qlora_colorist_e5
internlm_20b_qlora_lawyer_e3
internlm_20b_qlora_msagent_react_e3_gpu8
省略...
=============================================================

拷贝修改配置文件

xtuner copy-cfg internlm_chat_7b_qlora_oasst1_e3 .
  1. 训练微调
    使用命令训练
xtuner train ${CONFIG_NAME_OR_PATH}

也可以增加 deepspeed 进行训练加速:

xtuner train ${CONFIG_NAME_OR_PATH} --deepspeed deepspeed_zero2
  1. 模型转换
    训练完成后,转换训练完成 pth 到 hugging face 格式的模型
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH_file_dir} ${SAVE_PATH}
  1. 部署与测试
    将 HuggingFace adapter 合并到大语言模型:
xtuner convert merge    ${NAME_OR_PATH_TO_LLM}  ${NAME_OR_PATH_TO_ADAPTER}   ${SAVE_PATH}   --max-shard-size 2GB

与合并后的模型对话:

# 加载 Adapter 模型对话(Float 16)
xtuner chat ./merged --prompt-template internlm_chat

# 4 bit 量化加载
# xtuner chat ./merged --bits 4 --prompt-template internlm_chat

不合并模型直接对话,增加 --adapter 参数来指定 Lora 的参数

xtuner chat $LLM --adapter $ADAPTER --prompt-template $PROMPT_TEMPLATE --system-template $SYSTEM_TEMPLATE

用 MS-Agent 数据集 赋予 LLM 以 Agent 能力

MSAgent-Bench

ModelScope-Agent是一个通用且可定制的代理框架,用于实际应用,基于开源LLMs作为种树。它提供了一个用户友好的系统库,具有可定制的引擎设计,支持在多个开源LLMs上进行模型训练,同时还以一种统一的方式实现了与模型API和常见API的无缝集成。 https://modelscope.cn/datasets/damo/MSAgent-Bench/summary

下载已经训练好的参数

cd ~/ft-msagent
apt install git git-lfs
git lfs install
git lfs clone https://www.modelscope.cn/xtuner/internlm-7b-qlora-msagent-react.git

执行

到 serper.dev 注册后获得一个 api key

export SERPER_API_KEY=abcdefg

xtuner chat ./internlm-chat-7b --adapter internlm-7b-qlora-msagent-react --lagent

执行日志

# xtuner chat ./internlm-chat-7b/ --adapter ./internlm-7b-qlora-msagent-react/ --lagent
[2024-01-13 23:37:23,481] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)
Error: mkl-service + Intel(R) MKL: MKL_THREADING_LAYER=INTEL is incompatible with libgomp.so.1 library.
        Try to import numpy first or set the threading layer accordingly. Set MKL_SERVICE_FORCE_INTEL to force it.
[2024-01-13 23:37:27,892] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)
Loading checkpoint shards: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████| 8/8 [00:09<00:00,  1.24s/it]
Loading adapter from ./internlm-7b-qlora-msagent-react/...

double enter to end input (EXIT: exit chat, RESET: reset history)请介绍 attention is all you need 论文

根据我的搜索结果,“attention is all you need”论文提出了一种基于注意力机制的简单网络架构,可以替代传统的递归和卷积神经网络,并在多个任务上取得了最新的翻译结果。此外,这篇论文还介绍了一些实验结果和应用场景。如果您对这个主题感兴趣,我可以为您提供更多相关信息。

在 serper.dev 上可以查询到日志
在这里插入图片描述

参考文献

https://zhuanlan.zhihu.com/p/618533434
https://zhuanlan.zhihu.com/p/624412809

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhjunqin/article/details/135572684

智能推荐

三.ffmpeg 集成av1_ffmpeg av1-程序员宅基地

文章浏览阅读8.3k次,点赞2次,收藏5次。copy from zhujiamin一、介绍FFmpeg4.2支持AV1、AVS2等视频编码格式,但本身并不包含解码器,需要自己集成。集成的编解码器要避开GPL开源协议(–enable-gpl),因此不能用x264、AVS2等编解码器我在研究FFmpeg升级时,寻找能提升多媒体系统表现力的新特性,发现FFmpeg支持的基于BSD协议的dav1d解码器比较有价值,能大幅度提高AV1软解码性能,没有代码开源的风险,并且能持续迭代更新AV1是由AOM(Alliance for Open Media,开_ffmpeg av1

Anaconda安装Python与tensorflow_source activate py36-程序员宅基地

文章浏览阅读693次。众所周知Python常用的版本有2.x和3.x,常常会引起版本问题。由于我在Linux系统中已经安装有Python3.x和对应的TensorFlow,现在遇到需要跑在Python2.x下的TensorFlow工程时,就很麻烦,因此可以用Anaconda来建立一个独立的小环境来另外安装Python2.x及其对应的TensorFlow来跑这个工程。AnacondaAnaconda(官网)是什么..._source activate py36

学习3D引擎架构技术概述_二三维引擎-程序员宅基地

文章浏览阅读8.5k次,点赞9次,收藏44次。 近期对3D引擎的架构设计做了一个梳理总结,现在开发游戏都离不开引擎,这些引擎包括Unity引擎,虚幻引擎,Cocos2dx引擎,自研引擎等等。很多开发者只会利用他们写逻辑,遇到优化问题就束手无策了,遇到Shader编程以及优化就感到头疼,长此以往对自己技术提升非常不利的。要改变现有的状态,就必须要系统的学习相关3D引擎技术,这样才能在使用引擎开发产品时得心应手。本篇博客从两方面给读者做..._二三维引擎

Aidlux实现canny边缘检测。-程序员宅基地

文章浏览阅读50次。具体流程如下:https://www.bilibili.com/video/BV1Tu4y1q755/1、通过launch-build创建桌面应用。2、创建时候填入图片URL、名称和运行路径。3、点击运行,实现Canny边缘检测。

SwiftUI macOS全球开发资源汇总_macos 开发资源-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏7次。你说flash好用,苹果给封杀了。你说h5很灵活,苹果悄悄清洗h5。你说kotlin好用,苹果给你造了Swift。你说flutter好用,苹果就自己造了SwiftUI。苹果的原则很简单,我的世界必须都是我的。作为在苹果世界里面种地的码农,俺们还是要遵守人家都规则,能够native就尽量不要高跨平台,能用苹果制造就不要用google生产。大牛肯定要给你布道跨平台的优势,但是人家在做现象级别的app,可以和苹果讨价还价,而俺们这类普通程序员还是老老实实的用苹果造吧。WWDC2020更新汇总本次次._macos 开发资源

dcm4che3处理dicom文件基本操作-程序员宅基地

文章浏览阅读2.3k次。上一篇介绍了如何使用python来操作dicom文件,然后这里介绍一下使用java开源的工具dcm4che3来处理文件,达到一样的效果。 github:https://github.com/dcm4che/dcm4che 然后我们也可以看看官网的介绍,因为dicom涉及的范围比较多,所以d..._dcm4che3 解析dicom

随便推点

成都电子计算机职业中学,成都市蜀兴计算机职业中学2020年招生录取分数线-程序员宅基地

文章浏览阅读245次。只要是参加了高考的同学,都会关心每个高校的分数线,因为只要在分数线内的就有读大学的机会。但是不同的学校对分数线的定义是不同的,所以大家要时刻关注就读院校的分数线,以便及时报读。接下来就给大家介绍下成都市蜀兴计算机职业中学的分数线,以供参考。成都市蜀兴计算机职业中学所属地普通高中2020年录取分数线招生学校录取分数川师大附中599盐道街中学565成都市十七中543田家炳中学553电子科大实验中学57...

【MySQL】数据库服务器硬件优化与实战详解(调优篇)(实战篇)(MySQL专栏启动)_数据库优化硬件优化-程序员宅基地

文章浏览阅读5.5k次,点赞34次,收藏36次。本文从数据库服务器底层硬件介绍,什么是服务器,结合CSAPP中的第4、6、9章的存储器层次结构、虚拟内存、处理器体系结构,分析MySQL服务器需要做的一些优化,并给出优化建议。_数据库优化硬件优化

【信息系统项目管理师】高项知识框架--考点大汇总_高项管师章节重点知识归纳-程序员宅基地

文章浏览阅读5.9k次,点赞10次,收藏72次。【信息系统项目管理师】高项知识框架–考点大汇总_高项管师章节重点知识归纳

ASP.NET网站制作-程序员宅基地

文章浏览阅读6.4k次,点赞3次,收藏28次。ASP.NET网站制作1、ASP.NET页面对象1网页脚本当客户端通过客户浏览器发送HTTP请求时,web服务器将HTML文档部分和脚本部分返回给客户端浏览器,在客户端浏览器中解释执行并及时更新页面,脚本处理工作全部在客户端浏览器执行完成。优点: 减轻服务器负荷,同时增加页面的反应速度。缺点:浏览器差异性导致页面差异支持的语言: JavaScriptJScript VBScript(2)服务端脚本..._asp.net网站制作

车载 OTA技术概念_sota和ota的区别?-程序员宅基地

文章浏览阅读3k次,点赞10次,收藏54次。总的来说,OTA实现方案分为两种,一种与通常的刷写方式一样,即先擦除当前版本软件,再刷写新版本软件,但这种方法有个隐患,就是新软件有问题时,由于旧软件已经被擦除,没有备份,恢复会很麻烦,因此就提出了另一种,即A/B交换。(Firmware-Over-the-Air),是指不改变车辆原有配件的前提下,通过写入新的固件程序,使拥有联网功能的设备进行升级,包括车辆的发动机,电机,变速箱,底盘等控制系统,比如特斯拉曾通过FOTA新增过自动驾驶功能、增加过电池容量和改善过刹车距离等。,那都将是一项很繁重的任务。_sota和ota的区别?

清空数据库的方法_548数据库清库-程序员宅基地

文章浏览阅读744次。近来发现数据库过大,空间不足,因此打算将数据库的数据进行全面的清理,但表非常多,一张一张的清空,实在麻烦,因此就想利用SQL语句一次清空所有数据.找到了三种方法进行清空.使用的数据库为MS SQL SERVER.1.搜索出所有表名,构造为一条SQL语句declare @trun_name varchar(8000)set @trun_name=''select_548数据库清库

推荐文章

热门文章

相关标签