基于Qwen2.5-VL-3B的电路图问答模型构建方案

本文档详细阐述了如何在仅有1000张电路图、缺乏问答对数据集的情况下,通过合成数据、知识蒸馏和检索增强生成(RAG)等技术,训练一个效果良好的电路图问答多模态大模型。


1. 项目概述

目标:微调Qwen2.5-VL-3B模型,使其能够准确理解电路图,并对单选题和填空题形式的问题给出正确答案。

挑战

  • 仅有1000张电路图,无现成的问答对(QA pairs)。
  • 缺乏深度模拟电路专业知识,难以手工构造高质量问题。

核心策略合成数据先行 + 知识蒸馏提效 + RAG增强推理

基础模型Qwen2.5-VL-3B-Instruct 是一个指令微调的多模态视觉语言模型,适用于文档和图表理解任务。


2. 阶段一:构建高质量合成问答数据集

2.1. 利用大模型API生成初步QA对

使用GPT-4V、Claude 3.5 Sonnet或Qwen-VL-72B等强大模型,为每张电路图生成多样化的问答对。

提示词模板(Prompt Template)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
你是一位专业的电子工程师。请仔细分析以下电路图,并根据要求生成有深度的问题和答案。

**任务**:
1. **识别类问题**:识别图中的关键元器件(如电阻、电容、晶体管、运放等),并询问其类型、标号或参数。
2. **功能类问题**:推断电路的整体或局部功能(如放大器、滤波器、稳压器等)。
3. **分析/计算类问题**:基于图中标注的参数(如电阻值、电容值、电源电压),提出一个可以计算或推理的问题(如电流、电压、增益、截止频率等)。
4. **单选/填空格式**:所有问题必须以以下两种格式之一输出:
- **单选题**:`问题:[问题文本] 选项:A. [选项A] B. [选项B] C. [选项C] D. [选项D] 答案:[正确选项字母]`
- **填空题**:`问题:[问题文本,包含一个或多个下划线______] 答案:[填空内容]`

**要求**:
- 问题应清晰、具体,答案应准确无误。
- 为每张图生成至少5个不同类型的问题。
- 如果图中信息不足以回答某个问题,请跳过该类型。

现在,请分析这张电路图:
[在此处插入电路图]

2.2. 数据清洗与验证(修订重点)

由于移除了电路仿真环节,数据验证完全依赖于大模型的交叉验证和规则过滤。以下是详细的验证提示词模板。

验证步骤1:答案正确性验证

使用另一个大模型(如Claude)对生成的QA对进行逐条验证。

提示词模板(Correctness Validation)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
你是一位严谨的电子工程学教授,正在审阅一份电路分析试题。请判断以下问题和答案是否正确。

**电路图**:
[在此处插入原始电路图]

**待验证的问答对**:
{generated_qa_pair}

**你的任务**:
1. 仔细分析电路图。
2. 独立回答该问题。
3. 将你的答案与提供的“答案”进行比较。
4. 输出格式必须为:`判断:[正确/错误] 理由:[简要解释]`

请开始你的审阅。

验证步骤2:问题-答案一致性与格式检查

确保问题和答案在逻辑上一致,且格式符合要求。

提示词模板(Consistency & Format Check)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
你是一个数据质量检查员。请检查以下问答对是否符合指定的数据规范。

**数据规范**:
- 单选题格式必须为:“问题:... 选项:A. ... B. ... C. ... D. ... 答案:X”
- 填空题格式必须为:“问题:...______... 答案:...”
- 答案必须在问题的上下文中是明确且唯一的。

**待检查的问答对**:
{generated_qa_pair}

**你的任务**:
1. 检查格式是否符合规范。
2. 检查答案是否与问题逻辑一致(例如,单选题的答案必须是A、B、C、D中的一个)。
3. 输出格式必须为:`格式:[合规/不合规] 一致性:[一致/不一致] 备注:[具体说明]`

验证步骤3:整体数据集质量评估

对整个数据集进行抽样,评估其多样性和专业性。

提示词模板(Quality Assessment)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
你是一位AI数据集评估专家。以下是从一个电路图问答数据集中随机抽取的10个样本。请对该数据集的整体质量进行评估。

**样本列表**:
1. {qa_sample_1}
2. {qa_sample_2}
...
3. {qa_sample_10}

**评估维度**:
- **多样性**:问题类型是否覆盖了识别、功能、分析等多个方面?
- **专业性**:问题和答案是否体现了专业的电路知识?
- **难度梯度**:是否包含了从简单到复杂的不同难度问题?
- **错误率**:根据你的判断,样本中明显错误的比例大概是多少?

**你的任务**:
请根据以上维度,给出一份简明的评估报告,并给出是否可以用于模型微调的建议。

通过以上三步验证流程,可以有效过滤掉大部分低质量或错误的合成数据,确保用于微调的数据集具有较高的可靠性。研究表明,经过严格验证的合成数据集训练出的模型,其性能远优于使用未经验证数据训练的模型 。


3. 阶段二:模型微调与知识蒸馏

3.1. 使用LLaMA-Factory进行LoRA微调

LLaMA-Factory是一个高效的微调框架,已集成对Qwen2-VL系列模型的支持,可用于监督微调(SFT)。

