Forge
Forge 是一款专为 Apple Metal 框架设计的神经网络工具包,旨在简化在 iOS 和 macOS 平台上构建深度神经网络的流程。它主要解决了直接调用底层 MPSCNN API 时代码繁琐、数据格式转换困难以及调试复杂等痛点,让开发者能更专注于模型逻辑而非底层细节。
Forge 非常适合需要在苹果生态中进行高性能移动端 AI 开发的工程师和研究人员。如果你追求比 Core ML 更快的推理速度,或者需要实现 MobileNet、SSD 等特定架构,Forge 提供了极佳的解决方案。其核心亮点在于提供了一套简洁的领域特定语言(DSL),允许通过链式调用轻松定义网络层级;同时内置了丰富的数据预处理核(如均值减法、色彩空间转换)及自定义计算核支持。此外,Forge 还配备了实用的调试工具,帮助开发者直观检查 Metal 纹理中的数据内容,确保计算准确性。
需要注意的是,由于作者已停止维护且其依赖的旧版 MPSCNN API 不再被苹果官方支持,建议使用者在评估项目需求时谨慎参考,或将其作为理解 Metal 神经网络底层实现的优秀学习资源。
使用场景
一位 iOS 开发者需要在旧款 iPhone 上部署一个实时的工业缺陷检测应用,要求极低的推理延迟且无法依赖云端服务。
没有 Forge 时
- 数据转换繁琐:开发者必须手动编写大量样板代码,在 Swift 的
[Float]数组与 Metal 所需的MPSImage或MTLTexture之间进行复杂的格式转换。 - 网络构建冗长:使用原生 MPSCNN API 定义卷积、池化等层级时,需要初始化大量描述符对象,代码臃肿且难以直观查看网络结构。
- 调试极其困难:由于 Metal 以特殊编码存储纹理数据,直接检查中间层输出是否正确几乎不可能,排查错误如同“盲人摸象”。
- 缺失关键算子:原生框架缺乏深度卷积(Depth-wise convolution)等移动端必备的高效算子,导致模型运行速度无法满足实时性要求。
- 预处理重复造轮子:每次都需要重新编写均值减去、RGB 转灰度等基础图像预处理内核,浪费开发时间。
使用 Forge 后
- 无缝数据交互:利用 Forge 内置的转换函数,开发者可以直接使用熟悉的 Swift 数组处理数据,底层自动完成与 Metal 纹理的对接。
- 链式简洁建模:通过 Forge 的领域特定语言(DSL),可以用类似
input --> Convolution(...) --> MaxPooling(...)的链式调用清晰定义整个神经网络。 - 可视化调试支持:借助 Forge 提供的调试工具,可以轻松提取并 inspect 纹理内容,快速验证每一层的计算结果是否符合预期。
- 高性能算子即用:直接调用 Forge 扩展的深度卷积等自定义层,在老旧设备上也能获得比 Core ML 更快的推理速度。
- 开箱即用的预处理:直接复用
SubtractMeanColor等现成内核,几分钟内即可完成数据清洗流程,专注于核心算法优化。
Forge 将原本晦涩难懂的底层 Metal 图形编程转化为直观的 Swift 代码,让开发者能在苹果设备上轻松构建并调试高性能的深度学习模型。
运行环境要求
- macOS
- iOS
必需 Apple GPU (支持 Metal),需 A8 处理器或更高版本 (iPhone 6 及以上),不支持 NVIDIA/CUDA
未说明

快速开始
Forge:适用于 Metal 的神经网络工具包
:warning: :warning: :warning: 重要提示: 我已不再维护 Forge。它使用的是较旧版本的 MPSCNN API,而该 API 现已被 Apple 废弃。此外,我认为 Core ML 已经在很大程度上消除了对类似库的需求。不过,在 Metal 中实现的神经网络仍然比 Core ML 更快。如果您正在寻找适用于 iOS 和 macOS 的非常快速的 MobileNet V1、MobileNet V2 和 SSD 实现,请查看我的新源代码库。
Forge 是一套辅助代码集合,旨在让使用 Apple 的 MPSCNN 框架构建深度神经网络变得更加简单。

