如果你准备将自己的算法部署到聆思芯片上,可以对照以下四个核心维度进行快速“体检”:
根据你的应用场景(如语音、轻量级视觉、多模态等),首先确定合适的芯片系列,并核对存储资源:
| 芯片系列 | 核心架构 | 理论算力 | 适用场景 | 内存/存储配置 |
|---|---|---|---|---|
| VENUS/CSK6 | ARM + HIFI4 + NPU | 128 GOPS | 轻量级端侧AI应用 | 640KB可用SRAM,内置最高8MB PSRAM, 内置最高8MB Flash |
| ARCS/LS26 | RISC-V * 2 + NPU | 64 GOPS | AI+IOT、语音、低分辨率图像 | 384KB可用SRAM,内置最高16MB PSRAM,无内置Flash |
| VENUSA/CSK7 | RISC-V * 2 + NPU | 256 GOPS | 中等分辨率图像、多模态场景 | 384KB可用SRAM,内置最高16MB PSRAM,无内置Flash |
如上图所示,用户可用的存储器包含SRAM、PSRAM和FLASH。模型推理期间会占用大部分的SRAM和部分PSRAM(具体占用取决于模型结构,参考打包时内存分析报告)
所有系列芯片标配8MB PSRAM存储器,为确保AI引擎的最佳运算效率,建议优先将模型参数部署于PSRAM存储空间。通过Int8精度量化训练,模型参数大小相对于float32精度减少75%;因此,FP32精度的初始模型大小严格控制在32MB以内时,有可能完整驻留PSRAM。若模型大小超出此限值,将启用Flash存储部分参数,导致模型加载速度下降可能会导致推理性能显著降低。如需其它存储配置,可咨询我司商务。
NPU核不支持浮点计算,少量非计算类的算子可由CPU完成。你需要初步判断模型中是否存在硬件无法绕过的算子参数限制。
以下为各芯片平台的部分限制情况介绍,具体的评估由LNN工具链自动完成
VENUS平台
ARCS平台
VENUSA平台
linger现阶段状态
| PyTorch(float32) | linger自定义量化算子名称 | thinker自定义量化算子名称 |
|---|---|---|
| nn.BatchNorm2d | QBatchNorm2d | BatchNorm2dInt |
| nn.LayerNorm2d | QLayerNorm2d | LayerNormInt |
| nn.Linear | QLinear | LinearInt |
| nn.Conv1d | QConv1d | Conv2dInt |
| nn.Conv2d | QConv2d | Conv2dInt |
| nn.ConvTranspose1d | QConvTranspose1d | ConvTranspose2dInt |
| nn.ConvTranspose2d | QConvTranspose2d | ConvTranspose2dInt |
| nn.AvgPool1d | QAvgPool1d | AvgPool2dInt |
| nn.AvgPool2d | QAvgPool2d | AvgPool2dInt |
| nn.MaxPool1d | QMaxPool1d | MaxPool |
| nn.MaxPool2d | QMaxPool2d | MaxPool |
| nn.GRU | QGRU | GRUInt |
| nn.LSTM | QLSTM | LSTMInt |
| torch.bmm | QBmm | BmmInt |
| torch.sigmoid | QSigmoid | iqSigmoid |
| torch.tanh | QTanh | iqTan |
| torch.clamp | Clamp | Clip |
| torch.cat | QCat | iqCat |
| add | QAdd | iqAdd |
| mul | QMul | iqMul |
| nn.softmax | QSoftmax | iqSoftmax |
thinker支持的算子情况
SRAM 的具体使用情况无法仅凭模型大小直接得出,必须走通 LNN 工具链流程。
评估方法:在计算图推理适配阶段,使用 tpacker 工具对计算图进行分析打包。
操作建议:打包时,通过设置参数 -d true 导出内存分析报告,离线对前向推理所用到的内存进行精确分析和预分配。