<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zyaisoft 技术博客</title><link>https://www.zyaisoft.cn/blog/</link><description>Recent content on Zyaisoft 技术博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 20 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.zyaisoft.cn/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>把工程图纸的零件表读准：一次 8B 视觉大模型 LoRA 微调的完整复盘</title><link>https://www.zyaisoft.cn/blog/posts/lora-finetune-draw2bom/</link><pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate><guid>https://www.zyaisoft.cn/blog/posts/lora-finetune-draw2bom/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>这篇写给两类人。&lt;/strong> 想了解「这件事对我们有什么价值」的读者，读每节开头带 📌 的段落就够了；想看工程细节的，往下读即可。全文所有数字都来自真实训练记录与评测报告，&lt;strong>包括对我们不利的那些&lt;/strong>。&lt;/p>
&lt;/blockquote>
&lt;h2 id="-先说结论">📌 先说结论&lt;/h2>
&lt;p>我们用 LoRA 微调了一个 8B 视觉语言模型（Qwen3-VL-8B-Instruct），让它把工程图纸里的零件明细表转成结构化 JSON。两轮训练（含第一轮规则错误的「学费」），算力按云端按需实例、以分钟计量，开销可控。&lt;/p>
&lt;p>结果是：&lt;strong>零件号、名称、规格、材料、数量五个字段，在合成留出集上从「基本读不对」变成「31 行全对」&lt;/strong>；描述文本的保真度从 0.51 提升到 0.9971，&lt;strong>超过了未微调的基础模型&lt;/strong>。&lt;/p>
&lt;p>但同一篇报告里也写着三件我们必须主动说出来的事：&lt;/p>
&lt;ol>
&lt;li>第一轮的 &lt;code>train_loss&lt;/code> 低到 0.018，看起来完美无缺，&lt;strong>实际上模型学错了&lt;/strong>——根因是我们数据脚本里的一行逗号切分规则。&lt;/li>
&lt;li>后来做数据审计时发现，训练集和留出集有 &lt;strong>2 处字节级重复&lt;/strong>。因此上面那些漂亮数字&lt;strong>已从「独立准确率」降级为「历史诊断」&lt;/strong>，不再用于对外宣传。&lt;/li>
&lt;li>视觉塔是冻结的，模型只学了「怎么把图变成 JSON」，&lt;strong>没有学「怎么看图」&lt;/strong>。&lt;/li>
&lt;/ol>
&lt;p>如果一个团队只给你看第一条，不给后两条，那份报告不值得信。&lt;/p>
&lt;hr>
&lt;h2 id="一我们要解决的是什么问题">一、我们要解决的是什么问题&lt;/h2>
&lt;p>离散制造企业（机加工、模具、钣金、3D 打印）拿到客户图纸后，第一件事是拆零件明细表：一行行读出零件号、名称、规格、材料、数量，再拿去核价、报价。一张 A3 图纸的明细栏动辄几十行，人工录入一张要 20–40 分钟，且极易出错。&lt;/p>
&lt;p>传统做法是 OCR 识字 + 规则拼结构。问题是工程图纸的版式千差万别：跨页多栏、合并单元格、竖长表、扫描歪斜，规则写到最后是一坨补丁。&lt;/p>
&lt;p>我们的判断是：&lt;strong>这一环应该交给视觉语言模型，但不该交给通用大模型的 zero-shot。&lt;/strong>&lt;/p>
&lt;p class="fig">&lt;img src="https://www.zyaisoft.cn/blog/blog/img/lora-finetune/fig-pipeline.png" alt="图 1 · 智图引擎的流水线：大模型只负责其中一环" loading="lazy">&lt;/p>
&lt;p>一张图纸从上传到产出 BOM，中间有六步。大模型只负责第五步——把「定位好的那一小块图」变成「结构正确的 JSON」。前四步是传统计算机视觉，最后一步是规则与工程计算。&lt;/p>
&lt;p>这个划分很重要，因为它决定了微调的价值怎么衡量：&lt;strong>不是「模型变强了多少」，而是「这一环变准了多少」。&lt;/strong>&lt;/p>
&lt;h3 id="为什么不让通用大模型直接读整页">为什么不让通用大模型直接读整页&lt;/h3>
&lt;p>我们做过对照：基础模型 zero-shot 确实能认出零件，但它把零件号塞进 &lt;code>spec&lt;/code> 字段、把图号塞进 &lt;code>item_no&lt;/code> 字段——&lt;strong>内容读对了，位置放错了&lt;/strong>，在下游流程里等于零分。而它在「描述保真度」上反而很强，因为它会整段照抄。&lt;/p>
&lt;p>这正是值得微调的典型形态：&lt;strong>模型不缺能力，缺的是对我们 schema 的服从。&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="二平台与硬件卡在-28-gib-这道门槛上">二、平台与硬件：卡在 28 GiB 这道门槛上&lt;/h2>
&lt;p>选卡的理由不是「越大越好」，而是一道硬门槛：&lt;strong>8B 模型做 LoRA + bf16，实测需要约 28 GiB 显存。&lt;/strong>&lt;/p></description></item></channel></rss>