大模型——LlamaFactory微调多模态大模型流程记录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

1、数据集制作工具安装

cd data_create/backend目录下执行如下操作

python 复制代码
# 1、删除旧虚拟环境
rm -rf venv

# 2、确认 Python 版本:
python3 --version

# 3、用当前这台机器的 Python3,创建一个"隔离的 Python 运行环境"
python3 -m venv venv

4、重新启动即可
bash start.sh

然后另开一个终端启动前端模块
界⾯启动命令:

首先ubutnu系统先安装Node.js / npm

python 复制代码
# 1️⃣ 安装 Node.js 18 LTS(推荐)
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -

# 2️⃣ 安装 node + npm
apt-get install -y nodejs
python 复制代码
# 在项⽬根⽬录(data_create)
npm install
npm run dev

启动后,会显示如下界面:

如果启动后显示如下报错:

可以将vite.config.ts文件使用如下进行覆盖即可,默认端口是3000,可以修改:

python 复制代码
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import path from 'path'

export default defineConfig({
  plugins: [react()],

  resolve: {
    extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
    alias: {
      'vaul@1.1.2': 'vaul',
      'sonner@2.0.3': 'sonner',
      'recharts@2.15.2': 'recharts',
      'react-resizable-panels@2.1.7': 'react-resizable-panels',
      'react-hook-form@7.55.0': 'react-hook-form',
      'react-day-picker@8.10.1': 'react-day-picker',
      'next-themes@0.4.6': 'next-themes',
      'lucide-react@0.487.0': 'lucide-react',
      'input-otp@1.4.2': 'input-otp',
      'embla-carousel-react@8.6.0': 'embla-carousel-react',
      'cmdk@1.1.1': 'cmdk',
      'class-variance-authority@0.7.1': 'class-variance-authority',

      '@radix-ui/react-tooltip@1.1.8': '@radix-ui/react-tooltip',
      '@radix-ui/react-toggle@1.1.2': '@radix-ui/react-toggle',
      '@radix-ui/react-toggle-group@1.1.2': '@radix-ui/react-toggle-group',
      '@radix-ui/react-tabs@1.1.3': '@radix-ui/react-tabs',
      '@radix-ui/react-switch@1.1.3': '@radix-ui/react-switch',
      '@radix-ui/react-slot@1.1.2': '@radix-ui/react-slot',
      '@radix-ui/react-slider@1.2.3': '@radix-ui/react-slider',
      '@radix-ui/react-separator@1.1.2': '@radix-ui/react-separator',
      '@radix-ui/react-select@2.1.6': '@radix-ui/react-select',
      '@radix-ui/react-scroll-area@1.2.3': '@radix-ui/react-scroll-area',
      '@radix-ui/react-radio-group@1.2.3': '@radix-ui/react-radio-group',
      '@radix-ui/react-progress@1.1.2': '@radix-ui/react-progress',
      '@radix-ui/react-popover@1.1.6': '@radix-ui/react-popover',
      '@radix-ui/react-navigation-menu@1.2.5': '@radix-ui/react-navigation-menu',
      '@radix-ui/react-menubar@1.1.6': '@radix-ui/react-menubar',
      '@radix-ui/react-label@2.1.2': '@radix-ui/react-label',
      '@radix-ui/react-hover-card@1.1.6': '@radix-ui/react-hover-card',
      '@radix-ui/react-dropdown-menu@2.1.6': '@radix-ui/react-dropdown-menu',
      '@radix-ui/react-dialog@1.1.6': '@radix-ui/react-dialog',
      '@radix-ui/react-context-menu@2.2.6': '@radix-ui/react-context-menu',
      '@radix-ui/react-collapsible@1.1.3': '@radix-ui/react-collapsible',
      '@radix-ui/react-checkbox@1.1.4': '@radix-ui/react-checkbox',
      '@radix-ui/react-avatar@1.1.3': '@radix-ui/react-avatar',
      '@radix-ui/react-aspect-ratio@1.1.2': '@radix-ui/react-aspect-ratio',
      '@radix-ui/react-alert-dialog@1.1.6': '@radix-ui/react-alert-dialog',
      '@radix-ui/react-accordion@1.2.3': '@radix-ui/react-accordion',

      '@': path.resolve(__dirname, './src'),
    },
  },

  build: {
    target: 'esnext',
    outDir: 'build',
  },

  server: {
    port: 3000,
    open: true,

    // ✅ 关键:解决 ENOSPC(inotify 限制)
    watch: {
      usePolling: true,
      interval: 1000,
    },
  },
})

注意:

到这里为止,数据集制作工具便可成功启动,但是要正常的结合多模态模型进行识别,让需要进行如下调整:

因为数据集制作过程中需要调用性能较好的多模态大模型进行OCR识别,我的本地是使用vLLM部署的Qwen2-5-VL-72B-Instruct-quantized-w8a8-RedHatAI模型

所以,在启动的后端程序中需要做如下修改:

