flashlight: a high-performance C++ machine learning library with JIT kernel compilation and native multi-domain apps
flashlight: a high-performance C++ machine learning library with JIT kernel compilation and native multi-domain apps
What it solves
Flashlight is a high-performance machine learning library designed for researchers who need a fast, flexible, and lightweight framework written entirely in C++. It addresses the need for a tool that provides the efficiency and scale of C++ without sacrificing the ability to iterate quickly on new experimental algorithms and setups.
How it works
Flashlight uses a tape-based automatic differentiation system (via the Variable abstraction) and a core tensor interface built on the ArrayFire tensor library for high-performance defaults and just-in-time kernel compilation. It is structured into a core neural network library (fl), standalone utilities (lib), domain-specific packages (pkg), and ready-to-use applications (app).
Who it’s for
It is primarily for AI researchers and developers who require native C++ support for maximum performance, a small memory footprint, and the ability to modify internal APIs for tensor computation.
Highlights
- C++ Native: Written entirely in C++, offering total internal modifiability and a small core footprint (under 10 MB).
- High Performance: Utilizes ArrayFire for JIT kernel compilation and supports both CUDA and CPU backends.
- Multi-Domain Support: Includes built-in applications for automatic speech recognition (ASR), image classification, object detection, and language modeling.
- Automatic Differentiation: Features a simple, tape-based autograd system for calculating gradients.
Sources
- undefinedflashlight/flashlight