当前位置: 首页 > article >正文

Win10微调大语言模型ChatGLM2-6B

在《Win10本地部署大语言模型ChatGLM2-6B-CSDN博客》基础上进行,官方文档在这里,参考了这篇文章

首先确保ChatGLM2-6B下的有ptuning

 AdvertiseGen下载地址1,地址2,文件中数据留几行

模型文件下载地址 (注意:ChatGLM2-6B对话用到的的模型文件不能简单的用到这里,bin文件可以复用,但其他文件一定要重新下载,否则要报一些错)

anaconda prompt中运行,进行虚拟环境

cd /d D:\openai.wiki\ChatGLM2-6B
conda activate D:\openai.wiki\ChatGLM2-6B\ENV

运行微调除 ChatGLM2-6B 的依赖之外,还需要安装以下依赖

pip install rouge_chinese nltk jieba datasets

先了解一下train.sh(仅在Linux中使用)里面各行的意义

PRE_SEQ_LEN=128 #  soft prompt 长度
LR=2e-2     # 训练学习率
NUM_GPUS=2  # GPU卡的数量

torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS main.py \
    --do_train \   # 执行训练功能,还可以执行评估功能
    --train_file AdvertiseGen/train.json \   # 训练文件目录
    --validation_file AdvertiseGen/fval.json \   # 验证文件目录
    --prompt_column content \       # 训练集中prompt提示名称,对应训练文件,测试文件的"content"
    --response_column summary \      # 训练集中答案名称,对应训练文件,测试文件的"summary"
    --overwrite_cache \              # 缓存,重复训练一次的时候可删除
    --model_name_or_path THUDM/chatglm-6b \  # 加载模型文件目录,也可修改为本地模型的路径
    --output_dir output/adgen-chatglm-6b-pt-$PRE_SEQ_LEN-$LR \    # 保存训练模型文件目录
    --overwrite_output_dir \     # 覆盖训练文件目录
    --max_source_length 64 \     # 最大输入文本的长度
    --max_target_length 128 \
    --per_device_train_batch_size 1 \    # batch_size 训练批次根据显存调节
    --per_device_eval_batch_size 1 \     # 验证批次
    --gradient_accumulation_steps 16 \   # 梯度累加的步数
    --predict_with_generate \
    --max_steps 3000 \    # 最大训练模型的步数
    --logging_steps 10 \  # 多少步打印日志一次
    --save_steps 1000 \    # 多少步保存模型一次
    --learning_rate $LR \  # 学习率
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4   # 量化,也可修改为int8

 Windows下用以下的train.bat

因我的电脑显存只有8G,故将per_device_train_batch_size改为8

去掉--quantization_bit 4

set PRE_SEQ_LEN=128
set LR=1e-4

python main.py ^
    --do_train ^
    --train_file AdvertiseGen/train.json ^
    --validation_file AdvertiseGen/dev.json ^
    --preprocessing_num_workers 10 ^
    --prompt_column content ^
    --response_column summary ^
    --overwrite_cache ^
    --model_name_or_path D:\\openai.wiki\\ChatGLM2-6B\\ptuning\\THUDM\\chatglm2-6b ^
    --output_dir D:/openai.wiki/ChatGLM2-6B/ptuning/output ^
    --overwrite_output_dir ^
    --max_source_length 64 ^
    --max_target_length 128 ^
    --per_device_train_batch_size 8 ^# batch_size 训练批次根据显存调节
    --per_device_eval_batch_size 1 ^
    --gradient_accumulation_steps 16 ^
    --predict_with_generate ^
    --max_steps 3000 ^
    --logging_steps 10 ^
    --save_steps 1000 ^
    --learning_rate %LR% ^
    --pre_seq_len %PRE_SEQ_LEN% 

进入ptuning文件夹

cd ptuning

运行train.bat,即可开始训练(有问题的话继续往后看)

train.bat

 可能遇到的几个问题

  • 问题一

TypeError: JsonConfig.init() got an unexpected keyword argument 'use_auth_token’

解决方式

pip uninstall datasets
pip install datasets==2.21.0
  • 问题二

name ‘round_up‘ is not defined

解决方式

将train.bat中的–quantization_bit 4删除

或者pip install cpm_kernels

  • 问题三

AttributeError: ‘ChatGLMModel‘ object has no attribute ‘prefix_encoder‘

解决方式

https://huggingface.co/THUDM/chatglm2-6b/tree/main

下载除bin文件以外的最新文件


http://www.kler.cn/a/500418.html

相关文章:

  • java项目之房屋租赁系统源码(springboot+mysql+vue)
  • 如何看待Akamai 退出中国市场进行转型?
  • XS5037C一款应用于专业安防摄像机的图像信号处理芯片,支持MIPI和 DVP 接口,内置高性能ISP处理器,支持3D降噪和数字宽动态
  • 【Oracle篇】深入了解执行计划中的访问路径(含表级别、B树索引、位图索引、簇表四大类访问路径)
  • android四大组件之一——Service
  • 【算法与数据结构】—— 回文问题
  • 测试ip端口-telnet开启与使用
  • AIDD-人工智能药物设计-用于科学药物发现的分子视频衍生基础模型
  • AF3 MSAWeightedAveragingNaive类解读
  • 培训机构Day25
  • linux下实现U盘和sd卡的自动挂载
  • 【黑马程序员三国疫情折线图——json+pyechart=数据可视化】
  • 【人工智能】用Python进行对象检测:从OpenCV到YOLO的全面指南
  • excel VBA 基础教程
  • 工业视觉2-相机选型
  • Group3r:一款针对活动目录组策略安全的漏洞检测工具
  • 202507读书笔记|《飞花令·河》——微微风簇浪,散做满河星,飞流直下三千尺,疑是银河落九天
  • Linux系统镜像构建(1):uboot编译烧录与移植
  • 常用的排序算法(Java版)
  • 有收到腾讯委托律师事务所向AppStore投诉带有【水印相机】主标题名称App的开发者吗
  • uniapp 的uni.getRecorderManager() 录音功能小记
  • 【论文投稿】探索JavaScript前端开发:开启交互之门的神奇钥匙(一)
  • Git的学习和常见问题
  • 【每日学点鸿蒙知识】包体积优化、WebView下载PDF等
  • Jaeger UI使用、采集应用API排除特定路径
  • [人工智能自学] Python包学习-Matplotlib