NeoML 项目介绍
NeoML 是一个端到端的机器学习框架,旨在帮助开发者构建、训练和部署机器学习模型。由 ABBYY 工程师研发,该框架主要用于计算机视觉与自然语言处理任务,包括图像预处理、分类、文档布局分析、光学字符识别(OCR)以及从结构化和非结构化文档中提取数据。
核心功能
- 神经网络:支持超过 100 种不同的层类型。
- 传统机器学习:提供超过 20 种算法,例如分类、回归、聚类等。
- 多平台支持:与 CPU 和 GPU 兼容,推理速度快。
- 支持 ONNX:兼容其他支持 ONNX 格式的框架。
- 多语言支持:支持 Python、C++、Java、Objective-C 等语言。
- 跨平台运行:可在 Windows、Linux、macOS、iOS 和 Android 上运行相同的代码。
构建与安装
支持的平台
NeoML 的完整 C++ 库版本已经在以下平台上测试过:
- Windows 7+ (支持 CPU 和 GPU)
- Ubuntu 14+ (仅支持 CPU)
- macOS 10.11+ (仅支持 CPU)
- iOS 11+ (支持 CPU 和 GPU)
- Android (支持不同版本的 CPU 和 GPU)
此外,Java 和 Objective-C 推理库版本同样经过平台测试,确保其在移动设备上的兼容性。
依赖工具
库使用 CMake 进行构建,推荐版本为 3.18 及以上。为提高 CPU 性能,Windows、Linux 和 macOS 平台上采用 Intel MKL。GPU 处理则可选择搭载 CUDA 或 Vulkan 支持。
入门教程
提供了多种教程帮助用户快速上手使用 NeoML 库,如:
- 简单网络的训练与使用
- 使用梯度提升进行分类
- 使用 k-means 算法进行数据聚类
API 描述
基本原则
- 平台无关性:用户界面与低级数学计算引擎完全分离。
- 运算引擎独立性:每个网络都使用一个数学引擎实例,允许选择 GPU 进行所有计算。
- 多线程支持:数学引擎接口是线程安全的。
- ONNX 支持:可以使用 ONNX 格式与其他框架的模型进行交互。
- 序列化格式:使用自有的二进制格式来保存和加载已训练的模型。
- GPU 支持:可选设置,视系统硬件配置而定。
语言接口
- C++ 接口:包括算法库และ数学引擎的实现。
- Python 模块:详细的文档可帮助用户在 Python 中进行开发。
- Java 和 Objective-C 接口:为 Java、Kotlin 和 iOS 提供推理功能的接口。
许可
NeoML 框架为开源项目,遵循 Apache 2.0 许可协议,由 ABBYY Production LLC 版权所有。
NeoML 是一个全面、强大的机器学习框架,适用于多种复杂的人工智能任务,并且提供广泛的平台支持和语言兼容性,非常适合那些需要跨平台便携性的开发者或企业使用。