项目介绍:chatglm_finetuning
chatglm_finetuning 项目旨在为 ChatGLM 模型提供各种微调和优化支持,通过简化和改进训练流程,以及支持多种训练框架和优化方法,提升模型效率与性能。此项目适合那些希望通过微调增加ChatGLM模型应用灵活性和功能性的开发者和研究人员。
项目发展历程
项目自发布以来,不断更新,添加了许多新特性和优化:
- 多种训练优化器支持:至 2023 年 10 月,项目已经支持 accelerator 和 colossalai 等多种训练器。
- 模型量化与推理优化:解除 ChatGLM-6B 在 INT4 模式下的训练限制,允许更轻量级的推理。
- 多进程数据处理:通过多进程优化数据处理流程,适应大数据集的微调需求。
- 支持多种微调策略:提供包括 LoRA、AdaLoRA、DeepSpeed 和 P-Tuning v2 等在内的不同微调方式。
安装方式
用户可通过以下命令来安装项目所需的全部依赖:
pip install -U -r requirements.txt
如果遇到安装问题,还可以切换至官方源进行安装。
模型权重
项目支持 ChatGLM 多个版本的模型微调,包括:
- ChatGLM-6B
- ChatGLM-6B-INT8
- ChatGLM-6B-INT4
用户可以根据需求选择使用不同版本的预训练模型来进行微调。
数据样例
项目支持灵活的数据输入格式,以 JSON 的方式呈现问答对。例如:
{"id": 1, "paragraph": [{"q": "从南京到上海的路线", "a": ["路线如下:..."]}]}
推理配置
项目提供不同量化级别的推理选项,以便于根据计算资源进行选择:
- FP16(无量化):需至少 13 GB 显存
- INT8:需至少 10 GB 显存
- INT4:需至少 6 GB 显存
使用配置文件 infer.py
, infer_finetuning.py
, 或 infer_lora_finetuning.py
可以分别对预训练模型和微调模型进行推理。
训练指南
用户可以利用以下命令来进行各种微调任务:
# 全参数训练
bash train_full.sh -m train
# LoRA 微调
bash train_lora.sh -m train
# P-Tuning v2 微调
bash train_ptv2.sh -m train
脚本提供了多种训练参数选项,可以根据数据量和任务进行适当调整。
友情链接
项目提供了多种相关项目链接, 如 pytorch-task-example、moss_finetuning 等,供用户参考和学习。
总结
chatglm_finetuning 项目提供了高效且灵活的微调方案,广泛适用于多种场景和需求,是研究和应用 ChatGLM 模型的优秀工具。项目致力于通过不断优化和功能扩展,为用户提供最佳的微调体验。