|
在当下流行的各种大模型工具中,Llama-Factory是全球开发者常用的一套工具集,它基于Transformer架构,为我们提供了一套简单、快速而又高效的大模型定制化训练与部署工具,并且它提供了模块化、可扩展和流程化的框架,支持多种主流的大语言模型(如 LLaMA、ChatGLM、Qwen 等),一站式地集成了数据预处理、训练、微调、评估和推理等多种功能。本篇我们一起来看看Llama-Factory能为我们带来哪些便利。
1. 多模型支持
2. 高效的微调方法
3. 多模态训练支持
4. 数据预处理与增强
5. 可视化与监控
6. 一键部署与推理
LLaMA-Factory 的整体架构围绕以下几个核心模块展开: 1. 模型支持框架(Model Support) 支持 Hugging Face Transformers 中的主流大语言模型:
这些模型可以通过 Hugging Face 的 AutoModelForCausalLM 和 AutoTokenizer 加载,兼容性强。
2. 微调方法(Fine-tuning Methods) 通过集成 PEFT(Parameter-Efficient Fine-Tuning)库,支持主流的参数高效微调策略:
用户可以选择不同的微调方法来根据资源和需求进行训练。
3. 训练器模块(Trainer) 基于 Hugging Face 的 Trainer 类封装,增加对 PEFT 的支持。 支持: 多卡训练(DeepSpeed、FSDP) 混合精度(fp16/bf16) Gradient Accumulation Checkpoint 保存与恢复
4. 数据处理模块(Data Preprocessing) 支持多种数据格式:
5. 推理模块(Inference / Serving) 提供简单的推理脚本 `infer.py`,支持: 单轮 / 多轮对话 Web UI(基于 Gradio) CLI 推理 支持加载微调后的模型进行评估或部署。
6. 评估模块(Evaluation) 支持自动评估方法:
7. 部署模块(Serving) 可选的部署方式:
8. 配置与脚本(Scripts & Configs) 提供丰富的训练、推理、部署脚本,如:
我们一起来看看如何用Llama-Factory微调llama3大模型,使用“弱智吧 ruozhiba”数据集。相比某些微调工具,LLaMA-Factory 整个操作过程还是比较简单的。 1. 环境准备 (1)克隆 LLaMA-Factory 仓库 gitclonehttps://github.com/hiyouga/LLaMA-Factory.gitcdLLaMA-Factorypipinstall-rrequirements.txt (2) 确保在以下环境中进行微调:
2. 模型与数据集下载 我们可以在Hugging Face或魔塔社区,下载llama3模型和ruozhiba数据集,具体方法多种多样,这里就不做详细介绍了。下图是我下载的模型文件与数据集文件。
3. 微调配置文件(`scripts/llama3/finetune_ruozhiba.sh`) 创建一个 shell 脚本如下: #!/bin/bash
CUDA_VISIBLE_DEVICES=0accelerate launch src/train_bash.py \--stage sft \--model_name_or_path llama_models/llama-3-8b \--do_train \--dataset ruozhiba \--dataset_dir data \--template llama3 \--finetuning_type lora \--output_dir output/llama3-ruozhiba-lora \--overwrite_cache \--per_device_train_batch_size 2 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--logging_steps 10 \--save_steps 500 \--learning_rate 5e-5 \--num_train_epochs 3 \--plot_loss \--fp16
参数说明: stage sft:表示进行 SFT 微调 model_name_or_path:预训练模型路径 dataset ruozhiba:数据集名称(自动找 `ruozhiba.json` 文件) template llama3:使用 llama3 prompt 模板 finetuning_type lora:使用 LoRA 微调方式(节省显存) output_dir:输出模型路径 fp16:使用半精度训练(节省显存)
4. 开始训练 bashscripts/llama3/finetune_ruozhiba.sh
训练完成后,输出目录为: output/llama3-ruozhiba-lora/├──adapter_config.json├──adapter_model.bin├──tokenizer.model└──...
5. 推理测试(inference) 我们需要使用 `src/api_demo.py` 启动一个测试接口:
pythonsrc/api_demo.py\--model_name_or_pathllama_models/llama-3-8b\--templatellama3\--finetuning_typelora\--adapter_name_or_pathoutput/llama3-ruozhiba-lora |