LLaMA-Factory微调与部署教程:从基础到实战的详细流程

介绍

我将为大家介绍如何使用 llama-factory Lora 微调模型、部署模型、使用python调用API。

前排提示,文末有大模型AGI-CSDN独家资料包哦!

llama-factory 安装

首先建议大家阅读一遍两份不错的文章:

  • 官方readme: https://github.com/hiyouga/LLaMA-Factory/blob/v0.9.1/README_zh.md
  • 官方推荐的知乎教程:https://zhuanlan.zhihu.com/p/695287607
  • 官方文档: https://llamafactory.readthedocs.io/zh-cn/latest/

我这篇博客的与他们的不同在于,我按照我做实验的流程,给大家演示一遍。方便大家一看就懂,心里对大致的流程有个大概。

装包
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git   cd LLaMA-Factory   pip install -e ".[torch,metrics]"   

LLaMA-Factory 默认是从Huggingface 下载模型,建议大家改为从国内下载模型。

如果您在 Hugging Face 模型和数据集的下载中遇到了问题,可以通过下述方法使用魔搭社区。

export USE_MODELSCOPE_HUB=1
Windows 使用set USE_MODELSCOPE_HUB=1
将 model_name_or_path 设置为模型 ID 来加载对应的模型。在魔搭社区查看所有可用的模型,例如 LLM-Research/Meta-Llama-3-8B-Instruct。

您也可以通过下述方法,使用魔乐社区下载数据集和模型。

export USE_OPENMIND_HUB=1
Windows 使用set USE_OPENMIND_HUB=1
将 model_name_or_path 设置为模型 ID 来加载对应的模型。在魔乐社区查看所有可用的模型,例如 TeleAI/TeleChat-7B-pt。

下载模型

我喜欢使用可视化的网站页面下载模型权重。

llamafactory-cli webui   

启动服务之后,进入主机对应的 ip 和端口就可以看到网页。

在 Model name 下拉框中挑选模型,选中之后,再点击下述的加载模型。如果模型权重没有下载,则会进行下载,然后加载进显存中。在下方就会出现对话框就可以与模型进行对话了。

微调模型

数据集

点击 Train 后, 就可以看到当前可用的很多数据集。

在选中数据集后,点击预览数据集,即可看到数据集的样例。如果我们想微调模型,也需要把数据集的样式给整理成上述格式。

点击查看关于数据集的说明:https://github.com/hiyouga/LLaMA-Factory/tree/v0.9.1/data

大家仿照alpaca_zh_demo.json的样式准备好数据集,然后在dataset_info.json完成数据集的注册。

注册数据集, 下图是我在dataset_info.json注册的guihua_ner数据集,然后就可以找到该数据集,并训练模型:

训练模型

可以直接点击可视化界面的 Start 按钮训练模型。也可点击预览命令查看在终端运行的命令。

我一般不使用可视化窗口训练模型。我喜欢直接运行训练模型的命令

llamafactory-cli train \       --stage sft \       --do_train True \       --model_name_or_path qwen/Qwen2.5-7B-Instruct \       --preprocessing_num_workers 16 \       --finetuning_type lora \       --template qwen \       --flash_attn auto \       --dataset_dir data \       --dataset alpaca_zh_demo \       --cutoff_len 2048 \       --learning_rate 5e-05 \       --num_train_epochs 3.0 \       --max_samples 100000 \       --per_device_train_batch_size 2 \       --gradient_accumulation_steps 8 \       --lr_scheduler_type cosine \       --max_grad_norm 1.0 \       --logging_steps 5 \       --save_steps 100 \       --warmup_steps 0 \       --packing False \       --report_to none \       --output_dir saves/Qwen2.5-7B-Instruct/lora/train_2024-11-25-09-56-29 \       --bf16 True \       --plot_loss True \       --ddp_timeout 180000000 \       --optim adamw_torch \       --lora_rank 8 \       --lora_alpha 16 \       --lora_dropout 0 \       --lora_target all   

除了使用上述的命令行方式训练模型外,llama-factory还提供了使用 yaml 文件训练模型的方式。
example文件夹下可看到很多训练和推理的 yaml 文件,针对其中的参数就行修改,即可使用。

我以微调qwen/Qwen2.5-7B-Instruct为例:

qwen2.5-7B-ner.yaml文件内容:

### model   model_name_or_path: qwen/Qwen2.5-7B-Instruct      ### method   stage: sft   do_train: true   finetuning_type: lora   lora_target: all      ### dataset   dataset: guihua_ner   template: qwen   cutoff_len: 2048   max_samples: 1000   overwrite_cache: true   preprocessing_num_workers: 16      ### output   output_dir: saves/qwen2.5-7B/ner_epoch5   logging_steps: 10   save_steps: 500   plot_loss: true   overwrite_output_dir: true      ### train   per_device_train_batch_size: 1   gradient_accumulation_steps: 8   learning_rate: 1.0e-4   num_train_epochs: 5.0   lr_scheduler_type: cosine   warmup_ratio: 0.1   bf16: true   ddp_timeout: 180000000      ### eval   val_size: 0.1   per_device_eval_batch_size: 1   eval_strategy: steps   eval_steps: 500   

