解决LLama Factory微调并量化大模型时cuda/pytorch/python/auto-gptq/vllm/的冲突的详细说明

        用LLama Factory的微调并导出大模型时.​由于很多模块如之间的依赖关系复杂很容易造成版本冲突,主要涉及到cuda/pytorch/python/auto-gptq/vllm的版本选择.我在AutoDL上经实验了(高,低)两种组合能正常运行LLama Factory,以下是详细说明. 

一.硬件配置

    采用租用云算力服务器方式:由于是基于大于1B的大模型需要硬件配置较高,租用算力服务器比如AutoDL算力云一小时也就1-2元左右,主要是图方便,当然也比自购显卡省钱.关于购买云服务网上较多教程,也不复杂,可自行购买不过每次记得要人走关机,不然会继续扣费.
       AutoDL服务器租用的时候一定要点"查看详情"查看一下红框内的参数选择,参数务必严格选择,若不一样一定要点击"更换"使之一样(这很重要!否则后续会很麻烦).
       我选择的是:RTX4090 ,PyTorch  2.1.0  ,Python  3.10(ubuntu22.04)  ,Cuda  12.1

二.环境配置

    环境配置很容易出现各种版本冲突,以下是已验证的(高,低)两种组合,可以按需要取其一安装.

  • 高配组合:尽量往高版本靠,忽略官方要求.能正常运行(推荐安装).

           版本组合:cuda12.4/pytorch2.5.1/python3.10/auto-gptq 0.7.1/vllm0.6.5

           安装方法:

                   pip install auto-gptq== 0.7.1  #一定要指定安装版本  

                   pip install vllm==0.6.5# 注意:vllm安装的同时,CUDA 12.1将被自动安装覆盖为12.4版本,pytorch2.1.0将被自动安装覆盖为2.5.1版本,无须理会!!!

  • 保守组合:均严格按照官方要求的支持的稳定版本.稳定性可能高些但性能可能低些.
            版本组合:cuda12.1/pytorch2.1.0/python3.10/auto-gptq0.5.1/vllm0.5.4

            安装方法: 

                   pip install auto-gptq==0.5.1 #一定要指定安装版本    

                   pip install vllm==0.5.4  # 注意:vllm安装的同时,CUDA 12.1和pytorch将被自
                                                            动再安装一次,无须理会!!!

             

这样cuda /pytorch /python  /auto-gptq /vllm 基本环境就安装完了,且没有任何报错.

注意:你可以在安装后检查cuda版本,建议用以下方式查看.

import torch
print(torch.__version__)

    不要用nvcc --version和 nvidia-smi查看,否则你看到的版本不一样.
    因为在运行PyTorch时,实际使用的CUDA版本通常是PyTorch编译时所依赖的版本。例如,PyTorch显示的版本为2.5.1+cu124,但nvcc --version显示的却是CUDA 12.1版本即即CUDA Toolkit的版本。而PyTorch在运行时并不直接依赖nvcc,而是依赖于CUDA的动态链接库。只要系统上存在与PyTorch所依赖的CUDA 12.4版本兼容的动态链接库,PyTorch就能够正常运行。
     此外,nvidia-smi显示的是GPU驱动程序能支持的CUDA运行时最高版本比如12.6。只要PyTorch的运行版本小于nvidia-smi显示的版本即就ok,比如12.4。


     还可以查看vllm的版本:pip show vllm 应该显示Version: 0.6.5或者0.5.4

以下是2个版本中的保守组合的依据,当然你可以忽略以下1,2,3,4的解释:

  1. AutoDL服务器的参数
  2. vLLM 中文站的资料   https://vllm.hyper.ai/docs/getting-started/installation/ 
  3. auto-gptq官网资料(科学上网):  https://blog.csdn.net/qq_42755230/article/details/144427660
  4. 其它资料:

              auto-gptq最高支持pytorch2.2.1,cuda12.1,后来没更新了.
              vllm最高支持pytorch2.5.1版本v
              vLLM 包含预编译的 C++ 和 CUDA (12.1) 二进制文件  Python:3.9 – 3.12
              vLLM 的二进制文件默认使用 CUDA 12.1 和公共 PyTorch 发行版本进行编译。
              vLLM在v0.5.2v0.5.3和 v0.5.3.post1中,存在由 zmq 引起的错误.

三.微调大模型(lora)

  1.  安装LLaMA-Factory:先把AutoDL服务器开机,然后通过vscode去连接服务器,通过vscode去连接的好处是,vscode可以直接打开远程页面,因为vscode做了内网穿透.输入身份和密码后打开root目录。在终端输入如下指令即可下载和安装LLaMA-Factory:
    source /etc/network_turbo #加速用
    git clone https://github.com/hiyouga/LLaMA-Factory.git #下载
    cd LLaMA-Factory  #一定要进入LLaMA-Factory目录
    pip install -e .  #安装其它依赖
  2. 下载大模型:在服务器的autodl_tmp文件夹下建一个test01.py文件用来下载大模型.这里我选择魔塔社区的大模型,当然你可以选择比1B大一点的模型如3B,但不能太大,否则会因为数据集不足造成微调效果不好:
    首先安装modelscope:    pip install modelscope
    然后在服务器的autodl_tmp文件夹下建一个test01.py文件用来下载大模型.
    #大模型下载
    from modelscope import snapshot_download
    model_dir = snapshot_download('UnicomAI/Unichat-llama3.2-Chinese-1B',cache_dir="/root/autodl-tmp/llm/")

    运行test01.py文件下载大模型到/root/autodl-tmp/llm/  路径下

  3. 下载弱智吧数据集:注意下载数据集后一定要将格式转换为如下格式,转换可用脚本或者AI帮助转换(略)
  4. 将转换后的数据集拖到服务器的Data目录下(即拷贝)
  5. 将数据集添加到配置文件中:
  6. 启动webUI
    cd LLaMA-Factory
    llamafactory-cli webui
  7. 填写参数:
  8. 点击"开始"进行训练:注意到曲线基本接近水平即可停止训练.


    每次训练完之后的权重都会存储在saves路径下面:

       我们可以选取任意一个去进行推理,测试一下我们的训练结果。

