Llama Factory

1. Llama Factory 到底是什么?

1.1 简单比喻

想象你要定制一辆汽车:

传统方式(没有 Llama Factory):

  • 你需要自己造发动机、设计车身、组装零件
  • 需要懂机械工程、电子技术、材料科学
  • 整个过程复杂、容易出错、耗时很长

使用 Llama Factory:

  • 你只需要:
    1. 选择基础车型(预训练模型)
    2. 告诉工厂你的需求(训练数据)
    3. 选择改装方案(训练方法)
    4. 工厂自动完成所有改装
  • 你不需要懂技术细节,只需要提需求

1.2 一句话定义

Llama Factory 是一个"AI模型定制工厂",它让普通人也能轻松地定制和训练自己的大语言模型。

2. 为什么需要 Llama Factory?

2.1 传统训练的痛点

假设你想训练一个懂医疗知识的AI助手:

# 传统方式 - 需要写很多复杂代码 import torch from transformers import AutoModel, AutoTokenizer, TrainingArguments, Trainer from datasets import load_dataset import deepspeed # 1. 数据预处理(很复杂) def preprocess_function(examples): # 需要懂分词、填充、截断等技术 pass # 2. 模型配置(容易出错) training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=4, gradient_accumulation_steps=4, learning_rate=2e-5, # ... 还有几十个参数需要设置 ) # 3. 训练循环(需要深度学习知识) trainer = Trainer( model=model, args=training_args, train_dataset=tokenized_datasets, data_collator=data_collator, # ... 更多复杂配置 ) # 4. 处理各种错误(内存不足、配置错误等)

问题总结:

  • 技术门槛高:需要懂编程、深度学习、分布式训练
  • 配置复杂:几十个参数需要调优
  • 容易出错:内存溢出、配置错误、训练不稳定
  • 效率低下:大量时间花在调试上

2.2 Llama Factory 的解决方案

# 使用 Llama Factory 的方式 from llama_factory import TrainArguments, run_train # 只需要配置几个关键参数 train_args = TrainArguments( model_name_or_path="Qwen/Qwen2-7B-Instruct", # 基础模型 dataset="my_medical_data", # 你的数据 finetuning_type="lora", # 训练方法 output_dir="./my_medical_ai" # 输出位置 ) # 一键开始训练 run_train(train_args)

3. Llama Factory 的核心功能详解

3.1 四种训练方法(像选择汽车改装方案)

方案1:全参数微调 - "整车大改装"

        工作原理:更新模型的所有参数
        ✅ 优点:效果最好,能力最强
        ❌ 缺点:成本高,需要大量GPU内存
        💡 适合:大公司,有充足计算资源
        🔧 需求:多张A100/H100显卡

        内存需求:模型大小 × 4 × 3 ≈ 12倍模型大小
        例如:7B模型需要 7×4×3 = 84GB GPU内存

方案2:LoRA - "加装智能配件"

        工作原理:只训练少量新增的参数,不改变原模型
        ✅ 优点:节省90%内存,训练快,可切换不同任务
        ❌ 缺点:效果略低于全参数微调
        💡 适合:大多数应用场景
        🔧 需求:单张RTX 3090/4090即可

        内存需求:模型大小 + 少量额外参数
        例如:7B模型只需要 7GB + 0.1GB = 7.1GB GPU内存

方案3:QLoRA - "轻量化智能配件"

        工作原理:在LoRA基础上,把模型压缩到4位精度
        ✅ 优点:极省内存,消费级显卡就能训练大模型
        ❌ 缺点:效果有轻微损失
        💡 适合:个人开发者,资源有限
        🔧 需求:单张RTX 3080/4060即可

        内存需求:模型大小 × 0.5 + 少量参数
        例如:7B模型只需要 7×0.5 + 0.1 = 3.6GB GPU内存

方案4:P-Tuning - "只改方向盘"

        工作原理:只训练极少量提示参数
        ✅ 优点:超级省内存,训练极快
        ❌ 缺点:效果有限,能力提升小
        💡 适合:快速实验,极小资源
        🔧 需求:几乎任何显卡都能用

        内存需求:模型大小 + 极少量参数

4. Llama Factory 的完整工作流程

4.1 第一步:准备数据(像准备菜谱)

数据格式要求:

// 你的训练数据应该长这样 [ { "instruction": "给以下症状提供医疗建议", "input": "患者发烧38.5℃,咳嗽,流鼻涕", "output": "建议多休息、多喝水,可服用退烧药,如症状持续请就医" }, { "instruction": "翻译以下英文", "input": "Hello, how are you?", "output": "你好,最近怎么样?" } ]

各个字段的含义:

  • instruction:你要AI完成什么任务
  • input:给AI的输入信息
  • output:你期望AI输出的正确答案

