flashlight/flashlight

A C++ standalone library for machine learning

What it solves

Flashlight 是一个高性能机器学习库,专为需要快速、灵活且轻量级框架的研究人员设计,该框架完全由 C++ 编写。它解决了在不牺牲快速迭代新实验性算法和设置的需求下,同时提供 C++ 的效率和规模的需求。

How it works

Flashlight 使用基于 tape-based 的自动微分系统(通过 Variable 抽象层)和基于 ArrayFire 张量库构建的核心张量接口,以实现高性能默认值和即时 (JIT) 内核编译。其结构分为核心神经网络库 (fl)、独立工具 (lib)、领域特定软件包 (pkg) 和即用型应用程序 (app)。

Who it’s for

它主要针对需要原生 C++ 支持以获得最大性能、较小的内存占用,以及能够修改张量计算内部 API 的研究人员和开发者。

Highlights

  • C++ Native: 完全由 C++ 编写,提供完全的内部可修改性以及极小的核心占用 (低于 10 MB)。
  • High Performance: 利用 ArrayFire 进行 JIT 内核编译,并支持 CUDA 和 CPU 后端。
  • Multi-Domain Support: 包含用于自动语音识别 (ASR)、图像分类、图像检测、语言建模的内置应用程序。
  • Automatic Differentiation: 提供一个简单的、基于 tape-based 的 autograd 系统来计算梯度。