LLM-2:LLama-factory windows部署及在qwen2-1.5B上的使用

1、LLama-factory 

LLama-factory的网站:https://github.com/hiyouga/LLaMA-Factory

LLama-factory的优势是将主流的微调方法、开源的大模型进行整合,形成一个功能丰富,便于操作的框架。

以Qwen2-1.5Bt 模型 和 windows + RTX 4060ti 8GB环境,LoRA+sft训练阶段为例子

2、windows本地部署

下载https://github.com/hiyouga/LLaMA-Factory网站内容,最好使用git安装,高校快速。

下载后在CMD中进行环境配置:

1、创建新环境

conda create -n llama_factory python=3.11

2、通过cd命令进入到下载页面 

cd C:\Users\Administrator\Desktop\llm-factory

 3、激活anconda 环境,安装必要的程序包(最后一个conda安装是torch,可以根据自己的cuda版本进行安装)

pip install -e ".[torch,metrics]"
pip install -r requirements.txt  
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

4、运行webui.py程序,生成UI界面。

Set CUDA_VISIBLE_DEVICES=0
Set GRADIO_SHARE=1
python src/webui.py

当出现 When localhost is not accessible, a shareable link must be created. Please set share=True or check your proxy settings to allow access to localhost.时运行下面代码(只能单次使用,没使用一回就要设置一遍。有知道可以永久使用的可以在评论里留言)

set no_proxy=localhost,127.0.0.1,::1

 3、LLama-factory UI界面使用(训练阶段)

下图是LLama-factory的UI界面默认的端口号是7860

语言可以选择中文或则英文,模型可以根据自己的需要进行选择(最好使用本地下载的模型文件),在模型路径中加载自己的模型文件名。

微调方法可以选择lora\full等,适配器路径可以是微调后生成的adapter_model.safetensors文件。

高级设置一般选择默认就可以,如果有特殊要求可以去尝试。

这部分图片显示了train(模型训练)、predict/evaluate(模型预测和评估)、chat(模型对话)、export(模型合并):

train(模型训练):

  • 学习率调节器:有以下选项可以选择,这里我们选择默认值cosine。 linear(线性): 随着训练的进行,学习率将以线性方式减少。 cosine(余弦): 这是根据余弦函数来减少学习率的。在训练开始时,学习率较高,然后逐渐降低并在训练结束时达到最低值。 cosine_with_restarts(带重启的余弦): 和余弦策略类似,但是在一段时间后会重新启动学习率,并多次这样做。 polynomial(多项式): 学习率会根据一个多项式函数来减少,可以设定多项式的次数。 constant(常数): 学习率始终保持不变。 constant_with_warmup(带预热的常数): 开始时,学习率会慢慢上升到一个固定值,然后保持这个值。 inverse_sqrt(反平方根): 学习率会随着训练的进行按照反平方根的方式减少。 reduce_lr_on_plateau(在平台上减少学习率): 当模型的进展停滞时(例如,验证误差不再下降),学习率会自动减少。
  • 梯度累积和最大梯度范数:这两个参数通常可以一起使用,以保证在微调大型语言模型时,能够有效地处理大规模数据,同时保证模型训练的稳定性。梯度累积允许在有限的硬件资源上处理更大的数据集,而最大梯度范数则可以防止梯度爆炸,保证模型训练的稳定性,这里我们使用默认值即可。

剩下参数选择默认,点击开始就可以训练了,会在输出目录中生成,lora微调的模型文件。

如果不想使用UI界面运行:可以点击预览命令,在对用的的cmd命令行中运行

--stage sft:指定训练阶段为指令微调训练
--do_train:指定是训练任务
--model_name_or_path:本地模型的文件路径或 Hugging Face 的模型标识符
--dataset:指定数据集
--finetuning_type lora:指定微调方法为lora
--output_dir: 保存训练结果的路径
--overwrite_cache: 覆盖缓存的训练集和评估集
--per_device_train_batch_size 2: 每个gpu的批处理大小,训练参数
--gradient_accumulation_steps 8:梯度累计的步数,训练参数
--lr_scheduler_type cosine:学习率调度器,训练参数
--save_steps 1000:每两次断点保存间的更新步数,训练参数
--learning_rate 5e-5:学习率,adamW优化器的默认值为5e-5,训练参数
--num_train_epochs 2.0:需要执行的训练轮数,训练参数
--plot_loss:是否保存训练损失曲线
--fp16:使用fp16混合精度训练,此参数后续详解

 3、LLama-factory UI界面使用(chat阶段)

model path写预先下载的llm模型,checkpoint path写微调预训练生成的文件路径(微调生成的文件默认存在LLaMA-Factory的save文件夹下)。

4、LLama-factory UI界面使用(export阶段)

model path和checkpoint path与(chat阶段一致),只需要添加到处路径Export dir

### 可能的原因分析 进程被 `kill` 的原因可能涉及多种因素,以下是常见的几种可能性: 1. **内存不足** 如果服务器的物理内存不足以支持模型加载和训练过程中的计算需求,则操作系统可能会触发 OOM(Out of Memory),从而杀死占用大量资源的进程[^1]。 2. **显存溢出** 对于 GPU 训练场景,如果分配给模型的显存超出硬件能力范围,也会导致训练中断并终止进程。这通常发生在未优化批处理大小或梯度累积设置的情况下[^2]。 3. **配置错误** 配置文件中某些参数设定不当可能导致异常退出。例如,在服务启动脚本 `/etc/systemd/system/ollama.service` 中定义环境变量时遗漏必要字段或者路径不正确会引发问题。 4. **数据集过大** 当指定验证集比例过小时 (`--val_size 0.01`) ,虽然可以减少部分开销,但如果整体数据量依然庞大,则仍有可能因为读取操作耗尽系统资源而失败。 5. **API接口冲突** 若存在多个程序尝试访问同一端口 (如 OPENAI_API_HOST 设置为本地地址),则会产生竞争条件进而影响稳定性[^3]。 --- ### 解决方案建议 针对上述提到的各种潜在诱因,可采取如下措施来解决问题: #### 调整资源配置 - 检查当前机器可用 RAM 和 Swap 大小,并适当增加虚拟交换空间以缓解压力; - 使用 nvidia-smi 工具监控 GPU 利用率与剩余显存量,合理调整 batch size 参数以及 enable gradient checkpointing 技术降低显卡负担; ```bash nvidia-smi ``` #### 修改服务单元配置 确认 ollama.service 文件内的 Environment 行是否符合实际部署情况,特别是关于主机监听 IP 地址及自定义模型存储目录的部分应准确无误: ```ini [Service] Environment="OLLAMA_HOST=0.0.0.0:7861" Environment="OLLAMA_MODELS=/www/algorithm/LLM_model/models" ``` 重启对应的服务使其生效: ```bash sudo systemctl daemon-reload sudo systemctl restart ollama.service ``` #### 改善微调策略 参照 LLaMA Factory 文档说明引入更多超参控制选项以便更好地适配目标设备性能特征 : ```python from transformers import TrainingArguments, Trainer training_args = TrainingArguments( output_dir="./results", evaluation_strategy="epoch", # 或者 steps 根据具体需求决定评估频率 per_device_train_batch_size=8, learning_rate=5e-5, weight_decay=0.01, ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=val_dataset, ) ``` 另外还可以考虑通过减小区块长度等方式进一步削减消耗。 #### 排除网络干扰 确保没有其他应用抢占所设 API URL 所指向的位置以免造成不必要的通信障碍: ```env OPENAI_API_HOST=http://localhost:11434 ``` 最后记得测试连接状态正常与否后再继续后续流程。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值