当前位置:   article > 正文

【大模型系列 04】Chat-GLM-6B for PyTorch 昇腾迁移_torch.npu.set_compile_mode

torch.npu.set_compile_mode

源码链接

https://gitee.com/ascend/ModelZoo-PyTorch/tree/master/PyTorch/built-in/foundation/ChatGLM-6B

Chat-GLM-6B for PyTorch

概述

简述

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。本仓支持P-Tuning v2 和全参数fintune。

  • 参考实现:

    url=https://github.com/THUDM/ChatGLM-6B
    commit_id=27b04bce90b34e719375576cc67ff5374bb2f38a
    url=https://huggingface.co/THUDM/chatglm-6b/tree/v0.1.0
    commit_id=f83182484538e663a03d3f73647f10f89878f438
    
    • 1
    • 2
    • 3
    • 4
  • 适配昇腾 AI 处理器的实现:

    url=https://gitee.com/ascend/ModelZoo-PyTorch.git
    code_path=PyTorch/built-in/foundation
    
    • 1
    • 2

准备训练环境

准备环境

默认配置需要每张卡有60G以上空闲内存。

  • 当前模型支持的 PyTorch 版本和已知三方库依赖如下表所示。

    表 1 版本支持表

    Torch_Version三方库依赖版本
    PyTorch 1.11deepspeed 0.6.0
  • 环境准备指导。

    请参考《Pytorch框架训练环境准备》。

  • 安装依赖。

    1. 安装基础依赖

    在模型源码包根目录下执行命令,安装模型对应PyTorch版本需要的依赖。

    pip install -r requirements.txt  # PyTorch1.11版本
    
    • 1
    1. 安装deepspeed_npu插件
    # adaptor分支
    git clone https://gitee.com/ascend/DeepSpeed.git
    cd Deepspeed
    pip3 install ./
    
    • 1
    • 2
    • 3
    • 4

准备数据集

  1. 获取数据集。

    ADGEN 数据集任务为根据输入(content)生成一段广告词(summary)。

    Google Drive 或者 Tsinghua Cloud 下载处理好的 ADGEN 数据集,将解压后的 AdvertiseGen 目录放到ptuning目录下。
    数据集参考目录如下

    ├── AdvertiseGen
          ├──train.json
          ├──dev.json
    
    • 1
    • 2
    • 3

准备模型权重

  1. 获取语言识别模型和预训练权重

    用户从链接自行获取模型文件(除了modeling_chatglm.py)和8份权重文件(pytorch_model-0000*-of-00008.bin
    ),并放于model目录下,微调依赖该模型权重。
    model参考目录如下

    ├── model
          ├──config.json
          ├──configuration_chatglm.py
          ├──ice_text.model
          ├──pytorch_model-00001-of-00008.bin
          ├──pytorch_model-00002-of-00008.bin
          ├──pytorch_model-00003-of-00008.bin
          ├──pytorch_model-00004-of-00008.bin
          ├──pytorch_model-00005-of-00008.bin
          ├──pytorch_model-00006-of-00008.bin
          ├──pytorch_model-00007-of-00008.bin
          ├──pytorch_model-00008-of-00008.bin
          ├──pytorch_model.bin.index.json
          ├──quantization.py
          ├──test_modeling_chatglm.py
          ├──tokenization_chatglm.py
          ├──tokenizer_config.json
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

开始训练

训练模型

  1. 进入解压后的源码包根目录。

    cd /${模型文件夹名称}
    
    • 1

    修改ptuning目录下的env_npu.sh,修改引用的环境变量位置。

  2. 运行训练脚本。

    该模型P-Tuning v2支持单机单卡,全参数fintune支持单机8卡。

    • P-Tuning v2

      启动P-Tuning v2。

      bash ptuning/train.sh
      
      • 1
    • 全参数finetune

      启动8卡微调。
      可以用deepspeed.json配置deepspeed参数,目前默认使用zero1

      bash ptuning/ds_train_fintune.sh 
      
      • 1

    模型训练参数说明如下。

    公共参数:
    --max_source_length                       //处理后句子长度
    --max_target_length                       //目标数据长度
    --per_device_train_batch_size             //每卡训练批次大小
    --gradient_accumulation_steps             //梯度更新步数
    --max_steps                               //最大训练步数
    --logging_steps                           //打印信息步数
    --save_steps                              //保存参数步数
    --learning_rate                           //学习率
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    训练完成后,权重文件保存在当前路径下,并输出模型训练相关信息。

训练结果展示

表 1 训练结果展示表

NAMESamplesPerSecIterationsDataTypeTorch_VersionCard
Finetune -NPU18045000fp161.11A100
Finetune -GPU20275000fp161.11910B

说明:P-Tuning v2性能待补充

版本说明

变更

2023.6.25:首次发布。

FAQ

  1. 报错提示deepspeed.py需要版本大于等于0.6.5

    # 关闭版本检测。
    # 若遇到该报错
    pip show transformers
    # 复制Location路径
    # 使用fix文件夹下的deepspeed.py替换路径下transformers/deepspeed.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
  2. 报错提示tranining_args.py没有cuda

    # 自动替换无法替换三方库中的文件。
    # 若遇到该报错
    pip show transformers
    # 复制Location路径
    # 使用fix文件夹下的tranining_args.py替换路径下transformers/tranining_args.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
  3. 报错checkpoint.py

    # 1.11版本适配问题,新版本已修复。
    # 若遇到该报错
    pip show torch_npu
    # 复制Location路径
    # 使用fix文件夹下的checkpoint.py替换路径下torch_npu/utils/checkpoint.py
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  4. 加载参数阶段有卡死现象

    删除root下的cache目录,重新运行
    
    
    • 1
    • 2
  5. 单卡阶段报embedding_dense_grad算子错误

    enbedding当前版本,不支持动静合一,静态有部分shape不支持
    # 若遇到该报错
    修改main.py文件
    torch.npu.set_compile_mode(jit_compile=False)
    
    • 1
    • 2
    • 3
    • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/354269
推荐阅读
相关标签
  

闽ICP备14008679号