在 llamafactory-cli train 后,填入 yaml 文件的路径:

llamafactory-cli train config/qwen2.5-7B-ner.yaml   

然后就会开始训练模型,最终训练完成的模型保存在output_dir: saves/qwen2.5-7B/ner_epoch5

在输出文件夹路径中,可以找到训练过程的损失值变化图片。

微调后的模型推理

在完成模型的微调后,测试一下模型的微调效果。对于微调模型推理,除原始模型和模板外,还需要指定适配器路径 adapter_name_or_path 和微调类型 finetuning_type。

lora_vllm.yaml的文件内容如下:

model_name_or_path: qwen/Qwen2.5-7B-Instruct   adapter_name_or_path: ../saves/qwen2.5-7B/ner_epoch5   template: qwen   finetuning_type: lora   infer_backend: vllm   vllm_enforce_eager: true   

运行下述命令,就可以看到下图的对话窗口:

`llamafactory-cli webchat lora_vllm.yaml` 

根据上图命名实体识别的输出,可以发现微调模型确实有效果。

除了网页聊天的部署之外,还可通过下述多种方式进行部署:

# llamafactory-cli chat xxx.yaml   # llamafactory-cli webchat xxx.yaml   # API_PORT=8000 llamafactory-cli api xxx.yaml   

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
在这里插入图片描述

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

### LLaMA-Factory 的实际应用案例实战教程 LLaMA-Factory 是一个基于 Meta 开发的开源大模型 LLaMA 的工具集,旨在帮助开发者更方便地训练、微调以及部署自己的定制化语言模型。以下是关于其实际应用案例、使用示例和项目经验的具体说明。 #### 1. **安装环境配置** 为了开始使用 LLaMA-Factory,首先需要将其源代码克隆至本地开发环境中。可以通过以下命令完成项目的初始化: ```bash git clone https://github.com/hiyouga/LLaMA-Factory.git [^1] ``` 或者如果只需要最新的版本而不需要完整的提交历史记录,则可以简化操作如下: ```bash git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git [^2] ``` #### 2. **实际应用场景** LLaMA-Factory 可应用于多种场景,包括但不限于以下几个方面: - **对话系统优化** 利用 LLaMA-Factory 提供的功能模块,可以针对特定领域数据(如客服问答或医疗咨询)进行微调,从而提升对话系统的性能[^3]。 - **文本生成任务** 对于新闻摘要生成、创意写作等任务,LLaMA-Factory 支持通过自定义数据集来调整模型的行为模式,使其更加贴合具体需求[^4]。 - **多模态融合研究** 结合视觉或其他感知技术的数据处理能力,探索跨模态学习的可能性,例如图像描述生成等领域中的创新实践[^5]。 #### 3. **使用示例** 下面提供几个具体的例子展示如何利用该框架开展工作: ##### (1) 数据预处理脚本运行 假设已经准备好了原始语料文件 `raw_data.txt` ,那么接下来就可以按照官方文档指导编写相应的 Python 脚本来清洗并转换成适合输入给 Transformer 架构的形式: ```python from llama_factory.data import preprocess if __name__ == "__main__": input_file = "./data/raw_data.txt" output_dir = "./processed/" processor = preprocess.Preprocessor(input_path=input_file, output_folder=output_dir) processor.run() ``` ##### (2) 微调过程管理 当准备好经过加工后的高质量标注样本之后,便能够启动 fine-tuning 流程,在此期间可能涉及到超参数调节等工作项: ```python import torch from transformers import Trainer, TrainingArguments from llama_factory.modeling import CustomLlamaForCausalLM model_name_or_path = "path/to/pretrained_model" train_dataset = ... # 加载训练集合实例对象 eval_dataset = ... # 验证测试子集加载器 training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=8, save_steps=10_000, save_total_limit=2, ) model = CustomLlamaForCausalLM.from_pretrained(model_name_or_path) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset, ) trainer.train() ``` #### 4. **项目实践经验分享** 在实施过程中需要注意一些常见事项以提高效率效果: - 硬件资源规划:由于大规模神经网络计算量巨大,建议提前评估 GPU 显存容量是否充足,并合理分配批次大小(batch size)[^6]; - 数据质量控制:确保所使用的素材具备较高的代表性且无明显噪声干扰现象存在,这样才能获得更好的泛化表现水平[^7]; - 版本迭代跟踪:采用 Git 或其他类似的版本控制系统记录每一次改动细节以便后续回溯分析查找问题根源所在位置[^8]; ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值