简介

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调,框架特性包括:

  • 模型种类:LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGLM、Phi 等等。
  • 训练算法:(增量)预训练、(多模态)指令监督微调、奖励模型训练、PPO 训练、DPO 训练、KTO 训练、ORPO 训练等等。
  • 运算精度:16 比特全参数微调、冻结微调、LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调。
  • 优化算法:GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ 和 PiSSA。
  • 加速算子:FlashAttention-2 和 Unsloth。
  • 推理引擎:Transformers 和 vLLM。
  • 实验面板:LlamaBoard、TensorBoard、Wandb、MLflow 等等。

GitHub项目地址
GitHub文档仓库
不想通过GitHub跳转到文档,可以通过下面的链接直接访问LLama-Factory官方文档
文档地址

软硬件依赖

必需项至少推荐
python3.83.11
torch1.13.12.4.0
transformers4.41.24.43.4
datasets2.16.02.20.0
accelerate0.30.10.32.0
peft0.11.10.12.0
trl0.8.60.9.6
可选项至少推荐
CUDA11.612.2
deepspeed0.10.00.14.0
bitsandbytes0.39.00.43.1
vllm0.4.30.5.0
flash-attn2.3.02.6.3

硬件依赖

* 估算值

方法精度7B13B30B70B110B8x7B8x22B
FullAMP120GB240GB600GB1200GB2000GB900GB2400GB
Full1660GB120GB300GB600GB900GB400GB1200GB
Freeze1620GB40GB80GB200GB360GB160GB400GB
LoRA/GaLore/BAdam1616GB32GB64GB160GB240GB120GB320GB
QLoRA810GB20GB40GB80GB140GB60GB160GB
QLoRA46GB12GB24GB48GB72GB30GB96GB
QLoRA24GB8GB16GB24GB48GB18GB48GB

安装

  1. 安装CUDA
    下载链接
    选择操作系统后进行下载
    在这里插入图片描述

    打开cmd输入nvcc -V出现下图类似内容则表明安装成功
    在这里插入图片描述

    否则,需要配置系统变量
    在这里插入图片描述

  2. 下载LLama-Factory
    git clone https://github.com/hiyouga/LLaMA-Factory.git

  3. 配置python环境
    我们使用conda配置,如果不知道conda怎么使用可以参考这篇博客:链接

    conda create --prefix D:\python_env\llama_factory python=3.11 # 创建虚拟环境
    conda config --add envs_dirs D:\python_env                    # 给新建的虚拟环境添加名称
    conda activate llama_factory                                  # 激活环境
    
  4. 安装LLama-Factory

    cd LLaMA-Factory
    pip install -e ".[torch,metrics]"
    

    输入llamafactory-cli version出现下图内容表示安装成功
    在这里插入图片描述

  5. 量化环境安装
    一般情况,我们微调出来的模型会很大,这个时候需要量化。
    量化方式有两种QLoRAFlashAttention-2,我们使用第一种。
    在 Windows 上启用量化 LoRA(QLoRA),请根据 CUDA 版本选择适当的 bitsandbytes 发行版本。
    我安装的CUDA是12.2版本,所以我使用0.39.1+
    pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl

使用

  1. 数据处理
    dataset_info.json 包含了所有经过预处理的 本地数据集以及在线数据集。如果您希望使用自定义数据集,请务必在 dataset_info.json 文件中添加对数据集及其内容的描述,并通过修改 dataset: 数据集名称 配置来使用数据集。
    例如:指令监督微调数据集
    指令监督微调(Instruct Tuning)通过让模型学习详细的指令以及对应的回答来优化模型在特定指令下的表现。
    instruction 列对应的内容为人类指令, input 列对应的内容为人类输入, output 列对应的内容为模型回答。下面是一个例子

    "alpaca_zh_demo.json"
    {
      "instruction": "计算这些物品的总费用。 ",
      "input": "输入:汽车 - $3000,衣服 - $100,书 - $20。",
      "output": "汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。"
    },
    

    在进行指令监督微调时, instruction 列对应的内容会与 input 列对应的内容拼接后作为最终的人类输入,即人类输入为 instruction\ninput。而 output 列对应的内容为模型回答。 在上面的例子中,人类的最终输入是:

    计算这些物品的总费用。
    输入:汽车 - $3000,衣服 - $100,书 - $20。
    

    模型的回答是:

    汽车、衣服和书的总费用为 $3000 + $100 + $20 = $3120。
    

    更多数据格式参考数据处理

  2. 启用WebUI

    cd LLaMA-Factory
    llamafactory-cli webui
    

