【LLama-Factory】开源低代码大模型微调框架本地部署和使用保姆级教程!!!

简介

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”
    问题:爆显存
    在这里插入图片描述 解决方法
### 使用 LLama-Factory 微调开源模型 #### 准备环境与安装依赖 为了使用 LLama-Factory开源模型进行微调,首先需要准备合适的开发环境并安装必要的软件包。这通常涉及到设置 Python 虚拟环境以及安装 PyTorch 其他依赖项。 #### 配置训练参数文件 配置文件定义了用于微调的具体参数选项。对于 `Llama3-8B-Instruct` 模型而言,可以通过 YAML 文件指定这些细节[^1]: ```yaml model_name_or_path: "path_to_model" output_dir: "./results" per_device_train_batch_size: 4 gradient_accumulation_steps: 2 learning_rate: 5e-6 num_train_epochs: 3 logging_dir: './logs' ``` 此配置示例展示了如何调整批量大小、学习率其他超参数来优化训练过程。 #### 执行微调操作 一旦完成了上述准备工作,则可通过 CLI 命令执行实际的微调流程。具体来说,就是运行如下命令来进行基于 LoRA 的微调工作[^3]: ```bash CUDA_VISIBLE_DEVICES=0 llamafactory-cli train examples/lora_single_gpu/llama3_lora_sft.yaml ``` 这条指令指定了 GPU 设备编号,并加载预设好的配置文件路径以启动训练任务。 #### 进行推理测试 完成微调之后,可以立即对该改进后的模型做初步评估。同样借助于 CLI 工具,只需更改子命令即可切换到推理模式: ```bash CUDA_VISIBLE_DEVICES=0 llamafactory-cli chat examples/inference/llama3_lora_sft.yaml ``` 该命令允许用户与经过微调的大规模语言模型交互对话,从而直观感受其表现变化。 #### 合并权重保存成果 最后一步是将原始模型与新学到的知识相结合,形成最终版本供后续部署或进一步迭代之用。这一环节也十分简单明了: ```bash CUDA_VISIBLE_DEVICES=0 llamafactory-cli export examples/merge_lora/llama3_lora_sft.yaml ``` 通过这种方式能够有效地保留所有更新过的参数而不会丢失原有结构特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值