【AIGC】Baichuan2-13B-Chat模型微调

这篇具有很好参考价值的文章主要介绍了【AIGC】Baichuan2-13B-Chat模型微调。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境

微调框架:LLaMA-Efficient-Tuning
训练机器:4*RTX3090TI (24G显存)
python环境:python3.8, 安装requirements.txt依赖包

一、Lora微调

1、准备数据集

【AIGC】Baichuan2-13B-Chat模型微调,AIGC,AIGC,Baichuan2,Baichuan13BChat

2、训练及测试

1)创建模型输出目录

mkdir -p models/baichuan2_13b_chat/train_models/baichuan2_13b_chat_multi_gpus_03_epoch100/train_model

2)创建deepspeed配置文件目录

mkdir -p models/baichuan2_13b_chat/deepspeed_config

3)创建deepspeed配置文件

vi models/baichuan2_13b_chat/deepspeed_config/ds_config_baichuan2_13b_chat_multi_gpus_03_epoch100.json
{
  "bf16": {
    "enabled": true
  },
  "fp16": {
    "enabled": "auto",
    "loss_scale": 0,
    "loss_scale_window": 1000,
    "initial_scale_power": 16,
    "hysteresis": 2,
    "min_loss_scale": 1
  },
  "optimizer": {
    "type": "AdamW",
    "params": {
      "lr": "auto",
      "betas": "auto",
      "eps": "auto",
      "weight_decay": "auto"
    }
  },
  "scheduler": {
    "type": "WarmupDecayLR",
    "params": {
      "last_batch_iteration": -1,
      "total_num_steps": "auto",
      "warmup_min_lr": "auto",
      "warmup_max_lr": "auto",
      "warmup_num_steps": "auto"
    }
  },
  "zero_optimization": {
    "stage": 3,
    "offload_optimizer": {
      "device": "cpu",
      "pin_memory": true
    },
    "offload_param": {
      "device": "cpu",
      "pin_memory": true
    },
    "overlap_comm": true,
    "contiguous_gradients": true,
    "sub_group_size": 1e9,
    "reduce_bucket_size": "auto",
    "stage3_prefetch_bucket_size": "auto",
    "stage3_param_persistence_threshold": "auto",
    "stage3_max_live_parameters": 2e9,
    "stage3_max_reuse_distance": 2e9,
    "stage3_gather_16bit_weights_on_model_save": true
  },
  "gradient_accumulation_steps": "auto",
  "gradient_clipping": "auto",
  "steps_per_print": 2000,
  "train_batch_size": "auto",
  "train_micro_batch_size_per_gpu": "auto",
  "wall_clock_breakdown": false
}

4)训练模型

deepspeed --num_nodes 1 --num_gpus 4 --master_port=9901 src/train_bash.py \
    --stage sft \
    --model_name_or_path baichuan-inc/Baichuan2-13B-Chat \
    --do_train \
    --dataset example1 \
    --template baichuan2 \
    --finetuning_type lora \
    --lora_rank 16 \
    --lora_target W_pack,o_proj,gate_proj,down_proj,up_proj \
    --output_dir models/baichuan2_13b_chat/train_models/baichuan2_13b_chat_multi_gpus_03_epoch100/train_model \
    --overwrite_cache \
    --per_device_train_batch_size 4 \
    --gradient_accumulation_steps 4 \
    --preprocessing_num_workers 4 \
    --lr_scheduler_type cosine \
    --logging_steps 10 \
    --save_steps 100 \
    --learning_rate 5e-3 \
    --max_grad_norm 0.5 \
    --num_train_epochs 300.0 \
    --evaluation_strategy steps \
    --plot_loss \
    --bf16 \
    --deepspeed models/baichuan2_13b_chat/deepspeed_config/ds_config_baichuan2_13b_chat_multi_gpus_03_epoch100.json