在这里插入图片描述

  1. 下载模型
  • Hugging Face
    Hugging Face
    如果Hugging Face无法访问,可以尝试使用国内镜像网站Hugging Face国内镜像网站
    在这里插入图片描述

    安装git-lfsgit lfs install
    在这里插入图片描述
    git clone https://huggingface.co/shenzhi-wang/Llama3.1-8B-Chinese-Chat

  1. 开始训练

在这里插入图片描述

我的电脑显存有限,为了防止爆显存,这里选了一个1.8B的小模型。

OK,点击开始就可以开始训练了。训练过程中,后台会显示过程,左下角也会显示训练时间。我已经训练好了,这里可以看到训练完毕以及损失值。这里请记住模型输出目录,等一会测试时选择加载的模型。

在这里插入图片描述

本次训练loss虽然有收敛,但是值还是有点大。

看效果之前先看下训练使用的数据集,等一会同样的问题问下原模型和训练出来的模型,对比下效果:

在这里插入图片描述

加载原模型,提问识别并解释给定列表中的两个科学理论:细胞理论和日心说。,原模型给出的回答是:

在这里插入图片描述

加载训练出来的模型,同样的问题,回答更接近训练集中的内容:

在这里插入图片描述

模型体验

中文社区GitHub

中文社区官网

Llama3在线体验

开源中文LLaMA模型和指令精调的Alpaca大模型

实用小工具

Hugging Face Model Memory Calculator

LLM Check

FAQs

  1. 未检测到CUDA环境
    问题:开始训练模型时出现警告信息“未检测到CUDA环境”
    在这里插入图片描述
    解决方法
  • 运行如下代码,发现安装的torch是CPU版本

    import torch
    print(torch.cuda.is_available())  # 是否可以用gpu False不能,True可以
    print(torch.cuda.device_count())  # gpu数量, 0就是没有,1就是检测到了
    print(torch.__version__) #结果X.X.X+cpu不行
    

    在这里插入图片描述

  • 重新安装torch

    PyTorch官网选择合适的安装方式:链接
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

    在这里插入图片描述
    也可以从这里找相应的torch版本torch

  • 重装后发现可以了

    在这里插入图片描述

  1. WebUI微调时没有任何信息
    后台查看日志:
    例如这个问题就是无法访问Hugging Face报的错误
    在这里插入图片描述

  2. 开始微调后出现无法连接https://huggingface.co
    解决方法-1:使用魔搭社区
    export USE_MODELSCOPE_HUB=1 # Windows 使用 set USE_MODELSCOPE_HUB=1

    Windows设置set MODELSCOPE_CACHE=D:\SoftWare\AI\MODELSCOPE修改模型下载路径,否则默认下载在C:\Users\<user_name>\.cache目录下

    注意:必须先执行此命令后执行llamafactory-cli webui启用WebUI

    或者直接设置环境变量,一劳永逸

在这里插入图片描述

解决方法-2:配置国内hugging face镜像源

huggingface-cli env查看当前配置

在这里插入图片描述

添加环境变量

在这里插入图片描述

再次查看配置

在这里插入图片描述

  1. 训练时出现“CUDA out of memory”
    问题:爆显存
    在这里插入图片描述 解决方法
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