AI大模型入门到精通:LLaMA-Factory大模型微调,零基础小白收藏这一篇就够了!!
引言
开源大模型如LLaMA,Qwen,Baichuan等主要都是使用通用数据进行训练而来,其对于不同下游的使用场景和垂直领域的效果有待进一步提升,衍生出了微调训练相关的需求,包含预训练(pt),指令微调(sft),基于人工反馈的对齐(rlhf) 等,以提高其在特定领域的性能。
但大模型训练对于显存和算力的要求较高,同时也需要下游开发者对大模型本身的技术有一定了解,具有一定的门槛。
LLaMA-Factory 作为一个高效、易用的微调工具,为广大开发者提供了极大的便利。适配市场主流开源模型,形成一个功能丰富,适配性好的训练框架。项目提供了多个高层次抽象的调用接口,包含多阶段训练,推理测试,benchmark评测,API Server等,使开发者开箱即用。
本次将详细介绍如何使用LLaMA-Factory从零开始微调大模型,帮助大家快速掌握这一技能。
什么是模型微调?
在深度学习领域,模型微调通常指的是在预训练模型的基础上进行的进一步训练。
预训练模型(基座模型)是在大量数据上训练得到的,它已经学习到了语言的基本规律和丰富的特征表示。然而,这些模型可能并不直接适用于特定的任务或领域,因为它们可能缺乏对特定领域知识的理解和适应性。
模型微调通过在特定任务的数据集上继续对预训练模型(基座模型)进行训练,使得模型能够学习到与任务相关的特定特征和知识。这个过程通常涉及到模型权重的微幅调整,而不是从头开始训练一个全新的模型。
微调的过程
微调过程主要包括以下几个步骤:
- 数据准备:收集和准备特定任务的数据集。
- 模型选择:选择一个预训练模型作为基座模型。
- 迁移学习:在新数据集上继续训练模型,同时保留预训练模型的知识。
- 参数调整:根据需要调整模型的参数,如学习率、批大小等。
- 模型评估:在验证集上评估模型的性能,并根据反馈进行调整;
微调的优势
微调技术带来了多方面的优势:
资源效率:相比于从头开始训练模型,微调可以显著减少所需的数据量和计算资源。
快速部署:微调可以快速适应新任务,加速模型的部署过程。
性能提升:针对特定任务的微调可以提高模型的准确性和鲁棒性。
领域适应性:可以使得预训练模型在这些任务上取得更好的性能,更好地满足实际应用的需求。
LLamA-Factory
GitHub项目地址:
LLaMA-Factory/data/dpo_en_demo.json at main · hiyouga/LLaMA-Factory · GitHub
项目特色
- 多种模型:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Qwen2-VL、DeepSeek、Yi、Gemma、ChatGLM、Phi 等等。
- 集成方法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
- 多种精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
- 先进算法:GaLore、BAdam、APOLLO、Adam-mini、Muon、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA。
- 实用技巧:FlashAttention-2、Unsloth、Liger Kernel、RoPE scaling、NEFTune 和 rsLoRA。
- 广泛任务:多轮对话、工具调用、图像理解、视觉定位、视频识别和语音理解等等。
- 实验监控:LlamaBoard、TensorBoard、Wandb、MLflow、SwanLab 等等。
- 极速推理:基于 vLLM 或 SGLang 的 OpenAI 风格 API、浏览器界面和命令行接口。
支持模型
安装&数据准备
参考下一篇文章:LLaMA Factory 安装 & 数据准备
微调实践
启动web UI
export USE_MODELSCOPE_HUB=1 && llamafactory-cli webui
启动一个本地Web服务器,可以通过访问http://0.0.0.0.0.0.09:7860 来使用WebUI。
如果配置了:USE_MODELSCOPE_HUB=1, 默认从modelscope上去下载模型,不写的话就是从hugging face下载;
选择模型
deepseek-ai/DeepSeek-R1-Distill-Qwen-7B · Hugging Face
下载模型方法
-
使用Web UI 默认下载
直接选择模型,不修改模型路径,点击加载模型
ll ~/.cache/huggingface/hub drwxr-xr-x 6 root root 4.0K May 14 11:58 models--deepseek-ai--DeepSeek-R1-Distill-Qwen-7B-rw-r--r-- 1 root root 1 Feb 14 15:49 version_diffusers_cache.txt-rw-r--r-- 1 root root 1 Feb 14 12:05 version.txt
默认路径 ~/.cache/huggingface/hub
进入chat 验证一下
- 使用 Hugging Face CLI 下载模型到指定路径
huggingface-cli download model_name --cache-dir /path/to/your/directoryhuggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --cache-dir /home/maoyaozong/LLaMA-Factory-Model
deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B · Hugging Face
自定义数据集
(base) root@dev:/home/maoyaozong/LLaMA-Factory/data(main○) # lltotal 7.8M-rw-r--r-- 1 root root 841K May 12 13:09 alpaca_en_demo.json-rw-r--r-- 1 root root 622K May 12 13:09 alpaca_zh_demo.jsondrwxr-xr-x 2 root root 4.0K May 12 13:09 belle_multiturn-rw-r--r-- 1 root root 730K May 12 13:09 c4_demo.jsonl-rw-r--r-- 1 root root 17K May 12 13:09 dataset_info.json-rw-r--r-- 1 root root 1.6M May 12 13:09 dpo_en_demo.json-rw-r--r-- 1 root root 834K May 12 13:09 dpo_zh_demo.json-rw-r--r-- 1 root root 722K May 12 13:09 glaive_toolcall_en_demo.json-rw-r--r-- 1 root root 665K May 12 13:09 glaive_toolcall_zh_demo.jsondrwxr-xr-x 2 root root 4.0K May 12 13:09 hh_rlhf_en-rw-r--r-- 1 root root 20K May 12 13:09 identity.json-rw-r--r-- 1 root root 893K May 12 13:09 kto_en_demo.json-rw-r--r-- 1 root root 877 May 12 13:09 mllm_audio_demo.jsondrwxr-xr-x 2 root root 4.0K May 12 13:09 mllm_demo_data-rw-r--r-- 1 root root 3.3K May 12 13:09 mllm_demo.json-rw-r--r-- 1 root root 1.1K May 12 13:09 mllm_video_audio_demo.json-rw-r--r-- 1 root root 828 May 12 13:09 mllm_video_demo.json-rw-r--r-- 1 root root 13K May 12 13:09 README.md-rw-r--r-- 1 root root 12K May 12 13:09 README_zh.mddrwxr-xr-x 2 root root 4.0K May 12 13:09 ultra_chat-rw-r--r-- 1 root root 1005K May 12 13:09 wiki_demo.txt
- dataset_info.json