[INFO|trainer.py:1686] 2023-09-19 04:07:47,607 >> ***** Running training *****
[INFO|trainer.py:1687] 2023-09-19 04:07:47,607 >>   Num examples = 94
[INFO|trainer.py:1688] 2023-09-19 04:07:47,608 >>   Num Epochs = 300
[INFO|trainer.py:1689] 2023-09-19 04:07:47,608 >>   Instantaneous batch size per device = 4
[INFO|trainer.py:1692] 2023-09-19 04:07:47,608 >>   Total train batch size (w. parallel, distributed & accumulation) = 64
[INFO|trainer.py:1693] 2023-09-19 04:07:47,608 >>   Gradient Accumulation steps = 4
[INFO|trainer.py:1694] 2023-09-19 04:07:47,608 >>   Total optimization steps = 300
[INFO|trainer.py:1695] 2023-09-19 04:07:47,612 >>   Number of trainable parameters = 55,787,520
{'loss': 7.7023, 'learning_rate': 0.00488255033557047, 'epoch': 6.67}                                                                                        
{'loss': 7.0675, 'learning_rate': 0.004714765100671141, 'epoch': 13.33}                                                                                      
  8%|█████████▊                                                                                                           | 25/300 [17:10<3:07:01, 40.81s/it]

  1. 测试模型
python src/cli_demo.py \
    --model_name_or_path baichuan-inc/Baichuan2-13B-Chat \
    --template baichuan2 \
    --finetuning_type lora \
    --checkpoint_dir models/baichuan2_13b_chat/train_models/baichuan2_13b_chat_multi_gpus_03_epoch100/train_model
3、注意事项:

1)我用的是3090TI显卡,使用fp16精度时,训练结果始终没有效果,而且训练到后面有(loss为0)的问题。这个不清楚时什么原因。所以需要采用bf16,deepspeed配置文件中要将bf16配置为true。训练时添加参数–bf16 。
所以如果显卡不是 3090TI ,可以尝试用 --fp16。

Refer:

  • 使用baichuan2-13B进行微调时出现loss全为0的情况
  • Deepspeed zero3对Baichuan系的13b-chat进行微调,微调效果失效(Baichuan-13b-chat和Baichuan2-13b-chat都尝试过)

2)deepspeed中 stage 需要选择 3 。尝试过 2 ,内存会溢出。
3) 报错:AttributeError: 'Parameter' object has no attribute 'ds_status' ; 解决办法:关闭验证集,比如 --val_size 0.01, --load_best_model_at_end

Refer:文章来源地址https://www.toymoban.com/news/detail-716233.html

  • Baichuan2-13B-Base微调eval报错
  1. 此次训练,loss还没降下去,测试效果不太理想。但是知识库微调成功,只是表达凌乱。所以建议如果知识库不大的话,尽量用单卡训练,效果更好。