修改脚本文件data_create/backend/app.py改成对应的模型名称

然后重启后端服务即可。

前端如下使用:

python 复制代码
http://192.168.42.246:8082/v1/chat/completions

如下对应着我在本地部署的多模态大模型启动与测试指令:

python 复制代码
python3 -m vllm.entrypoints.openai.api_server \
    --served-model-name Qwen2_5-VL-7B-Instruct \
    --model /var/lib/gpustack/googosoft_data/Qwen2_5-VL-7B-Instruct \
    --host 0.0.0.0 --port 8082 \
    --tensor-parallel-size 1 \
    --gpu-memory-utilization=0.86 \
    --trust-remote-code \
    --max-model-len 40752
python 复制代码
curl -X POST http://192.168.42.246:8082/v1/chat/completions \
     -H "Content-Type: application/json" \
     -d '{
        "model": "Qwen2_5-VL-7B-Instruct",
        "messages": [
            {"role": "system", "content": "你是一个AI智能助手"},
            {"role": "user", "content": "你是一个厨艺高超的厨师,做一份西湖醋鱼吧,中文回答"}
        ],
        "stream": false
     }'

提示词如下所示:

python 复制代码
你是一个文本分析助手。请从图像中提取发票信息,并以JSON对象形式返回,只包含以下键值对字段:

{
  "发票名称": "",
  "购买方": {
    "名称": "",
    "纳税人识别号": "",
    "地址、电话": "",
    "开户行及账号": ""
  },
  "销售方": {
    "名称": "",
    "纳税人识别号": "",
    "地址、电话": "",
    "开户行及账号": ""
  },
  "发票代码": "",
  "发票号码": "",
  "开票日期": "",
  "校验码": "",
  "金额": "",
  "税额": "",
  "价税合计(大写)": ""
  "价税合计(小写)": ""
}

注意: 仅返回上述键值对内容,内容必须严格对应字段,不要添加任何说明或其他文本。金额请保留原始数字格式,价税合计包含价税合计(大写)与价税合计(小写)。

经过处理后,得到的json文件如下所示:

万分注意:

上述生成的json文件中,关于标签需要是图像的绝对路径,要不在训练过程中找不到图像数据,需要写一个脚本,批量修改下!!!

2、数据集制作

项目的需求是:采用Qwen2-5-VL-72B多模态模型制作数据集,然后用于训练参数级别较为小的多模态模型,可以实现低算力平台或者瑞芯微RK3588边缘端部署

Qwen2-5-VL-72B-Instruct-quantized-w8a8模型启动指令如下:

python 复制代码
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7  python -m vllm.entrypoints.openai.api_server  \
        --served-model-name Qwen2-5-VL-72B-Instruct-quantized-w8a8  \
        --model  /home/data_c/big_models/Qwen2-5-VL-72B-Instruct-quantized-w8a8-RedHatAI     \
        --host 0.0.0.0     \
        --port 9024     \
        --tensor-parallel-size 8   \
        --gpu-memory-utilization=0.85 \
        --trust-remote-code

模型测试:

python 复制代码
curl -X POST http://192.168.8.221:9024/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
        "model": "Qwen2-5-VL-72B-Instruct-quantized-w8a8",
        "messages": [
            {"role": "system", "content": "你是一个AI智能助手"},
            {"role": "user", "content": "请用中文介绍西湖醋鱼的做法"}
        ],
        "stream": false
      }'

修改数据集制作工具后端代码,修改模型名称,并重启后端服务:

然后开始数据集制作:

python 复制代码
http://192.168.8.221:9024/v1/chat/completions
相关推荐
羊城迷鹿7 天前
从LoRA到OFT:Qwen2.5-VL在昇腾910B与4090上的多模态微调实践与踩坑记录
大模型·微调·多模态·qwen·llamafactory·oft
yubin127740862912 天前
llamafactory调试
llamafactory·qwen模型
jjjddfvv24 天前
超级简单启动llamafactory!
windows·python·深度学习·神经网络·微调·audiolm·llamafactory
郭庆汝1 个月前
大模型-微调相关内容
大模型微调·llamafactory
Yeliang Wu2 个月前
LLaMA-Factory 训练方法原理及实践(Ubuntu 22.04)
微调·分布式训练·量化·llamafactory
Yeliang Wu2 个月前
LLaMA-Factory 分布式训练实践
大模型·微调·分布式训练·llamafactory·调优算法
Yeliang Wu2 个月前
从原理到部署:LLaMA Factory 量化实战(Ubuntu 22.04)——PTQ/GPTQ/AWQ 等 9 种方法
大模型·微调·分布式训练·llamafactory·调优算法
Yeliang Wu2 个月前
LLaMA-Factory 加速技术全解析:FlashAttention/Unsloth/Liger Kernel 原理与 Ubuntu22.04 实践指南
微调·分布式训练·llamafactory·调优算法
Yeliang Wu2 个月前
LLaMA-Factory 主流调优算法详解
llamafactory·调优算法