Python - 深度学习系列30 - 使用LLaMA-Factory微调模型

本文介绍了LLaMA-Factory,一个由SeamLessAI开源的微调框架,它简化了大语言模型的定制开发过程。作者分享了在仙宫云部署、拉取模型、配置和微调ChatGLM3-6b-base的步骤,以及微调过程中资源使用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

最实用的一种利用大语言模型的方式是进行微调。预训练模型与我们的使用场景一定会存在一些差异,而我们又不可能重头训练。

微调的原理并不复杂,载入模型,灌新的数据,然后运行再训练,保留checkpoints。但是不同项目的代码真的不太一样,每一个都要单独去看的话比较费神。

本篇简单讨论一下用LLaMA-Factory微调模型的体验。

内容

1 LLaMA-Factory

LLaMA-Factory(https://github.com/hiyouga/LLaMA-Factory)是零隙智能(SeamLessAI)开源的低代码大模型训练框架,它集成了业界最广泛使用的微调方法和优化技术,并支持业界众多的开源模型的微调和二次训练,开发者可以使用私域数据、基于有限算力完成领域大模型的定制开发。LLaMA-Factory还为开发者提供了可视化训练、推理平台,一键配置模型训练,实现零代码微调LLM。自2023年5月开源以来,成为社区内最受欢迎的微调框架,github星数已超9K。

github项目地址

从目前的开源三大系(LLaMA, ChatGLM, BLOOM )来看,数量上的确还是Lamma系的多。

在这里插入图片描述

2 部署环境

用仙宫云部署,价格比较实惠,且环境比较新。

在这里插入图片描述
注意,云盘默认挂在 /root/cloud下,所以文件可以存在这里。

3 拉取项目并启动服务

由于环境基本已经适配好的,安装过程也很快

git clone https://github.com/hiyouga/LLaMA-Factory.git

cd LLaMA-Factory
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

然后执行web前端的启动命令

python3 ./scr/train_web.py

就会唤起一个前端(因为服务已经关掉了,忘了截图)

4 拉取模型文件

我使用chatglm3-6b-base进行测试。

由于hugging face有墙, modelscope就是比较好的选择。

两种方式:

包方式:事实证明不是那么好,模型包存放的位置还要靠grep找出来

pip install modelscope
from modelscope import snapshot_download
model_dir = snapshot_download("ZhipuAI/chatglm3-6b", revision = "v1.0.0")

git方式

git lfs install
git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

5 在web端配置

本次是连通性测试,我就修改了一下模型所在的文件夹位置,然后选择lora,别的都没改,就开始跑了。

整个微调的时间大约在4小时,期间显存慢慢上升到21G,总体上应该是可用的。

在这里插入图片描述

今天主要就是调通,后续再更新。

### 关于 LLaMA-Factory 微调框架中的预训练模型报错解决方案 在使用 LLaMA-Factory 进行微调的过程中,如果遇到与预训练模型相关的报错问题,可以考虑以下几个方面来排查和解决问题。 #### 1. 检查模型文件完整性 LLaMA-Factory 的运行依赖于完整的模型权重文件。如果选择了具有多个分片的大型模型(如引用提到的32B模型),需确认所有必要的模型文件均已下载并放置在同一目录下[^2]。缺失任何一个文件都可能导致加载失败或程序崩溃。 #### 2. 确认硬件资源是否充足 对于较大的预训练模型(例如超过70亿参数的大规模模型),显存需求非常高。如果设备上的 GPU 显存不足,则会触发 CUDA out-of-memory 错误或其他类似的内存溢出异常。建议优先尝试较小尺寸的模型,比如 Qwen2.5-0.5B-Instruct 模型,这类轻量级模型对计算资源的要求较低,适合初学者或者低配置环境下的实验[^3]。 #### 3. 更新依赖库版本 有时错误可能源于所使用Python 库版本不兼容。确保安装的是最新稳定版 Transformers 和 Accelerate 等核心组件,并验证 PyTorch 或 TensorFlow 是否匹配当前系统的驱动架构。可以通过命令 `pip list` 查看已安装包及其对应版本号;必要时重新创建虚拟环境以隔离潜在冲突因素。 #### 4. 修改配置参数适配目标平台特性 部分特定类型的错误可能是由于默认设置不适合实际部署场景引起。调整 batch size 参数大小、启用 gradient checkpointing 技术减少中间状态保存开销等方式有助于缓解某些常见性能瓶颈现象。此外,在初始化阶段指定 dtype 类型为 float16 能进一步降低存储消耗同时维持较高精度表现水平。 以下是针对上述情况的一个简单代码片段展示如何自定义加载过程: ```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch device = 'cuda' if torch.cuda.is_available() else 'cpu' model_name_or_path = "path_to_your_model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained( model_name_or_path, device_map="auto", load_in_8bit=True, # 使用 int8 加载减轻负担 torch_dtype=torch.float16 # 半精度浮点数加速推理 ).to(device) text = "your input text here" input_ids = tokenizer(text, return_tensors="pt").input_ids.to(device) outputs = model.generate(input_ids=input_ids, max_new_tokens=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` 以上脚本展示了当面临有限GPU资源状况下的一种优化策略——采用混合精度运算以及量化技术手段有效控制整体耗用量。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值