MachinaCheck 在 AMD MI300X 上自动化 CNC 可制造性检查

Hugging Face Blog··作者 Hugging Face Blog

关键信息

该流程使用 cadquery 和 OpenCASCADE 直接解析 STEP 几何体,提取圆柱孔、平面、倒角、圆角、包围盒、体积和表面积,不依赖视觉模型或 OCR。文中还提到,这些几何信息会结合制造领域知识,例如 304 不锈钢需要硬质合金刀具,以及极小公差需要更高精度的机床。

资讯摘要

文章将 MachinaCheck 描述为一个用于自动化 CNC 机加工车间可制造性检查的多智能体 AI 系统。它首先指出一个普遍痛点:车间经理通常要把客户图纸打印出来,手工逐项查看尺寸,对照现有刀具和机床能力,并在纸上做记录;这一过程每张图纸往往需要 30 到 60 分钟。对于每周收到 10 到 20 个 RFQ 的繁忙车间来说,这意味着仅可行性分析就要消耗 5 到 20 小时熟练管理者时间。该系统的目标是同时降低时间成本,并减少错误接单、后续发现无法加工或加工代价过高的风险。文章还强调,这不仅是效率问题,也是数据安全问题,因为客户的 STEP 文件通常包含受 NDA 保护的机密几何信息。

作者认为把这些文件发送到 OpenAI、Anthropic 或其他商业 API 会构成保密违规,因此选择了基于 AMD Instinct MI300X 的本地部署方案。在这套硬件上,Qwen 2.5 7B Instruct 通过 vLLM 在本地运行,从而把 STEP 几何限制在工厂内部。MachinaCheck 使用 LangChain 和 FastAPI 构建了一个五组件流水线,并借助 cadquery 和 OpenCASCADE 直接解析 STEP 文件,提取孔、平面、倒角、圆角、包围盒尺寸、体积和表面积等精确几何特征。随后,这些几何信息与材料、公差和螺纹规格等用户输入一起,用来判断需要哪些 CNC 工序和刀具,以及在正式生产前还缺少哪些能力。

MachinaCheck 在 AMD MI300X 上自动化 CNC 可制造性检查

资讯正文

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

答案几乎总是一样:他们把图纸打印出来,逐个手工读取每一个尺寸,走遍车间查看有哪些刀具可用,估算机器是否能够达到所需公差,然后把笔记写在夹板上。整个过程每张图纸要花 30 到 60 分钟。对于一家每周收到 10 到 20 个 RFQ 的忙碌车间来说,仅仅是可制造性分析就要耗费 5 到 20 个小时的熟练经理时间。

有时他们会判断失误。他们接下一个订单,开始生产,然后在中途才发现自己没有合适的丝锥,或者他们的铣床无法在某个关键特征上保持公差。零件就报废了。客户不满意。机床时间也白白浪费了。

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

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

不需要手工读图。不需要在车间里到处查看。不需要猜测。

在解释架构之前,这一点值得单独成段,因为它不仅是技术选择,更是业务要求。

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

把这些数据发送到 OpenAI、Anthropic,或者任何商业 API 端点,都是对保密性的违反。毫无疑问。

AMD Instinct MI300X 完全改变了这一局面。凭借 192GB HBM3 VRAM 和 5.3 TB/s 的内存带宽,我们将 Qwen 2.5 7B Instruct 完全在本地部署运行。数据不会离开车间基础设施。STEP 几何不会传输到第三方服务器。客户的 IP 会待在它该待的地方。

这才是制造场景里“隐私内建于设计之中”的真正含义——不是一个勾选框,而是一个决定产品能否真正面向企业客户落地的根本性架构选择。

MachinaCheck 使用一个由 LangChain 构建、通过 FastAPI 编排的五组件流水线。

我们使用 cadquery——一个建立在 OpenCASCADE 之上的 Python 库——直接解析 STEP 文件。这让我们能够进行数学上精确的特征提取:

- 所有圆柱孔及其直径和深度

- 平面及其面积

- 倒角和圆角

- 外接包围盒尺寸

- 总体积和表面积

这种提取是 100% 准确的,因为它直接读取的是数学几何——没有视觉模型,没有 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),

}

提取出的几何信息以及用户输入——材料、公差、螺纹——被传递给在 AMD MI300X 上通过 vLLM 运行的 Qwen 2.5 7B。

该代理回答:“制造这个零件需要哪些 CNC 操作和刀具?”

它会应用制造领域知识:304 钢需要硬质合金刀具。圆柱形孔需要钻头,而不是立铣刀。±0.005mm 的公差要求精密机床,而不是标准铣床。

这个代理不使用 LLM。它查询车间的刀具库存数据库,并将每一项所需刀具与现有库存逐一比对。完全确定性的逻辑——数据库查询、比较、输出结果。数据库查询不需要 LLM,把 LLM 用在这里只会增加不必要的延迟和幻觉风险。

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

{

"decision": "CONDITIONAL",

"confidence": "HIGH",

"reason": "除 M10x1.5 丝锥外,所有刀具均可用",

"action_items": ["采购 M10x1.5 丝锥(15 美元)"],

"risk_flags": ["验证 Steel 304 的主轴转速"],

"estimated_setup_hours": 2.5

最终的代理会将所有内容综合起来,生成一份专业的可制造性报告,其中包含总体状态、执行摘要、零件分析、刀具状态、机床状态以及最终建议。

在 AMD MI300X 上通过 ROCm 和 vLLM 运行 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,仍然留有充足余量。我们的代理调用推理延迟平均低于 3 秒。

LangChain 通过兼容 OpenAI 的端点连接到 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 文件进行测试:

- 特征提取:对于多达 50 个特征的零件,耗时低于 1 秒

- 完整流水线(全部 4 个代理):端到端 25 到 40 秒

- 决策准确性:在所有测试零件上都给出了正确的可制造性评估

- 隐私:STEP 几何数据未向外部传输任何字节

只在需要推理的地方使用 LLM。代理 2(刀具匹配)是纯 Python。如果在这里也放入 LLM,速度会更慢、成本更高,而且可靠性更差。做数据库查询,最合适的工具就是数据库查询。

结构化输出的提示词工程很重要。要让 Qwen 可靠地输出有效的 JSON,需要在提示中设定细致的规则——明确指出圆柱形孔必须使用钻头而不是立铣刀,直径必须完全一致,而只有在指定了螺纹时才会出现丝锥。

AMD MI300X 在这个用例中确实令人印象深刻。192GB 的 VRAM 意味着如果有需要,我们可以运行更大的模型。对于生产部署,Qwen 2.5 72B 可以轻松适配,并提供明显更好的推理质量。

HF Space: huggingface.co/spaces/lablab-ai-amd-developer-hackathon/MachinaCheck

GitHub: github.com/SyedMuhammadSarmad/Manufacturing-Agent

上传任意 STEP 文件即可查看完整流水线的实际运行效果。

由 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

来源与参考

  1. 原始链接
  2. MachinaCheck: Building a Multi-Agent CNC Manufacturability System on AMD MI300X

收录于 2026-05-11