数据准备技巧:

  1. 数量:至少100条,越多越好
  2. 质量:确保答案准确、专业
  3. 多样性:覆盖各种场景和问题类型

4.2 第二步:选择基础模型(像选择原材料)

常见基础模型推荐:

中文任务: - Qwen系列(阿里通义千问):对中文支持最好 - ChatGLM系列(清华):中文理解强 - Baichuan系列(百川):中文优化好 英文任务: - Llama系列(Meta):生态丰富 - Mistral系列:性能优秀 - Gemma系列(Google):轻量高效 多语言任务: - Qwen系列:中英文都不错 - Llama系列:通过扩展支持多语言

选择原则:

  • 任务语言 → 选择对应语言优化好的模型
  • 硬件限制 → 选择参数量合适的模型
  • 功能需求 → 选择能力匹配的模型

4.3 第三步:配置训练参数(像设置烹饪参数)

# 一个完整的训练配置示例 train_args = TrainArguments( # 基础配置 model_name_or_path="Qwen/Qwen2-7B-Instruct", # 基础模型 dataset="my_medical_data", # 数据集名称 finetuning_type="lora", # 训练方法 # LoRA 专用配置 lora_target="q_proj,v_proj", # 要改动的模型部件 lora_rank=16, # 改动程度(16-64) lora_alpha=32, # 学习强度 # 训练参数 output_dir="./my_medical_ai", # 保存位置 per_device_train_batch_size=4, # 批次大小 gradient_accumulation_steps=4, # 梯度累积 learning_rate=2e-4, # 学习率 num_train_epochs=3, # 训练轮数 # 资源优化 fp16=True, # 使用半精度节省内存 logging_steps=10, # 每10步输出日志 )

4.4 第四步:开始训练(像启动智能厨房)

from llama_factory import run_train # 一键开始训练 run_train(train_args) # 训练过程中你会看到: # 🔥 开始训练... # 📊 第1步,损失: 2.3456 # 📊 第10步,损失: 1.2345 # 📊 第20步,损失: 0.8765 # 💾 保存检查点... # 🎉 训练完成!

4.5 第五步:测试和使用(像品尝菜品)

from llama_factory import load_model, get_infer_args # 加载训练好的模型 infer_args = get_infer_args({ "model_name_or_path": "Qwen/Qwen2-7B-Instruct", "adapter_name_or_path": "./my_medical_ai", # 你的训练结果 "template": "qwen" }) model, tokenizer = load_model(infer_args) # 测试你的AI助手 messages = [ {"role": "user", "content": "我发烧38℃,应该怎么办?"} ] response = model.chat(tokenizer, messages) print(f"AI回答: {response}") # 输出:建议多休息、多喝水,可服用退烧药...

5、介绍完,就可以尝试了

LLaMA-Factory 是一个用于训练和微调模型的工具。它支持全参数微调、LoRA 微调、QLoRA 微调、模型评估、模型推理和模型导出等功能。

微调的过程

        模型微调通过在特定任务的数据集上继续训练预训练模型来进行,使得模型能够学习到与任务相关的特定特征和知识。这个过程通常涉及到模型权重的微幅调整,而不是从头开始训练一个全新的模型。微调过程主要包括以下几个步骤:

1. 数据准备:收集和准备特定任务的数据集。

2. 模型选择:选择一个预训练模型作为基础模型。

3. 迁移学习:在新数据集上继续训练模型,同时保留预训练模型的知识。

4. 参数调整:根据需要调整模型的参数,如学习率、批大小等。

5. 模型评估:在验证集上评估模型的性能,并根据反馈进行调整。

安装

若电脑没有GPU,可以使用ModelScope云服务

我的Notebook · 魔搭社区

前提CUDA要安装,然后安装llamafactory

# 构建虚拟环境 conda create -n llamafactory python=3.10 -y && conda activate llamafactory # 下载仓库 git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory # 安装 pip install -e . 
校验
llamafactory-cli version 

安装完成后、可以启动webUI界面配置,也可以直接在示例文件夹下修改。

可以读一下readme使用哪个方法训练,有对应命令行的执行命令

打开这个文件有几个配置

第一个框是它要训练的模型路径,默认模型文件从modelScope上下载

第二个框是用的数据集,有两个,第一个是自我认证:

用户什么都没有输入,只是让模型知道它是谁,一个自我认证的数据集

第二个就是微调的数据集(en证明是英文的)。

第三个框是一次训练最大例子数量,可以调小一点加快训练。

训练配置完成后就可以在命令行执行:

llamafactory-cli train examples/train_qlora/llama3_lora_sft_otfq.yaml

## 官方博客

