[FT]chatglm2微调

2024-02-28 23:28
文章标签 微调 chatglm2 ft

本文主要是介绍[FT]chatglm2微调,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.准备工作

  • 显卡一张:A卡,H卡都可以,微调需要1-2张,ptunig需要一张,大概显存得30~40G吧;全量微调需要两张卡,总显存占用100G以上
  • 环境安装:
    • 尽量在虚拟环境安装:参见,https://blog.csdn.net/u010212101/article/details/103351853
    • 环境安装参见:https://github.com/THUDM/ChatGLM2-6B/tree/main/ptuning

2.如何微调:

参见:https://github.com/THUDM/ChatGLM2-6B/tree/main/ptuning

2.0.训练数据格式,整理成如下格式,格式1和2都行:

格式1:

{"content":"xxx","summary":"xxx"}
{"content":"xxx","summary":"xxx"}
... ...

格式2:

[
{"content":"xxx","summary":"xxx"}
{"content":"xxx","summary":"xxx"}
... ...]

2.1.ptuning微调:

参见:https://github.com/THUDM/ChatGLM2-6B/blob/main/ptuning/train.sh

PRE_SEQ_LEN=128
LR=2e-2
NUM_GPUS=1torchrun --standalone --nnodes=1 --nproc-per-node=$NUM_GPUS 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 THUDM/chatglm2-6b \--output_dir output/adgen-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \--overwrite_output_dir \--max_source_length 64 \--max_target_length 128 \--per_device_train_batch_size 1 \--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

注意点:

  • 将模型下载到本地,可以从modelscope或者huggingface上下载,建议直接modelscope下载,huggingface下载慢/还得科学上网,麻烦。
    • https://modelscope.cn/models/ZhipuAI/chatglm2-6b-32k/summary
  • 将上述model_name_or_path 的路径改为你本地模型路径
  • 资源紧张,下述一些参数需要调整:
  • 调节batchsize设置: per_device_train_batch_sizeper_device_eval_batch_sizegradient_accumulation_steps=batchsize,这三项酌情调整
  • 训练步数:
    • max_steps=5000步
  • max_source_length:输入的最大长度
  • max_target_length:输出的最大长度

2.2.全量微调

  • 全量微调速度比较慢,建议使用deepspeed,直接pip安装即可
  • 全量微调,几百上千条数据的情况,显存得100G以上,也即需要至少2张A800卡

deepspeed 全量微调chatglm2命令如下:

  • 参见:https://github.com/THUDM/ChatGLM2-6B/blob/main/ptuning/ds_train_finetune.sh
LR=1e-4MASTER_PORT=$(shuf -n 1 -i 10000-65535)deepspeed --num_gpus=4 --master_port $MASTER_PORT main.py \--deepspeed deepspeed.json \--do_train \--train_file AdvertiseGen/train.json \--test_file AdvertiseGen/dev.json \--prompt_column content \--response_column summary \--overwrite_cache \--model_name_or_path THUDM/chatglm2-6b \--output_dir ./output/adgen-chatglm2-6b-ft-$LR \--overwrite_output_dir \--max_source_length 64 \--max_target_length 64 \--per_device_train_batch_size 4 \--per_device_eval_batch_size 1 \--gradient_accumulation_steps 1 \--predict_with_generate \--max_steps 5000 \--logging_steps 10 \--save_steps 1000 \--learning_rate $LR \--fp16
  • 注意点和上述基本一致,至于deepspeed高级配置如何做,这里挖个坑,后续佛系更新

2.3.其他微调,参见官方教程

https://github.com/THUDM/ChatGLM2-6B/tree/main/ptuning

3.推理加速

  • 按照fastllm,速度提升3成~4成吧
  • 教程参见:https://github.com/ztxz16/fastllm

这篇关于[FT]chatglm2微调的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/756948

相关文章

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

可选择的反思指令微调

论文:https://arxiv.org/pdf/2402.10110代码:GitHub - tianyi-lab/Reflection_Tuning: [ACL'24] Selective Reflection-Tuning: Student-Selected Data Recycling for LLM Instruction-Tuning机构:马里兰大学, Adobe Research领