到了这里,关于【AIGC】Baichuan2-13B-Chat模型微调的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源模型应用落地-baichuan2模型小试-入门篇(三)

            相信您已经学会了如何在Windows环境下以最低成本、无需GPU的情况下运行baichuan2大模型。现在,让我们进一步探索如何在Linux环境下,并且拥有GPU的情况下运行baichuan2大模型,以提升性能和效率。     CentOS是一种基于Linux的自由开源操作系统。它是从Red Hat Enterprise Li

    2024年04月17日
    浏览(41)
  • Baichuan2百川模型部署的bug汇总

    1.4bit的量化版本最好不要在Windows系统中运行,大概原因报错原因是bitsandbytes不支持window,bitsandbytes-windows目前仅支持8bit量化。 2. 报错原因是机器没有足够的内存和显存,offload_folder设置一个文件夹来保存那些离线加载到硬盘的权重。 ag:需要再cli_demo.py的文件中增加 offload_

    2024年01月18日
    浏览(34)
  • 【AI实战】开源中文 llama2 来了,30 分钟搭建 130 亿参数大模型 Llama2-Chinese-13b-Chat

    Llama2 2023年7月19日:Meta 发布开源可商用模型 Llama2。 Llama2 是一个预训练和微调的生成文本模型的集合,其规模从70亿到700亿个参数不等。 LLaMA2 的详细介绍可以参考这篇文章:【大模型】更强的 LLaMA2 来了,开源可商用、与 ChatGPT 齐平 Llama2-Chinese Llama2中文社区 Llama2-Chinese Git

    2024年02月12日
    浏览(34)
  • 全球最强长文本大模型,一次可读35万汉字:Baichuan2-192K上线

    大模型看书,从来没有这么快过。 国内大模型创业公司,正在技术前沿创造新的记录。 10 月 30 日,百川智能正式发布 Baichuan2-192K 长窗口大模型,将大语言模型(LLM)上下文窗口的长度一举提升到了  192K token 。 这相当于让大模型一次处理约  35 万个汉字 ,长度达到了 GPT

    2024年02月06日
    浏览(32)
  • LLaMA-Factory 8卡4090 deepspeed zero3 微调Qwen14B-chat

    环境安装 推荐使用docker,Ubuntu20.04 https://www.modelscope.cn/docs/%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85 下载模型 在modelscope主页,找到模型 https://modelscope.cn/models/qwen/Qwen-14B-Chat/summary 可以使用如下脚本 微调 使用LLaMA-Factory, 下载下面仓库的代码, https://github.com/hiyouga/LLaMA-Factory 在代码目录,

    2024年04月15日
    浏览(40)
  • 【大模型】更强的开源可商用的中英文大语言模型baichuan2来了,从零开始搭建

    baichuan-7B 可以查看这篇文章: 【AI实战】开源可商用的中英文大语言模型baichuan-7B,从零开始搭建 Baichuan 2 是百川智能推出的第二代开源大语言模型,采用 2.6 万亿 Tokens 的高质量语料训练。 Baichuan 2 在多个权威的中文、英文和多语言的通用、领域 benchmark 上取得同尺寸最佳的

    2024年02月09日
    浏览(26)
  • 大模型使用——超算上部署LLAMA-2-70B-Chat

    前言 1、本机为 Inspiron 5005 ,为 64 位,所用操作系统为 Windos 10 。超算的操作系统为 基于Centos的linux , GPU 配置为 A100 ,所使用开发环境为 Anaconda 。 2、本教程主要实现了在超算上部署LLAMA2-70B-Chat。 实现步骤 1、连接上超算以后,执行如下命令在超算上创建一个虚拟环境。

    2024年02月13日
    浏览(36)
  • 【大模型】0.5B的大模型通义千问1.5-0.5B-Chat来了!!

    Qwen1.5是Qwen2的测试版,这是一个基于转换器的纯解码器语言模型,在大量数据上进行了预训练。与之前发布的Qwen相比,改进之处包括: 显著改善了人类对聊天模型的偏好; 对基本模式和聊天模式的多语言支持; 稳定支持32K上下文长度,适用于各种尺寸的模型 不需要trust_r

    2024年02月20日
    浏览(33)
  • NLP(六十三)使用Baichuan-7b模型微调人物关系分类任务

    任务介绍   人物关系分类指的是对文本中的两个人物,在特定的关系列表中,判断他们之间的人物关系。以样本 亲戚 1837年6月20日,威廉四世辞世,他的侄女维多利亚即位。 为例,其中 亲戚 为人物关系, 威廉四世 为实体1, 维多利亚 为实体2。   笔者自己利用业余时

    2024年02月15日
    浏览(39)
  • 【AIGC】baichuan-7B大模型

    百川智能|开源可商用的大规模预训练语言模型baichuan-7B大模型 概述 baichuan-7B 是由百川智能开发的一个开源可商用的大规模预训练语言模型。基于 Transformer 结构,在大约1.2万亿 tokens 上训练的70亿参数模型,支持中英双语,上下文窗口长度为4096。在标准的中文和英文权威 b

    2024年02月09日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包