You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行UINT8量化LSTM模型报FlexTensor错误的CMake配置问题

运行LSTM模型时的TFLite Flex报错

报错信息如下:

ERROR: Fallback unsupported op 32 to TfLite 
Explicitly applied EXTERNAL delegate, and the model graph will be partially executed by the delegate w/ 13 delegate kernels. 
ERROR: Regular TensorFlow ops are not supported by this interpreter. Make sure you apply/link the Flex delegate before inference.
ERROR: Node number 5 (FlexTensorListFromTensor) failed to prepare.

ERROR: Failed to apply the default TensorFlow Lite delegate indexed at 0.
Failed to allocate tensors! 

该报错本质是TFLite默认只内置精简原生op集,LSTM模型转换后残留的部分TensorFlow原生Flex op没有被默认构建包支持,不需要手动修改TensorFlow源码内的CMakeLists.txt,通过CMake编译时按如下配置开启Flex支持即可。

CMake启用Flex支持编译步骤
  • 第一步:准备对应版本的TensorFlow源码,在tensorflow/lite路径下创建独立构建目录并进入:
mkdir build && cd build
  • 第二步:执行CMake配置命令,开启Flex编译开关,交叉编译场景下直接在该命令后追加原有工具链、目标架构配置即可,不需要修改其他构建脚本:
cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DTFLITE_ENABLE_FLEX=ON \
  -DTFLITE_ENABLE_XNNPACK=ON

TFLITE_ENABLE_FLEX=ON是核心开关,开启后构建脚本会自动拉取Flex delegate依赖的TensorFlow核心op组件,自动完成op注册相关的编译配置,不需要手动调整上层CMake规则。

  • 第三步:执行编译,根据自身CPU核心数调整并行任务数,内存小于16G的设备建议把并行数降到2-4,避免编译过程OOM:
make -j$(nproc)
  • 第四步:配置自身项目的CMake规则,除了常规链接编译生成的tensorflowlite库,额外链接同构建目录下生成的tensorflowlite_flex库即可,示例配置:
target_link_libraries(your_inference_target
  tensorflowlite
  tensorflowlite_flex
  # 其余原有项目依赖
)
注意事项
  • 必须保证导出TFLite模型的TensorFlow版本和编译推理库的源码版本完全一致,版本不匹配会出现op kernel缺失、模型解析失败的问题
  • 编译完成后不需要手动在推理代码里追加Flex op的注册逻辑,解释器初始化时会自动加载Flex delegate支持的所有TensorFlow原生op,包括报错中提到的FlexTensorListFromTensor
  • 安卓、嵌入式等交叉编译场景下,不需要额外调整Flex相关的编译参数,只要原有工具链配置能正常编译基础TFLite库,开启开关后就能正常编译出带Flex支持的库
  • 不要在构建时手动拷贝零散的Flex相关源文件到自己的项目里,直接链接编译生成的整库即可,手动拆分文件很容易出现依赖缺失、符号找不到的问题

内容的提问来源于stack exchange,提问作者kskill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:21:07