这个工具能做什么?
Forge 的主要特性:
转换函数。 MPSCNN 对所有内容都使用 MPSImage 和 MTLTexture,并且通常采用 16 位浮点数格式。但您可能更希望使用 Swift 的 [Float] 数组。Forge 提供的转换函数可以让您轻松地处理 Metal 图像和纹理。
便捷的层创建。 减少构建神经网络各层时的样板代码。Forge 的领域特定语言使定义神经网络变得极其简单,例如:
let input = Input()
let output = input
--> Resize(width: 28, height: 28)
--> Convolution(kernel: (5, 5), channels: 20, activation: relu, name: "conv1")
--> MaxPooling(kernel: (2, 2), stride: (2, 2))
--> Convolution(kernel: (5, 5), channels: 50, activation: relu, name: "conv2")
--> MaxPooling(kernel: (2, 2), stride: (2, 2))
--> Dense(neurons: 320, activation: relu, name: "fc1")
--> Dense(neurons: 10, name: "fc2")
--> Softmax()
let model = Model(input: input, output: output)
自定义层。 MPSCNN 仅支持有限数量的层,因此我们添加了一些自定义层:
- 深度可分离卷积
- 通道转置
- 反卷积(即将推出!)
预处理内核。 在数据进入神经网络之前,通常需要进行预处理。Forge 提供了几个实用的预处理内核:
- SubtractMeanColor(减去平均颜色)
- RGB2Gray(RGB 转灰度)
- RGB2BGR(RGB 转 BGR)
自定义计算内核。 许多神经网络需要自定义计算内核,因此 Forge 提供了帮助程序,使编写和启动您自己的内核变得容易。
调试工具。 当您在 Metal 中实现神经网络时,需要确保其计算结果正确。由于 Metal 编码数据的方式,直接检查 MTLTexture 对象的内容并不总是那么容易。Forge 可以在这方面提供帮助。
示例项目。 Forge 自带多个预训练的神经网络,例如 MNIST 数据集上的 LeNet-5、ImageNet 上的 Inception3 以及 MobileNets。
注意: 此库中的许多代码仍处于 实验性 阶段,并可能随时发生变化。请自行承担风险!
iOS 10 和 iOS 11 兼容性
Forge 同时支持 iOS 10 和 iOS 11。
Forge 必须使用 Xcode 9 和 iOS 11 SDK 进行编译。(有一个较旧的版本位于 xcode8 标签下,但已不再维护。)
重要变更:
DepthwiseConvolution 层权重的顺序发生了变化。以前是:
[kernelHeight][kernelWidth][channels]
现在变为:
[channels][kernelHeight][kernelWidth]
这是为了使该层与 MPS 的新型深度可分离卷积兼容。在 iOS 10 上,Forge 将使用自己的 DepthwiseConvolutionKernel;而在 iOS 11 及更高版本中,则使用 MPS 版本(MPSCNNDepthWiseConvolutionDescriptor)。
注意:Forge 目前尚未利用 iOS 11 中 MPS 的所有改进功能,例如加载批归一化参数或通过数据源加载权重的功能。这些功能将在未来的版本中加入。
运行示例!
要查看 Forge 的实际演示效果,请在 Xcode 中打开 Forge.xcworkspace,并在您的设备上运行其中一个示例应用。
您至少需要 Xcode 9 和搭载 A8 处理器(iPhone 6 或更高)且运行 iOS 10 或更高版本的设备。无法针对模拟器进行构建,因为模拟器不支持 Metal。
包含的示例包括:
MNIST
此示例实现了一个非常基础的 LeNet5 类型神经网络,该网络在 MNIST 手写数字识别数据集上进行了训练。
运行该应用,并将摄像头对准一个手写数字(Test Images 文件夹中有一些可用于此目的的图像),应用会告诉您该数字是什么,以及它对该预测的置信度。

左上角的小图显示了网络所看到的内容(这是预处理着色器的输出,该着色器试图增强黑白之间的对比度)。
该项目有两个目标:
- MNIST
- MNIST-DSL
它们执行完全相同的操作,只是第一个是用纯 MPSCNN 代码编写的,而第二个则使用 Forge DSL,因此更容易阅读。
Inception-v3
Google 著名的 Inception 网络 用于图像分类。将您的手机对准某个物体,应用会给出其前 5 名预测:

Inception 示例应用基于 Apple 的示例代码,但我们完全使用 DSL 重写了它。我们使用了他们训练好的参数。感谢 Apple!
YOLO
YOLO 是一种目标检测网络。它可以检测图像中的多个对象,甚至会告诉您它们的位置!

示例应用实现了 Tiny YOLO 网络,其精度不如完整的 YOLO9000 版本,只能检测 20 种不同的物体。
YOLO9000:更好、更快、更强 由 Joseph Redmon 和 Ali Farhadi(2016 年)提出。
MobileNets
MobileNets 示例应用是对论文 MobileNets:用于移动视觉应用的高效卷积神经网络 中网络架构的实现。
它的工作方式类似于 Inception-v3,但速度要快得多。在 iPhone 6s 上,它能够以 20 FPS 的帧率运行,同时能耗仅为中等至较高水平。
Forge 使用了来自 shicai/MobileNet-Caffe 的预训练权重。
如何将 Forge 添加到您自己的项目中
请使用 Xcode 9 或更高版本。
- 将 Forge 文件夹复制到您的项目中。
- 使用 文件 > 添加文件到“YourProject” > Forge.xcodeproj 将 Forge 项目添加到您自己的项目中。
- 将 Products/Forge.framework 拖放到您的项目设置中的 嵌入式二进制文件 部分。
- 在您的代码中
import Forge。
注意:您无法针对模拟器进行构建,只能针对“通用 iOS 设备”或具有 arm64 架构的实际设备进行构建。
如何使用 Forge
单元测试在哪里?
在设备上运行 ForgeTests 应用。
将测试放在单独的应用中的原因是,Metal 在模拟器上无法正常工作,而 Xcode 又无法在设备上运行逻辑测试。真是个两难的境地。
待办事项
Forge 目前正处于积极开发中。以下是已知问题和即将推出的功能列表。
许可证与致谢
Forge 版权归 Matthijs Hollemans 所有,版权年份为 2016–2017 年,并根据 MIT 许可证条款授权使用。
常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。