Introduction to NeoML
NeoML is a comprehensive machine learning framework developed to facilitate the creation, training, and deployment of machine learning models. This versatile tool is employed by ABBYY engineers for various tasks in computer vision and natural language processing, such as image preprocessing, classification, document layout analysis, optical character recognition (OCR), and data extraction from both structured and unstructured documents.
Key Features
NeoML stands out with its robust features designed to cater to a wide range of machine learning needs:
- Neural Networks: It supports over 100 different types of neural network layers, providing flexibility in model design.
- Traditional Machine Learning: NeoML includes more than 20 algorithms for classification, regression, and clustering, allowing for diverse application use-cases.
- Fast Inference: The framework efficiently utilizes both CPU and GPU resources to accelerate model inference times.
- ONNX Support: It is compatible with the Open Neural Network Exchange (ONNX) format, enabling the use of models created in other frameworks.
- Multi-language Support: Developers can work with NeoML using Python, C++, Java, and Objective-C.
- Cross-platform Compatibility: The framework can run consistently across multiple operating systems, including Windows, Linux, macOS, iOS, and Android.
Build and Installation
NeoML is designed to be highly adaptable, supporting a variety of platforms for both its full-featured C++ version and inference-only Java and Objective-C versions. Whether running on Windows, Linux, macOS, iOS, or Android, NeoML provides streamlined installations with detailed instructions for both C++ and mobile-oriented configurations.
Getting Started
For newcomers to NeoML, there is a plethora of tutorials available to guide you through the fundamentals:
- Simple Network Training: Learn how to train and utilize a fundamental neural network.
- Classification Using Gradient Boosting: Explore advanced machine learning techniques for document classification.
- K-means Clustering: Dive into clustering algorithms with a hands-on approach using the Iris dataset.
API Overview
NeoML's architecture is grounded in several core principles aimed at maximizing flexibility and performance:
- Platform Independence: The framework abstracts the user interface from low-level computational operations, allowing seamless adaptation to different mathematical processing engines.
- Math Engine Flexibility: Users can select from various math engines to optimize performance, whether on GPU or CPU.
- Multi-threading: The math engine is designed for safe concurrent use across different threads.
- ONNX and Serialization: NeoML can import ONNX models and utilizes a custom binary format for saving and loading models.
- GPU Enhancements: GPU utilization is an optional feature that significantly boosts performance during both training and inference stages.
NeoML's C++ interface comprises an algorithms library, NeoML, and a separate math engine module, NeoMathEngine, which provides platform-specific optimizations, including GPU support. A Python module is also available, offering comprehensive documentation for those preferring Python programming. For mobile development, NeoML includes Java and Objective-C interfaces.
License
NeoML is open-source, available under the Apache License, Version 2.0. Users can freely use, modify, and distribute it, ensuring a flexible solution for diverse machine learning challenges.