背景

在做很多分类任务时,实际项目中的情况很多而且复杂,不可能将每种示例都放入到提示词中,同时为了让模型能更好的做任务,所以使用Lora。结论是很不错,在一定程度上也节省了一些token

TIP:不同架构的和参数的模型不能共用一个Lora,哪怕是同一系列(我尝试了不同平台:A100->p800,A100 3.5B->A100 122B)

一、准备

  1. conda环境
  2. LLaMA-Factory 0.9.5.dev0
  3. A100-80G*4
  4. 相关模型:Qwen3-235B-A22B-Instruct-2507-FP8、Qwen3.5-35B-A3B、Qwen3.5-122B-A10B
  5. 训练数据集、测试数据集

二、开始

# 创建训练环境

conda create -n llamafactory python=3.12 -y

# 下载对应Lora的基础模型(你实际项目的基座模型,这里一定要注意使用基础模型训练的Lora基本不能跨模型使用,即便是同一系列的)

# 下载llamafactory代码

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .
pip install -r requirements/metrics.txt

# 数据集格式(我的是对话形式分类所以用对话模版,这一步用模型生成、通过工程化替换固定提示词就好。最好还是根据项目实际情况收集客户特征问题后再泛化)

保存好数据路径(配置在data_info.json中):数据目录/训练数据.json

[

  {

    "messages": [

      {

        "role": "system",

        "content": "作为xxx你要xxxx"

      },

      {

        "role": "user",

        "content": "今天的销售额是多少"

      },

      {

        "role": "assistant",

        "content": "0"

      }

    ]

  }

  ...

]

# 配置数据集

vi LLaMA-Factory/data/data_info.json

"router_classification": {

        "file_name": "数据目录/训练数据.json",

        "formatting": "sharegpt",

        "columns": {

            "messages": "messages"

        },

        "tags": {

            "role_tag": "role",

            "content_tag": "content",

            "user_tag": "user",

            "assistant_tag": "assistant",

            "system_tag": "system"

        }

    } 

# 启动webui进行训练

export CUDA_VISIBLE_DEVICES=4,5,6,7 llamafactory-cli webui

# 配置训练参数

# 训练过程

# 测试

点击chat、使用huggerface加载模型(这个版本的vllm要求是0.14-0.17,我的不在所以用hf了),在【检查点路径】选择刚才训练好的Lora,加载模型,成功后先使用训练的系统提示词和你准备的测试问题进行测试看,同步可以减少系统提示词进行测试

三、报错信息

1.模版不匹配【按照chat模版填写】

四、VLLM中使用

在启动VLLM时加入
  --enable-lora \
  --lora-modules question-type=Lora路径
调用时
curl http://localhost:9001/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "question-type",
    "messages": [{"role": "user", "content": "xxxx"}]
  }'

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