使用 alpaca_zh_demo.json, 一共1000条进行微调
模型训练
- 训练
- 评估、预测
- 对话
- 导出
我们在deepseek-r1模型上训练完之后会得到一个lora模型, 和原有基座模型进行合并,最后导出微调后的模型
- 在开始训练模型之前,需要指定的参数有:
- 模型名称及路径
- 微调方法
- 训练阶段
- 训练数据集
- 学习率、训练轮数等训练参数
- 训练轮数, 越多越好, 一般的业务训练要几十到100轮,根据业务和效果的需求;
- 微调参数等其他参数
- 输出目录及配置路径
- 点击【预览命令】,可以看到生成好的参数命令, 这里和使用命令行去调用效果是一样的
llamafactory-cli train \\ --stage sft \\ --do_train True \\ --model_name_or_path /home/maoyaozong/LLaMA-Factory-Model/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-1.5B \\ --preprocessing_num_workers 16 \\ --finetuning_type lora \\ --template deepseekr1 \\ --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/DeepSeek-R1-1.5B-Distill/lora/train_2025-05-14-11-52-56 \\ --bf16 True \\ --plot_loss True \\ --trust_remote_code True \\ --ddp_timeout 180000000 \\ --include_num_input_tokens_seen True \\ --optim adamw_torch \\ --lora_rank 8 \\ --lora_alpha 16 \\ --lora_dropout 0 \\ --lora_target all
- 模型训练过程
loss(损失)
含义:损失值是一个衡量模型预测与实际标签之间差异的指标。损失值越小,表示模型的预测结果越接近真实值。
例子:假设我们在训练一个猫狗分类器,损失值为0.7493表示模型在当当前训练状态下,预测结果与实际标签之间的差异程度。损失值越小,说明模型的预测越准确。
- 在web UI 上可以看到训练的日志
- 在代码 saves 目录下也可以看到训练的日志
- 训练完成后,在checkpoint目录下面, 有一个adapter_model.safetensors 这个就是lora 模型
- 可找到该模型历史上使用webui训练的LoRA模型文件,后续再训练或者执行chat的时候,即会将此LoRA一起加载。
- 将模型导出到 LLaMA-Factory-Model-Out
部署微调模型
- 部署到Ollama 对外提供服务
导出了以下文件:
config.json
generation_config.json
Modelfile
model.safetensors
special_tokens_map.json
tokenizer_config.json
tokenizer.json
这些文件是部署到 Ollama 所需的全部文件
LLaMA-Factory 导出的模型已经包含了 Modelfile
文件,这个文件是 Ollama 用来识别模型结构的配置文件
- 目前ollama下的服务:
导入模型到 Ollama
在模型文件所在目录运行以下命令,将模型导入到 Ollama
ollama create mymodel -f Modelfile
其中 mymodel
是你为模型指定的名称
验证模型导入
导入完成后,可以通过以下命令查看模型信息:
ollama show mymodel
这将显示模型的详细信息,确保模型已正确导入
运行模型
启动模型并进行推理:
ollama run mymodel
如果使用的是旧版本 Ollama,可能需要将
.safetensors
文件转换为
.gguf
格式
- 最终ollama对外提供的服务
流式请求
curl -X POST http://localhost:11434/api/generate \\ -H \"Content-Type: application/json\" \\ -d \'{ \"model\": \"mymodel:latest\", \"prompt\": \"Hello, how are you?\", \"max_tokens\": 100 }\'
非流式请求
curl -X POST http://localhost:11434/api/generate \\ -H \"Content-Type: application/json\" \\ -d \'{ \"model\": \"mymodel:latest\", \"prompt\": \"Hello, how are you?\", \"max_tokens\": 100, \"stream\": false }\'
最后
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。
与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。
但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】