Skip to content

LISTENAI/thinker

Repository files navigation

Thinker Logo

English | 简体中文

Thinker

Thinker 是聆思科技开发的轻量级神经网络推理框架,也是 LNN 的通用推理引擎及配套工具集。它与量化训练工具 Linger 配合使用,覆盖从模型量化、图优化、设备适配、性能评估、结果验证到端侧推理部署的完整链路,帮助 CV、ASR、NLP 等算法快速落地到聆思芯片平台。

项目定位

Thinker 面向资源受限的端侧芯片场景,核心目标是让模型在保持精度可控的前提下,以更低的内存占用、更小的运行时负载和更高的硬件利用率完成部署。

  • 完整链路:串联 Linger 量化训练、离线图分析、资源打包、仿真验证与芯片运行。
  • 轻量运行时:执行器采用纯 C 实现,静态内存管理,无第三方运行时依赖。
  • 硬件适配:通过编译宏和平台配置适配 Linux、VENUS、ARCS、VENUSA 等目标平台。
  • 部署友好:离线阶段完成图优化、参数检查和内存规划,运行时只负责加载资源并按计划执行。

引擎框架

Thinker 采用模块化架构,将离线处理和在线执行解耦,形成稳定、可验证、易移植的推理体系。

  • 离线工具链:负责计算图优化、权重转换、参数合法性检查、内存预分配、性能仿真和一致性比对,最终生成标准化中间表示与运行资源。
  • 轻量级运行时引擎:负责解析离线工具生成的资源文件,并在静态内存池与硬件抽象层之上完成高性能推理执行。

功能模块示意图

Thinker 功能模块示意图

核心优势

极简开发体验

  • 离线工具包覆盖模型检查、打包、仿真、性能评估和结果对比,常规场景只需指定待处理计算图路径即可完成处理。
  • 引擎封装标准 C API,并提供典型调用示例;多数场景仅需“模型加载 -> 推理执行 -> 结果输出”三步即可集成。
  • 提供专业结果比对工具,便于对齐训练端、仿真端和芯片端结果,降低问题定位成本。

极致轻量化部署

  • 图优化器生成紧凑 IR,执行器仅保留必要的计算和调度逻辑,显著降低运行时负载。
  • 执行器采用 ANSI C 编写,通过编译期配置选择目标平台,实现二进制级硬件适配。
  • 离线阶段完成全图内存拓扑分析,运行时采用静态内存池,避免动态内存分配开销。
  • 单文件资源交付方式支持仿真环境与真实硬件快速切换,提升调试效率。

多模态兼容能力

  • 支持 CV、NLP、ASR 等常见模型类型,覆盖 ResNet、Transformer、LSTM 等经典网络结构。
  • 支持多输入、多输出、分支结构、变长序列和流式数据等复杂计算图场景。
  • 支持 ONNX 标准算子与常用量化算子,并提供自定义算子扩展入口。
  • 源码级平台无关设计,通过编译宏即可生成不同目标平台版本。

性能与可验证性

  • 通过 Linger 支持激活 int8、参数 int4/int8/int16 等量化形式,降低模型体积和数据搬运成本。
  • 结合 DMA 预取、算子重排和硬件专用库提升端侧推理效率。
  • 支持 tvalidator 结果验证、CRC32 中间结果比对和 tprofile 性能评估,便于形成可复现的部署闭环。

快速开始

Thinker 与 Linger 需要配合使用。推荐按照以下流程完成从模型设计到芯片运行的部署闭环。

1. 开发环境配置

2. 模型设计阶段

算法研究人员在完成模型结构设计后,可使用随机初始化参数先跑通 Linger + Thinker 工具链,用于评估算子适配性、内存占用和运行效率,提前规避后续部署返工。

3. 模型量化训练和导出

Linger 作为 PyTorch 插件支持一键导入,采用 QAT 量化方式,适用于 CV 等模型的无损或近似无损量化。量化训练完成后,可导出 Thinker 离线工具链可处理的计算图。 具体使用方法请参考 Linger 模型量化训练

4. 模型分析和打包

使用 Thinker 离线组件 tpacker 对计算图进行参数检查、图优化、内存分析和资源序列化,并预分配运行内存。

5. 仿真平台代码编译

在仓库根目录运行编译脚本即可构建仿真平台。测试用例默认使用 demo/test_thinker,也可以在根目录 CMakeLists.txt 中按需修改。

6. 仿真平台运行及结果对比

加载离线工具序列化后的资源文件,在少量修改甚至零修改的情况下完成仿真推理,并通过验证工具对齐训练端与仿真端结果。

7. 芯片平台代码编译

在固件的基础SDK工程中添加 Thinker 模块:将 executor 目录拷贝到目标工程,并按工程规范重命名或挂载为 thinker 模块(引擎代码支持跨平台使用)。 注:固件的基础SDK工程需咨询我们的FAE获取

8. 芯片平台运行及结果对比

芯片工程编译通过后,烧录并运行程序。建议统一仿真平台与芯片平台的输入文件,并开启编译脚本中的 CRC32 对比宏,验证中间结果一致性。

9. 性能评估工具

tprofile 模块用于离线评估芯片性能

10. 其它辅助功能

Thinker 还提供算子性能统计、中间结果数据查看等辅助能力,便于定位性能瓶颈和数值差异。

文档导航

文档 说明
离线打包工具 tpacker 参数、流程和示例
仿真运行 仿真平台运行方法
结果验证 训练端、仿真端和芯片端结果对比
离线性能评估 tprofile 使用说明
性能统计与辅助工具 算子统计和中间数据查看
支持量化 OP 列表及限制说明 量化算子、精度和参数限制
Thinker API 引擎 API 与典型调用方式
技术亮点 框架设计与关键技术说明
发布说明 版本更新记录

交流与反馈

  • 欢迎通过 GitHub Issues 提交 Bug、需求和改进建议。
  • 项目持续迭代中,版本变化可参考 发布说明
  • 如需技术交流,可加入项目技术交流微信群。

引用

版权和许可证

本项目基于 Apache-2.0 license 发布。

About

a lightweight deep learning framework for listenai serial chips

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors