老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人工智能
    • 人生感悟
      • 共产主义
      • 能量哲学
      • 自然辩证法
    • 信息技术
      • C#笔记
      • LaTex
      • Linux
      • RIME
      • Ubuntu&Debian
      • WordPress
      • 基于Java的B/S系统构建
      • 开源开发
      • 病毒相关
      • 编程的坏习惯
      • 网上办公系统
    • 往事随风
      • 我在大学那几年
      • 童年趣事
      • 精彩生活
    • 情感随笔
    • 文学创作
      • 小说
    • 生活记录
      • 博士进行中
      • 美国一年
      • 老杨学游泳
    • 评论杂谈
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 人工智能
  3. 正文

在本地服务器上训练Dolly模型

2023年03月30日 7502点热度 1人点赞 14条评论

Dolly是一个基于GPT-J的微调模型,使用了GPT-J-6B作为预训练模型。

Github上公开的源代码是notebook代码,需要做一些修改才能在本地的服务器上运行。

本文目录4
  • 1环境配置
  • 2安装依赖
  • 3训练
  • 4一些坑

1环境配置

可以使用conda来管理自己的虚拟环境。如果没有conda,可以根据这篇文章来进行安装。

创建环境:

Bash
1
conda create --name dolly

训练过程中,需要用到gcc编译ninja,gcc版本要求至少5以上,否则会报错。

纯文本
12345678910111213141516171819202122232425262728293031
!! WARNING !!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Your compiler (c++ 4.8.5) may be ABI-incompatible with PyTorch!
Please use a compiler that is ABI-compatible with GCC 5.0 and above.
See https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html.

See https://gist.github.com/goldsborough/d466f43e8ffc948ff92de7486c5216d6
for instructions on how to install GCC 5 or higher.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                              !! WARNING !!

  warnings.warn(ABI_INCOMPATIBILITY_WARNING.format(compiler))
Emitting ninja build file /home/haida_yangyongquan/.cache/torch_extensions/py39_cu117/utils/build.ninja...
Building extension module utils...
Allowing ninja to set a default number of workers... (overridable by setting the environment variable MAX_JOBS=N)
[1/2] c++ -MMD -MF flatten_unflatten.o.d -DTORCH_EXTENSION_NAME=utils -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include/torch/csrc/api/include -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include/TH -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include/THC -isystem /home/haida_yangyongquan/.pyenv/versions/3.9.7/include/python3.9 -D_GLIBCXX_USE_CXX11_ABI=0 -fPIC -std=c++14 -c /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/deepspeed/ops/csrc/utils/flatten_unflatten.cpp -o flatten_unflatten.o 
FAILED: flatten_unflatten.o 
c++ -MMD -MF flatten_unflatten.o.d -DTORCH_EXTENSION_NAME=utils -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include/torch/csrc/api/include -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include/TH -isystem /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/include/THC -isystem /home/haida_yangyongquan/.pyenv/versions/3.9.7/include/python3.9 -D_GLIBCXX_USE_CXX11_ABI=0 -fPIC -std=c++14 -c /home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/deepspeed/ops/csrc/utils/flatten_unflatten.cpp -o flatten_unflatten.o 
c++: error: unrecognized command line option ‘-std=c++14’
ninja: build stopped: subcommand failed.
2023-03-28 23:58:27 ERROR [__main__] main failed
Traceback (most recent call last):
  File "/home/haida_yangyongquan/dolly/dolly-master/.venv/lib/python3.9/site-packages/torch/utils/cpp_extension.py", line 1900, in _run_ninja_build
    subprocess.run(
  File "/home/haida_yangyongquan/.pyenv/versions/3.9.7/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

2安装依赖

从github上下载源代码并上传到服务器,如果可以远程clone,可以直接clone。

进入虚拟环境后,安装依赖。

Bash
1234
conda activate dolly
cd dolly
pip install -r requirements_dev.txt
./run_pytest.sh

测试通过后,就可以进行下一步了。

3训练

源代码中train_dolly.py没有用,因为是一个notebook脚本,核心目的是调用deepspeed进行训练。因此,直接在dolly根目录执行:

Bash
1
deepspeed --num_gpus 8  --module training.trainer --deepspeed /home/yourhomedir/dolly/config/ds_z3_bf16_config.json  --epochs 1 --local-output-dir /home/yourhomedir/dolly/output/  --dbfs-output-dir /home/yourhomedir/dolly/dbfs/ --per-device-train-batch-size 1 --per-device-eval-batch-size 1 --lr 1e-5

其中--num_gpus指的是显卡数量,--module training.trainer表示要训练training文件夹下的trainer.py文件, --deepspeed /home/yourhomedir/dolly/config/ds_z3_bf16_config.json是指定配置文件,--local-output-dir是模型输出目录, 其他参数不再赘述。

记得把yourhomedir改为自己的用户名。

当然也可以写一个sh文件来执行,

Bash
123
module load CUDA/cuda-11.7
export CUDA_VISIBLE_DEVICES=0,1,2,3
deepspeed  --module training.trainer --deepspeed /home/yourhomedir/dolly/config/ds_z3_bf16_config.json  --epochs 1 --local-output-dir /home/yourhomedir/dolly/output/  --dbfs-output-dir /home/yourhomedir/dolly/dbfs/ --per-device-train-batch-size 1 --per-device-eval-batch-size 1 --lr 1e-5

注意,export设置了显卡的索引号以后,--num_gpus这个参数可以省略。这里用到了4块显卡。

给它执行权限。

Bash
1
chmod +x train.sh

然后后台执行:

Bash
1
nohup ./train.sh &

如果要查看执行情况:

Bash
1
tailf nohup.out

4一些坑

Torch用的Cuda一般是11.7版本,如果不是,需要安装。同时,在执行命令前,使用module load CUDA/cuda-11.7设置自己的环境变量。

你可以使用下面的代码查看自己的Torch用的cuda版本:

Bash
123456
python
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.device_count())
torch.version.cuda

某些GPU不支持BF16数据精度,需要使用FP16。

需要修改代码dolly/training/trainer.py ,将182行和183行改为:

Python
12
fp16=True,
bf16=False,

第250行,改为:

Python
1
@click.option("--bf16", type=bool, default=False, help="Whether to use bf16 (preferred on A100's).")

如果显卡的显存不够(通常来说至少需要单卡32G),则需要使用主存来优化,修改dolly/config/ds_z3_bf16_config.json文件,在"zero_optimization",加入

JSON
1234
"offload_optimizer": {
  "device": "cpu",
  "pin_memory": true
},
标签: conda dolly gpt
最后更新:2023年03月30日
老杨

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

点赞

评论(14)

写下你的评论
  1. deemo
    deemo2023年03月31日 10:24

    老师,为什么我安装了依赖项 测试不通过呢

    1. 老杨
      老杨作者2023年03月31日 10:26

      @deemo 报什么错?

      1. deemo
        deemo2023年04月01日 08:51

        @老杨 python 3.7的好像不行 升到3.8测试成功了

        1. 老杨
          老杨作者2023年04月01日 20:37

          @deemo 好的。

  2. deemo
    deemo2023年04月17日 14:19

    老师,我运行这个60亿的模型,使用了offload,但是节点的内存满了,以致于训练中止。

    1. 老杨
      老杨作者2023年04月17日 15:44

      @deemo 是最后保存模型的时候终止的吗?还是训练过程中终止了?

      1. deemo
        deemo2023年04月17日 15:56

        @老杨 训练过程中终止的,在卸载参数时,内存炸了

        1. 老杨
          老杨作者2023年04月17日 15:58

          @deemo 如果是使用了cpu的offload,那么gpu卡数越好,应该越不容易崩溃,因为占用内存会少一些。

          减少gpu卡数,减少batch size会有所帮助。

          1. deemo
            deemo2023年04月17日 16:25

            @老杨 好的谢谢老师

  3. 啊啊啊
    啊啊啊2023年04月27日 13:26

    老师出视频吗

    1. 老杨
      老杨作者2023年06月12日 11:39

      @啊啊啊 没考虑过出视频。

  4. mmyin
    mmyin2023年05月19日 16:41

    老师你好,第一张图中gcc问题,我使用gcc -v查看是8.3,但是运行时候还是会出现如第一张图的错误,请问如何处理啊?

    1. 老杨
      老杨作者2023年05月19日 19:15

      @mmyin 是一模一样的错误吗?错误代码贴出来看看。

  5. 兔宝宝游戏网
    兔宝宝游戏网2023年11月10日 20:13

    大佬的教程好详细啊

发表评论

选择代码语言
选好后在光标处插入代码块,把示例文字换成你的代码即可。

老杨

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

搜索
最新 热点 随机
关于机器人的发展 遥遥领先 开源密码生成工具SimplePassword 痛苦根源 同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端) 别成为AI的奴隶 给阿嬷的情书 信息焦虑综合症 PUA 人的悲喜并不相通
为多用户安装Anaconda及其使用方法WordPress主题发布:kratos_YangLaTex中上划线\overline和\bar的使用说明LaTex中设置字体的正确方法那一年,2009使用Windows7自带Windows Media Center播放RMVB影片幼儿园:回味童年童年趣事之气门芯这几天的事儿无插件实现WordPress留言本
又是病毒? WordPress主题发布:kratos_Yang 我对队友的要求 随波逐流02盗墓 晴迷星途40失控 同学的51工具网以及微博客 软件推荐:CSS编辑器TopStyle 我想象的框架结构 享受生活 可怜的粉丝
最近评论
  • 感谢支持。可以买个鸿蒙设备玩玩
    老杨·2 周前·同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端)
  • 没有鸿蒙设备,吆喝一声支持老杨的产品
    乱云/Akay·2 周前·同步日历-我的第一款鸿蒙应用(鸿蒙CalDav客户端)
  • 先从减少手机使用时间开始。
    shanshan·2 月前·信息焦虑综合症
  • 所以必须得自己下定决心痛改前非,而不是跟自己讲条件。
    shanshan·2 月前·第二青春计划失败
  • 这种平台挺多的,但是应该没啥用,能有啥情绪价值比躺着刷手机更好呢?
    老杨·2 月前·第二青春计划失败
  • 已经遇到了,额外支付了170,托运登机行李,还不是托运行李。
    老杨·2 月前·春秋航空让人长见识
  • 那很好,恭喜你
    老杨·2 月前·PUA
  • 可以尝试改变。
    老杨·2 月前·信息焦虑综合症
  • 现在很多人离开AI已经不知道怎么工作了。
    老杨·2 月前·别成为AI的奴隶
  • 建议开发一个适合P人的工作生活计划平台,完不成没什么惩罚、但是完成了有大大的情绪…
    shanshan·2 月前·第二青春计划失败
  • 还有部分机型里20寸箱子应该上不了机,且没有免费行李托运额度。托运费超贵!
    shanshan·2 月前·春秋航空让人长见识
  • 这个世界精致利己主义者太多啦!
    shanshan·2 月前·人的悲喜并不相通
文章分类
选择分类
  • 人工智能13
  • 人生感悟121
    • 共产主义1
    • 能量哲学12
    • 自然辩证法12
  • 信息技术234
    • C#笔记6
    • LaTex12
    • Linux18
    • RIME4
    • Ubuntu&Debian21
    • WordPress1
    • 基于Java的B/S系统构建10
    • 开源开发2
    • 病毒相关3
    • 编程的坏习惯4
    • 网上办公系统9
  • 往事随风41
    • 我在大学那几年18
    • 童年趣事12
    • 精彩生活5
  • 情感随笔113
  • 文学创作69
    • 小说68
  • 生活记录220
    • 博士进行中6
    • 美国一年22
    • 老杨学游泳4
  • 评论杂谈169
关注公众号

COPYRIGHT © 2026 老杨说话的地方. ALL RIGHTS RESERVED.

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号

本文目录4
  • 1环境配置
  • 2安装依赖
  • 3训练
  • 4一些坑