flashlight: 一个具有 JIT 内核编译和原生多领域应用的高性能 C++ 机器学习库
flashlight: 一个具有 JIT 内核编译和原生多领域应用的高性能 C++ 机器学习库
它解决了什么问题
Flashlight 是一个高性能机器学习库,专为需要快速、灵活且轻量级的全 C++ 编写框架的研究人员而设计。它解决了对一种既能提供 C++ 的效率和规模,又不会牺牲在新的实验性算法和设置上快速迭代的能力的工具的需求。
它是如何工作的
Flashlight 使用基于 tape 的自动微分系统(通过 Variable 抽象)以及基于 ArrayFire 张量库构建的核心张量接口,以实现高性能默认设置和即时 (JIT) 内核编译。它被结构化为核心神经网络库 (fl)、独立工具 (lib)、特定领域软件包 (pkg) 和即插即用的应用程序 (app)。
它是面向谁的
它主要面向需要原生 C++ 支持以获得最大性能、较小的内存占用以及能够修改张量计算内部 API 的 AI 研究人员和开发人员。
亮点
- C++ Native: 完全由 C++ 编写,提供完全的内部可修改性以及较小的核心占用空间(小于 10 MB)。
- 高性能: 利用 ArrayFire 进行 JIT 内核编译,并支持 CUDA 和 CPU 后端。
- 多领域支持: 包括用于自动语音识别 (ASR)、图像分类、目标检测和语言建模的内置应用程序。
- 自动微分: 特色是用于计算梯度的简单、基于 tape 的 autograd 系统。
Sources
- undefinedflashlight/flashlight