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

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