数据格式准备

将合成数据集转换为LLaMA-Factory所需的JSON格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[
{
"images": ["./data/circuit_001.png"],
"messages": [
{
"role": "user",
"content": "<image>问题:图中运放U1的正相输入端连接的是哪个电阻? 选项:A. R1 B. R2 C. R3 D. R4"
},
{
"role": "assistant",
"content": "答案:A"
}
]
},
{
"images": ["./data/circuit_002.png"],
"messages": [
{
"role": "user",
"content": "<image>问题:该RC低通滤波器的截止频率约为______Hz。(π取3.14)"
},
{
"role": "assistant",
"content": "答案:1592"
}
]
}
]

微调命令示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 安装 LLaMA Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -r requirements.txt

# 启动微调 (示例参数)
CUDA_VISIBLE_DEVICES=0 llamafactory-cli train \
--stage sft \
--model_name_or_path Qwen/Qwen2.5-VL-3B-Instruct \
--do_train \
--dataset your_circuit_qa_dataset \
--template qwen2_vl \
--finetuning_type lora \
--lora_target qwen2_vl \
--output_dir ./output_qwen2.5vl_circuit_lora \
--per_device_train_batch_size 1 \
--gradient_accumulation_steps 4 \
--lr_scheduler_type cosine \
--logging_steps 10 \
--save_steps 1000 \
--learning_rate 5e-5 \
--num_train_epochs 3.0 \
--plot_loss \
--fp16

此过程利用LoRA技术,仅训练少量参数,大大降低了硬件需求。

3.2. 知识蒸馏(Knowledge Distillation)

为了提升微调后模型的专业深度,引入知识蒸馏。

蒸馏流程

  1. 选择教师模型(Teacher):选用GPT-4VQwen2.5-VL-72B作为教师模型。
  2. 生成软标签(Soft Targets)
    • 对于每张电路图和一个开放式问题(如“请详细分析此电路的工作原理”),让教师模型生成一个详尽、准确的回答。
    • 提示词:“你是一位资深模拟电路设计专家。请对以下电路图进行深入、专业的分析,包括其工作原理、关键元器件的作用、性能参数估算等。”
  3. 蒸馏训练
    • 将学生模型(即上一步微调好的qwen2.5-vl-3b-lora)的输出与教师模型的“软标签”进行对齐。
    • 损失函数通常为交叉熵损失,目标是让学生模型的输出分布尽可能接近教师模型的输出分布。
    • 可以使用Transformers库或LLaMA-Factory的自定义训练脚本来实现此过程。

通过蒸馏,学生模型能够学习到教师模型蕴含的更深层次的电路知识和推理能力。


4. 阶段三:部署多模态RAG(MM-RAG)系统

即使模型经过微调和蒸馏,其知识仍是静态的。RAG可以在推理时动态注入外部知识,显著提升准确性和可解释性。

4.1. 构建电路知识库

  • 数据来源
    • 经典教材:《The Art of Electronics》, 《Microelectronic Circuits》等。
    • 元器件手册:TI, Analog Devices, ON Semiconductor等官网的PDF数据手册。
    • 在线资源:All About Circuits, Electronics Tutorials等网站的文章。
  • 数据处理
    • 使用UnstructuredPyPDF2等工具解析PDF。
    • 将长文档分块(chunking),每块约512个token。
    • 使用文本嵌入模型(如text-embedding-3-large)为每个文本块生成向量,并存入向量数据库(如ChromaMilvus)。

4.2. 构建多模态RAG推理流程

完整的MM-RAG系统架构如下:

  1. 用户输入:一张电路图 + 一个问题。
  2. 多模态查询理解:将用户的问题和电路图一起输入到一个多模态嵌入模型(可以是微调后的qwen2.5-vl-3b本身,或专用的CLIP-like模型)中,生成一个联合的查询向量。
  3. 混合检索
    • 文本检索:用查询向量在文本向量库中检索最相关的知识片段。
    • (可选)图像检索:如果有一个“电路图-描述”数据库,也可以检索视觉上相似的电路及其分析报告。
  4. 上下文增强:将检索到的Top-K个知识片段拼接成上下文。
  5. 最终生成:将原始问题、电路图和检索到的上下文一起输入给最终的qwen2.5-vl-3b模型,生成答案。

最终推理提示词模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
你是一个专业的电路分析AI助手。你的回答必须基于以下提供的权威参考资料,并结合对电路图的理解。

**参考资料**:
{retrieved_context_from_knowledge_base}

**你的任务**:
请根据以上参考资料和你对下方电路图的分析,回答用户的问题。

**电路图**:
<image>

**用户问题**:
{user_question}

**回答**:

通过这种方式,模型的回答不仅基于其内部参数,还基于实时检索到的、可验证的外部知识,极大地提高了专业问答的可靠性。


5. 总结

本方案提供了一条在数据和专业知识受限的情况下,构建领域专用多模态模型的可行路径。通过自动化数据合成、高效的LoRA微调、知识蒸馏以及强大的RAG增强,有望在Qwen2.5-VL-3B的基础上,打造出一个性能优异的电路图问答系统。


https://alleyf.github.io/2025/12/a5c88954cd00.html
作者
alleyf
发布于
2025年12月21日
许可协议