- 💡 [Easy Dataset × LLaMA Factory: 让大模型高效学习领域知识](https://buaa-act.feishu.cn/wiki/KY9xwTGs1iqHrRkjXBwcZP9WnL9)(中文)

- [使用 LLaMA-Factory 微调心理健康大模型](https://www.lab4ai.cn/project/detail?id=25cce32ec131497b9e06a93336a0817f&type=project&utm_source=LLaMA-Factory)(中文)

- [使用 LLaMA-Factory 构建 GPT-OSS 角色扮演模型](https://docs.llamafactory.com.cn/docs/documents/best-practice/gptroleplay/?utm_source=LLaMA-Factory)(中文)

- [基于 LLaMA-Factory 和 EasyR1 打造一站式无代码大模型强化学习和部署平台 LLM Model Hub](https://aws.amazon.com/cn/blogs/china/building-llm-model-hub-based-on-llamafactory-and-easyr1/)(中文)

Read more

IntelliJ IDEA 打包 Web 项目 WAR 包(含 Tomcat 部署+常见问题解决)

IntelliJ IDEA 打包 Web 项目 WAR 包(含 Tomcat 部署+常见问题解决)

一、引言 对于 IntelliJ IDEA 新手来说,Web 项目 WAR 包打包常因步骤多、配置深而卡壳,且多数教程仅讲“打包”却忽略“部署验证”和“问题排查”。本文将从前置准备→核心配置→打包验证→Tomcat 部署→问题解决,带你完整走通流程,避开 90% 的常见坑。 二、前置准备:确认基础配置(避免起步就错) 在开始打包前,先检查 3 个关键前提,缺失任一环节可能导致后续操作失败: 1. 确认项目类型:打开项目结构(快捷键 Shift+Ctrl+Alt+S),在「Modules」中查看模块类型是否为「Web Application」,若不是,

鸿蒙6/鸿蒙NEXT WebView套壳APP源码

鸿蒙6/鸿蒙NEXT WebView套壳APP源码

本文使用AI生成! 一、事情的起因(真实踩坑) 我之前一直在做一个网页项目,但因为业务展示的原因,需要打包成 APP 使用。 在鸿蒙 4.2 的时候,这件事其实非常简单: * 找一个安卓 WebView 套壳 APP * 用 MT 管理器改一下 URL * 直接就能用了 整个流程几乎是“无脑操作”,而且这个方案稳定跑了一年多,没有任何问题。 二、问题爆发:升级鸿蒙 NEXT 后直接炸了 直到今年(2026),我换了新手机(Mate80ProMax),系统直接升级到了 鸿蒙 6(HarmonyOS NEXT)。 问题就来了。 虽然可以通过“卓易通”兼容运行之前的安卓壳子,但是: ❗ 文件上传直接废了 具体表现是: * <input

前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性

前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性

目录 前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性 一、BigNumber.js介绍 1、什么是 BigNumber.js? 2、作用领域 3、核心特性 二、安装配置与基础用法 1、引入 BigNumber.js 2、配置 BigNumber.js 3、常用方法 ①创建 BigNumber 实例 ②基本运算 ③幂运算 ④绝对值 ⑤舍入 ⑥比较 ⑦格式化输出 ⑧链式调用 三、核心特性 1、大数精度丢失问题 2、小数运算精度问题 3、大数乘除法精度问题 四、总结         作者:watermelo37         ZEEKLOG万粉博主、

ClawdBot快速上手:Web控制台配置、设备授权与Dashboard访问

ClawdBot快速上手:Web控制台配置、设备授权与Dashboard访问 1. 什么是ClawdBot?——你的本地AI助手,开箱即用 ClawdBot 是一个运行在你个人设备上的轻量级AI助手框架,不是云端服务,也不依赖厂商API密钥。它把大模型能力真正交到你手上:你可以把它装在笔记本、旧台式机,甚至树莓派上,全程离线运行,数据不出设备。 它的后端由 vLLM 驱动,这意味着你能享受到接近生产级的推理吞吐和低延迟响应。但和那些需要调参、配环境、改代码的“硬核”方案不同,ClawdBot 的设计哲学是「先跑起来,再调细节」——它默认就带好模型、接口和界面,你只需要执行一条命令,就能看到一个可交互的AI控制台。 它不追求“最全功能”,而是专注解决三个核心问题: * 怎么安全地连上它?(Web控制台不是直接暴露的,有设备信任机制) * 怎么让它听懂你想用什么模型?(不只是换名字,而是真正切换底层推理引擎) * 怎么在浏览器里直观地操作和验证?(不是只靠命令行,而是有可视化反馈) 这三点,正是本文要带你一步步打通的关键路径。 2. 第一步: