neoml

GitHub
797 126 较难 1 次阅读 3周前Apache-2.0开发框架
AI 解读 由 AI 自动生成,仅供参考

NeoML 是一个功能全面的机器学习框架,旨在帮助开发者轻松构建、训练并部署从传统算法到深度学习的各类模型。它有效解决了在实际项目中需要同时处理多种算法类型、兼顾不同开发语言以及跨越多个操作系统(如 Windows、Linux、macOS、iOS 和 Android)进行部署的复杂难题,让同一套代码逻辑能在云端服务器与移动端设备间无缝运行。

这款工具特别适合软件工程师、算法研究人员以及需要在边缘设备上落地 AI 应用的技术团队使用。无论是从事计算机视觉、自然语言处理,还是文档分析与 OCR 任务,NeoML 都能提供强有力的支持。

其核心技术亮点在于极高的灵活性与性能:不仅内置了超过 100 种神经网络层和 20 多种传统机器学习算法,还全面支持 CPU 与 GPU 加速推理。NeoML 兼容 ONNX 标准,方便模型互通,并提供 Python、C++、Java 及 Objective-C 等多种语言接口。值得一提的是,它在移动端优化方面表现卓越,能够利用 Vulkan 或 CUDA 技术在手机和平板上实现高效的本地推理,是打造跨平台智能应用的理想选择。

使用场景

某金融科技公司团队正在开发一款移动端票据识别应用,需要在 iOS 和 Android 设备上实时提取发票关键信息并分类。

没有 neoml 时

  • 多端维护成本高:算法团队用 Python 训练模型,但移动端需分别用 CoreML 和 TFLite 重写推理代码,导致安卓与 iOS 版本功能更新不同步。
  • 混合算法难以整合:业务既需要深度学习做 OCR 文字识别,又需要传统聚类算法处理异常数据,不得不集成多个独立库,造成安装包体积臃肿。
  • 硬件加速适配复杂:为了在旧款手机上流畅运行,需手动针对不同芯片编写 CPU/GPU 切换逻辑,开发周期被大量底层优化工作占据。
  • 模型部署链路断裂:从实验环境到生产环境的格式转换频繁出错,且缺乏统一的序列化标准,导致线上模型版本管理混乱。

使用 neoml 后

  • 一次编写全平台运行:利用 neoml 的跨平台特性,团队用同一套 C++ 核心代码同时部署到 Windows 服务器、iOS 及 Android 端,确保了多端逻辑严格一致。
  • 统一框架支持混合建模:在一个项目中直接调用 neoml 内置的 100+ 神经网络层和 20+ 传统机器学习算法,无缝串联 OCR 识别与异常检测流程,显著减小了应用体积。
  • 自动适配计算后端:neoml 自动根据设备能力切换 Intel MKL、CUDA 或 Vulkan 加速,无需人工干预即可在低端安卓机上实现毫秒级推理响应。
  • 端到端无缝交付:支持 ONNX 格式及统一的序列化机制,模型从训练到移动端加载全程无损,大幅降低了部署出错率。

neoml 通过“一套代码、多种算法、全端通用”的能力,彻底消除了移动端 AI 落地中的碎片化难题。

运行环境要求

操作系统
  • Windows
  • Linux
  • macOS
GPU
  • 非必需
  • Windows/Linux 训练和推理需 NVIDIA GPU (CUDA 11.2 upd. 1)
  • Android 推理需支持 Vulkan 1.0+ 的设备
  • iOS 需 Apple A7+ GPU
  • Linux/macOS 桌面端暂不支持 GPU 处理
  • 未说明具体显存大小
内存

未说明

依赖
notes该框架支持 C++、Python、Java 和 Objective-C。完整 C++ 库支持 Windows 7+/Ubuntu 14+/macOS 10.11+;移动端支持 iOS 11+ 和 Android 5.0+ (CPU) / 7.0+ (GPU)。注意:NeoML 支持导入 ONNX 模型,但不支持将训练好的模型导出为 ONNX 格式。数学引擎(Math Engine)在线程间安全,但神经网络实例本身不是线程安全的。
python未说明
CMake >= 3.18
Intel MKL (可选,用于 CPU 加速)
CUDA 11.2 upd. 1 (可选,用于 Windows/Linux GPU)
Vulkan SDK >= 1.1.130 (可选,用于 Windows/Linux/Android GPU)
Google Test
Google Protocol Buffers
xbyak
neoml hero image

快速开始

NeoML

桌面版构建状态 Python构建 iOS构建 Android构建 文档状态

NeoML 是一个端到端的机器学习框架,允许您构建、训练和部署机器学习模型。该框架由 ABBYY 的工程师用于计算机视觉和自然语言处理任务,包括图像预处理、分类、文档布局分析、OCR 以及从结构化和非结构化文档中提取数据。

主要特性:

  • 支持超过 100 种层类型的神经网络
  • 传统机器学习:20 多种算法(分类、回归、聚类等)
  • 支持 CPU 和 GPU,推理速度快
  • ONNX 支持
  • 支持的语言:Python、C++、Java、Objective-C
  • 跨平台:相同的代码可以在 Windows、Linux、macOS、iOS 和 Android 上运行

目录

构建与安装

支持的平台

完整版 C++ 库已在以下平台上测试过:

目标操作系统 编译器 架构
Windows 7 及以上(CPU 和 GPU) MSVC 2019 及以上 x86, x86_64
Ubuntu 14 及以上(CPU) gcc 5.4 及以上 x86_64
MacOS 10.11 及以上(CPU) Apple clang 12 及以上 arm64, x86_64
iOS 11 及以上(CPU、GPU) Apple clang 12 及以上 arm64-v8a, x86_64
Android 5.0 及以上(CPU),Android 7.0 及以上(GPU) clang 7 及以上 armeabi-v7a, arm64-v8a, x86, x86_64

推理版 Java 和 Objective-C 库已在以下平台上测试过:

目标操作系统 编译器 架构
iOS 11 及以上(CPU、GPU) Apple clang 12 及以上 arm64-v8a, x86_64
Android 5.0 及以上(CPU),Android 7.0 及以上(GPU) clang 7 及以上 armeabi-v7a, arm64-v8a, x86, x86_64

第三方依赖

该库使用 CMake 构建(推荐版本 3.18 及以上)。

为了在 Windows、Linux 和 macOS 上获得最佳的 CPU 性能,我们使用 Intel MKL

在 GPU 上进行计算时,您可以选择在 Windows 或 Linux 上使用 CUDA(版本 11.2 upd.1),或在 Windows、Linux 或 Android 上使用 Vulkan(版本 1.1.130 及以上)。

我们还使用 Google Test 进行测试,并使用 Google Protocol Buffers 来处理 ONNX 模型格式。

为了加速 x86_64 处理器上的某些卷积操作,我们使用非常高效的 JIT 代码生成器 xbyak

构建功能齐全的 C++ 版本

有关如何为不同平台构建 C++ 库版本的说明,请参阅 此处

构建适用于 Java 和 Objective-C 的推理版本

有关如何构建仅用于运行已训练神经网络的 Java 和 Objective-C 版本的说明,请参阅 此处

快速入门

几个带有示例代码的教程将帮助您开始使用该库:

API 描述

基本原则

该库在设计时遵循以下原则:

平台无关性

用户界面与由数学引擎实现的底层计算完全分离。

您只需在程序启动时指定用于计算的数学引擎类型。此外,您还可以选择根据检测到的设备配置自动选择数学引擎。

无论您选择哪种数学引擎,您的机器学习代码其余部分都将保持不变。

数学引擎独立性

每个神经网络仅使用一个数学引擎实例,并且其所有层都必须使用相同的数学引擎创建。如果您选择了 GPU 数学引擎,则所有计算都将由 GPU 完成。这意味着您不能为“轻量级”计算(如向量相加)使用 CPU,而为“重量级”计算(如矩阵乘法)使用 GPU。我们引入这一限制是为了避免设备之间不必要的同步和数据交换。

多线程支持

数学引擎接口是线程安全的;同一个实例可以在不同的网络和不同的线程中使用。

需要注意的是,这可能会带来一定的同步开销。

然而,神经网络实现并非线程安全;网络只能在一个线程中运行。

ONNX 支持

NeoML 库也可以处理由其他框架创建的模型,只要这些模型支持 ONNX 格式即可。请参阅 导入 API 的说明。不过,您无法将 NeoML 训练的模型导出为 ONNX 格式。

序列化格式

该库使用自定义的二进制格式(由 CArchiveCArchiveFile 实现)来保存和加载训练好的模型。

GPU 支持

在 GPU 上进行计算通常可以显著提升数学运算的性能。NeoML 库在模型训练和推理过程中均可使用 GPU。此功能为可选设置,具体取决于您的硬件和软件环境。

要在 GPU 上运行,该库需要满足以下条件:

  • Windows:支持 CUDA® 11.2 upd. 1 的 NVIDIA® GPU 显卡。
  • iOS:Apple A7 及以上型号的 GPU。
  • Android:支持 Vulkan 1.0 的设备。
  • Linux/macOS:目前尚不支持 GPU 计算。

FineObj

NeoML 库源自 ABBYY 的内部基础设施。出于各种原因,ABBYY 使用名为 FineObj 的跨平台框架。因此,开源版本中使用了该框架的一些基础组件。请参阅 通用类说明

C++ 接口

NeoML 包含两个 C++ 库:

算法库 NeoML

该库提供了实现各种高级算法的 C++ 对象。它由以下几个部分组成:

NeoMathEngine

用于计算的数学引擎是一个独立的模块,实现了算法库中使用的底层数学函数。用户也可以直接调用这些函数,但通常情况下并不需要。

该模块针对不同平台有不同的实现方式,其中特别包括一个利用 GPU 进行计算的实现。

数学引擎还是一组 C++ 接口,详细说明请参见 此处

Python 模块

Python 模块的详细文档可在 readthedocs.io 上找到。

Java 接口

为了在 Java 和 Kotlin 中使用该库的推理版本,我们提供了 Java 接口

Objective-C 接口

为了在 Swift 和 Objective-C 中使用该库的推理版本,我们提供了 Objective-C 接口

许可证

版权所有 © 2016–2020 ABBYY Production LLC。根据 Apache License, Version 2.0 许可。请参阅 许可证文件

版本历史

NeoML-master_2.0.5.02021/06/22
NeoML-master_1.0.1.02020/06/14

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

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 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架