四.合并大模型

  1.  将saves下面的检查点复制绝对路径到检查点路径,选择导出目录,切换到Export(合并导出)其他参数保持不变.
  2. 重新加载合并后的模型进行检测:
  3. 可以看到回答同样的问题但是一样的,说明训练成功!

五.采用qlora加速量化大模型训练

        qlora加速需要安装bitsandbytes,且必须指定版本,否则很容易出现版本冲突.

pip install bitsandbytes==0.39.0

         然后点"开始"训练,红色框为与qlora相关的关键参数:

在loss为0.01左右停止训练时的数据:

训练结束后可以保存训练模型,方法见  "四.合并大模型"

六.客观评估训练效果:

        注:由于数据是抽取训练集中的约1/10来做实验,没有严格按照训练数据集与评估数据集分开,所以仅作为实验参考.
        在评估前需要安装3个包:
            pip install jieba
            pip install nltk
            pip install rouge_chinese
        然后点击"开始"评估,下图红框意为保持与原训练参数一致,蓝色框意义见图中标注:

实测结果如下,由于非标准评估集,所以仅作实验性参考:

<think>嗯,用户想了解如何部署微调Llama-Factory支持的多模态大语言模型。首先,我需要回忆一下Llama-Factory的相关信息。根据引用[1],Llama-Factory是一个由北航开源的低代码大模型训练框架,专注于微调大型语言模型。引用[2]提到在部署多模型,需要选择合适的基础模型,比如Llama-3、Qwen等。那多模态的话,可能需要支持图像、文本等多模态输入的模型。 首先,部署部分。用户可能需要先安装必要的依赖,比如Python环境、PyTorchCUDA等。然后克隆仓库,安装依赖库,可能需要多模态相关的库,比如transformers、torchvision等。接着,模型准备,下载多模态基础模型,比如Qwen-VL或者LLaVA,将它们放在指定目录下。然后配置环境变量,可能需要设置模型路径数据路径。 然后是微调部分。多模态微调需要特定的数据集,比如包含图像文本对的数据。数据预处理可能需要转换成框架支持的格式,比如JSON,包含图像路径文本描述。接着选择微调方法,比如LoRA,这样可以在低资源下高效训练。配置训练参数,学习率、批次大小、epoch数等。启动训练脚本,可能需要指定配置文件。最后是模型测试,加载微调后的模型进行推理,验证多模态能力。 用户可能还会遇到问题,比如环境配置错误、显存不足、数据格式不对。需要建议他们检查CUDA版本、减少批次大小,或者调整LoRA的秩参数。另外,多模态模型通常需要更多显存,可能需要使用4-bit量化或者梯度检查点技术。 相关问题部分,应该涵盖部署准备、多模态模型选择、数据处理、参数优化、评估方法以及应用场景。这样用户能全面了解流程中的各个步骤可能的问题。</think>以下是根据LLaMA-Factory官方文档整理的部署微调多模态大语言模型指南: ### 一、环境部署 1. **基础环境准备** - 安装Python 3.8+CUDA 11.7+ - 克隆仓库:`git clone https://github.com/hiyouga/LLaMA-Factory.git` - 安装依赖:`pip install -r requirements.txt` - 多模态扩展:安装`torchvision``transformers`的多模态支持组件[^1] 2. **多模态模型下载** - 支持的模型:Qwen-VL、LLaVA、MiniGPT-4等 - 示例下载命令: ```bash huggingface-cli download qwen/Qwen-VL-Chat --local-dir models/qwen_vl ``` ### 二、微调流程 1. **数据准备** - 格式要求:JSON文件包含`image`(图片路径)`conversations`字段 - 示例结构: ```json { "id": "multi_modal_sample", "image": "data/images/cat.jpg", "conversations": [ {"from": "human", "value": "描述这张图片"}, {"from": "gpt", "value": "一只橘猫在窗台上晒太阳"} ] } ``` 2. **启动微调** ```bash python src/train_bash.py \ --model_name_or_path models/qwen_vl \ --dataset multimodal_dataset \ --stage sft \ --template qwen \ --lora_target c_attn \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 4 \ --lr 2e-5 \ --num_train_epochs 3 \ --fp16 ``` ### 三、关键技术点 1. **多模态适配器** - 使用线性投影层将图像特征映射到文本嵌入空间 - 公式实现:$$ h_{\text{visual}} = W_p \cdot \text{CNN}(I) $$ 其中$W_p$为可训练投影矩阵,$I$为输入图像 2. **混合训练策略** - 第一阶段冻结视觉编码器,只训练文本解码器 - 第二阶段联合微调视觉-语言连接层 ### 四、常见问题解决 | 问题现象 | 解决方案 | |---------|----------| | OOM显存不足 | 启用4-bit量化:`--quantization_bit 4` | | 图像加载失败 | 检查路径权限,确认PIL库版本 | | 多模态对齐不良 | 增加投影层维度:`--visual_encoder_hidden_dim 1024` |
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值