一声棒喝,本不立文字
偏要著録,已是二义

huggingface-blog

MachinaCheck:基于 AMD MI300X 构建 Multi-Agent CNC 可制造性系统

MachinaCheck: Building a Multi-Agent CNC Manufacturability System on AMD MI300X

二〇二六年五月十日 · 英文原文

MachinaCheck 是 Syed Muhammad Sarmad 和 Sabari Doss R 在 2026 年 AMD Developer Hackathon 构建的 CNC 可制造性分析系统。其用 cadquery 解析 STEP 几何,结合 Qwen 2.5 7B、LangChain、FastAPI 和 vLLM,在 AMD MI300X 本地运行多 Agent pipeline,约 25 至 40 秒生成报告,STEP 数据不外传。

](https://huggingface.co/sarmaddev)

构建于 lablab.ai 的 AMD Developer Hackathon — 2026 年 5 月


我们解决的问题

走进任何一家小型 CNC 机加工车间,问经理他们如何决定是否承接客户订单。

答案几乎总是一样:他们打印图纸,手工读取每一个尺寸,在车间里逐一检查有哪些刀具可用,估算自己的设备是否能达到所需公差,然后把备注写在夹板上。整个过程每张图纸需要 30 到 60 分钟。对于每周收到 10 到 20 个 RFQ 的繁忙车间来说,仅可制造性分析就要耗费 5 到 20 小时的熟练管理人员时间。

有时他们会判断失误。接下一个订单,开始生产后,做到一半才发现没有合适的丝锥,或者铣床无法保证某个关键特征的公差。零件报废,客户不满意,机床时间也被浪费。

我们构建 MachinaCheck,就是为了彻底消除这个问题。


MachinaCheck 的功能

MachinaCheck 是一个多 Agent AI 系统。你上传一个 STEP 文件——这是客户发送给机加工车间的标准 CAD 格式——再提供三个简单输入:材料类型、所需公差以及任何螺纹规格。30 秒后,你会得到一份完整的可制造性报告,明确告诉你能否加工该零件、需要哪些刀具、缺少什么,以及在开始生产前应采取哪些行动。

无需手工读图。无需在车间来回检查。无需猜测。


为什么基于 AMD MI300X 构建

在解释架构之前,这一点值得单独说明,因为它不只是技术选择,而是业务要求。

制造业客户会签署 NDA。他们的 STEP 文件包含专有几何数据,代表多年工程工作和数百万美元的研发投入。医疗设备上的孔位图案,或航空航天部件上的型腔几何,都是机密知识产权。

把这些数据发送到 OpenAI、Anthropic 或任何商业 API endpoint,都是对保密义务的违反。没有例外。

AMD Instinct MI300X 完全改变了这一点。凭借 192GB HBM3 VRAM 和 5.3 TB/s 内存带宽,我们可以在本地完整运行 Qwen 2.5 7B Instruct。没有数据离开车间基础设施。没有 STEP 几何数据传输到第三方服务器。客户的 IP 留在它应在的位置。

这才是制造业语境下“privacy by design”的实际含义——不是一个勾选项,而是一项根本性的架构决策,使产品能够服务真实的企业客户。


Agent 架构

MachinaCheck 使用由 LangChain 构建、通过 FastAPI 编排的五组件 pipeline。

组件 1 — STEP 文件解析器(纯 Python,无 LLM)

我们使用 cadquery,这是一个基于 OpenCASCADE 构建的 Python 库,用于直接解析 STEP 文件。这使我们能够进行数学上精确的特征提取:

这种提取是 100% 准确的,因为它直接读取数学几何数据——没有 vision model,没有 OCR,也没有近似。一个 Ø6.0mm 孔在输出中就是精确的 Ø6.0mm。

def extract_features(step_file_path: str) -> dict:
    model = cq.importers.importStep(step_file_path)
    shape = model.val()
    bb = shape.BoundingBox()
    
    holes = {}
    for face in model.faces().vals():
        adaptor = BRepAdaptor_Surface(face.wrapped)
        if adaptor.GetType() == GeomAbs_Cylinder:
            radius = adaptor.Cylinder().Radius()
            diameter = round(radius * 2, 3)
            holes[diameter] = holes.get(diameter, 0) + 1
    
    return {
        "bounding_box_mm": {"length": round(bb.xlen, 3), ...},
        "holes": [...],
        "flat_surfaces_count": len(flat_surfaces),
    }

Agent 1 — 工序分类器(Qwen 2.5 7B)

提取出的几何数据加上用户输入——材料、公差、螺纹——会传递给通过 vLLM 在 AMD MI300X 上运行的 Qwen 2.5 7B。

这个 agent 回答:"制造该零件需要哪些 CNC 工序和刀具?"

它会应用制造领域知识:Steel 304 需要 carbide tooling。圆柱孔需要 drill,而不是 end mill。±0.005mm 的公差需要 precision machine,而不是 standard mill。

Agent 2 — 刀具匹配器(纯 Python)

这个 agent 不使用 LLM。它查询车间的刀具库存数据库,并检查每项所需刀具是否可用。纯确定性逻辑——数据库查找、比较、返回结果。数据库查询不需要 LLM,在这里使用 LLM 只会增加不必要的延迟和 hallucination 风险。

Agent 3 — 可制造性决策 Agent(Qwen 2.5 7B)

匹配结果会返回给 Qwen。该 agent 对整体情况进行推理,并生成结构化决策:

{
  "decision": "CONDITIONAL",
  "confidence": "HIGH",
  "reason": "All tools available except M10x1.5 tap",
  "action_items": ["Purchase M10x1.5 tap ($15)"],
  "risk_flags": ["Verify spindle speed for Steel 304"],
  "estimated_setup_hours": 2.5
}

Agent 4 — 报告生成器(Qwen 2.5 7B)

最后一个 agent 将所有信息综合成一份专业的可制造性报告,包括总体状态、执行摘要、零件分析、刀具状态、机床状态和最终建议。


AMD 技术栈

通过 ROCm 和 vLLM 在 AMD MI300X 上运行 Qwen 2.5 7B 很直接。AMD Developer Cloud 上的 vLLM Quick Start 镜像已经预配置好所有内容。

python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen2.5-7B-Instruct \
  --host 0.0.0.0 \
  --port 8000 \
  --dtype float16 \
  --gpu-memory-utilization 0.5

使用 gpu-memory-utilization 0.5 时,我们大约使用可用 192GB 中的 96GB,仍有充足余量。我们的 agent 调用平均 inference 延迟低于 3 秒。

LangChain 通过兼容 OpenAI 的 endpoint 连接到 vLLM:

from langchain_community.llms import VLLMOpenAI

llm = VLLMOpenAI(
    openai_api_base="http://localhost:8000/v1",
    openai_api_key="EMPTY",
    model_name="Qwen/Qwen2.5-7B-Instruct",
    temperature=0.1,
    max_tokens=1000
)

结果

使用来自 GrabCAD 的真实 STEP 文件进行测试:


我们的经验

只在需要推理的地方使用 LLM。 Agent 2(刀具匹配)是纯 Python。把 LLM 放在那里会更慢、更贵,也更不可靠。数据库查找的正确工具就是数据库查询。

面向结构化输出的 prompt engineering 很重要。 让 Qwen 稳定输出有效 JSON,需要在 prompt 中设置仔细的规则——明确说明圆柱孔需要 drill 而不是 end mill,直径必须精确匹配,只有指定螺纹时才会出现 tap。

AMD MI300X 非常适合这个用例。 192GB VRAM 意味着如有需要,我们可以运行大得多的模型。在生产部署中,Qwen 2.5 72B 可以轻松容纳,并提供明显更好的推理质量。


试用

上传任意 STEP 文件,查看完整 pipeline 的运行效果。


由 Syed Muhammad Sarmad 和 Sabari Doss R 于 2026 年 5 月在 AMD Developer Hackathon 构建。

技术栈:Qwen 2.5 7B · AMD Instinct MI300X · ROCm · vLLM · LangChain · cadquery · FastAPI · Next.js · Hugging Face Spaces

译自 huggingface-blog · 录于 二〇二六年五月十日