文本分类场景下微调BERT

How to Fine-Tune BERT for Text Classification 论文《How to Fine-Tune BERT for Text Classification?》是2019年发表的一篇论文。这篇文章做了一些实验来分析了如何在文本分类场景下微调BERT,是后面网上讨论如何微调BERT时经常提到的论文。 结论与思路 先来看一下论文的实验结论: BERT模型上面的

从零开始构建大语言模型并进行微调:全面指南

要从0开始搭建并训练一个大语言模型(LLM),涉及到多个步骤和资源,包括理论理解、工具使用、数据准备、模型训练与微调。以下是一个从基础到应用的指南,帮助你理解并逐步实现这一目标。 1. 理解基础概念 在开始搭建大语言模型之前,了解以下基本概念至关重要: 生成式AI:通过大语言模型生成自然语言文本,例如GPT、BERT等。机器学习:通过数据训练模型,使其具备从数据中学习规律的能力。深度学习:机

什么是GPT-3的自回归架构?为什么GPT-3无需梯度更新和微调

文章目录 知识回顾GPT-3的自回归架构何为自回归架构为什么架构会影响任务表现自回归架构的局限性与双向模型的对比小结 为何无需梯度更新和微调为什么不需要怎么做到不需要 🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习 🦅个人主页:@逐梦苍穹 📕所属专栏:人工智能 🌻gitee地址:x

R-Adapter:零样本模型微调新突破,提升鲁棒性与泛化能力 | ECCV 2024

大规模图像-文本预训练模型实现了零样本分类,并在不同数据分布下提供了一致的准确性。然而,这些模型在下游任务中通常需要微调优化,这会降低对于超出分布范围的数据的泛化能力,并需要大量的计算资源。论文提出新颖的Robust Adapter(R-Adapter),可以在微调零样本模型用于下游任务的同时解决这两个问题。该方法将轻量级模块集成到预训练模型中,并采用新颖的自我集成技术以提高超出分布范围的鲁棒性

欺诈文本分类检测(十一):LLamaFactory多卡微调

1. 引言 前文训练时都做了一定的编码工作,其实有一些框架可以支持我们零代码微调,LLama-Factory就是其中一个。这是一个专门针对大语言模型的微调和训练平台,有如下特性: 支持常见的模型种类:LLaMA、Mixtral-MoE、Qwen、Baichuan、ChatGLM等等。支持单GPU和多GPU训练。支持全参微调、Lora微调、QLora微调。 …… 还有很多优秀的特性,详细参考

大模型微调训练营毕业总结

我目前在一家零售公司从事大数据架构方面的工作。 之所以选择参加AI大模型微调训练营,主要是考虑到当前无论是大数据这条技术赛道,还是个人职业发展都处在平台期,短期内看不到突破点。所以想看看在大模型这个技术领域有没有可能有所突破。大数据经过多年的发展,在理论和技术层面都已经到达了一个比较成熟的高度,用户使用也属于普惠期。不仅仅有支持度良好的商业化的产品,而且开源系统也能满足用户的基本使用。另外经过这

flux 文生图大模型 自有数据集 lora微调训练案例

参考: https://github.com/ostris/ai-toolkit 目前 Flux 出现了 3 个训练工具 SimpleTuner https://github.com/bghira/SimpleTuner X-LABS 的https://github.com/XLabs-AI/x-flux ai-toolkit https://github.com/ostris/ai-tool

欺诈文本分类微调(十):QLora量化微调

1. 引言 前文微调方法概览总结了微调的各种方法,并且在更前面两篇文章Lora单卡训练 和 lora单卡二次调优中已经尝试过用Lora进行微调,本文出于好奇准备尝试下用QLora进行微调的效果。 QLoRA是一种新的微调大型语言模型(LLM)的方法,它的特点是能在节省内存的同时保持推理性能。它的出现是为了应对大型模型微调时内存需求大,成本昂贵的问题。 工作原理:首先将LLM进行4位量化,从而