Skip to content

esp-dl v3.2.0语音唤醒模型实例化的bug (AIS-2240) #277

@LazySunnyDays

Description

@LazySunnyDays

Checklist

  • Checked the issue tracker for similar issues to ensure this is not a duplicate
  • Read the documentation to confirm the issue is not addressed there and your configuration is set correctly
  • Tested with the latest version to ensure the issue hasn't been fixed

How often does this bug occurs?

always

Expected behavior

esp-dl v3.2.0语音唤醒模型实例化的bug

概述

在实例化 dl::Model 类时,第三个参数 max_internal_size 的设置会出现两个关键问题:

  1. max_internal_size = 30*1024时 内部 RAM 占用过高(约 70K);
  2. max_internal_size = 0时推理结果异常错误,而将该参数改为 max_internal_size = 30*1024 后,推理结果正常,仅修改该参数即引发差异。

期望结果

  1. max_internal_size=0 时(或未指定足够内存时),应该将内存分配至psram,或按框架默认逻辑合理分配内存,不出现异常高占用;
  2. 无论 max_internal_size 是什么值。只要在初始化时未产生报错,推理结果应保持一致且正确,不因该参数的合理调整(0 → 30K)出现异常差异。

Actual behavior (suspected bug)

1. 问题一:max_internal_size=0 时内部 RAM 异常高占用

相关代码片段

// dl::Model 实例化代码
g_model_instance = new dl::Model(
    model_path,  // 模型文件路径
    fbs::MODEL_LOCATION_IN_SDCARD,  // 从SD卡加载
    0,  // max_internal_size (模型需求最小值为30 KB)
    dl::MEMORY_MANAGER_GREEDY,  // 内存管理器类型
    nullptr,  // key (无加密)
    false  // param_copy=false(SD卡模式,不需要复制参数)
);

内存占用对比

max_internal_size 参数值 内部 RAM 占用情况
0 并非0 且不在psram中 仍在内部ram
30K 不但分配了这30k且 而且在其基础上还继续在内部ram中分配了内存

这里是通过注释掉初始化和loop代码完成的测试

Image Image

由上述两图可以看出 0k时也消耗了58504bytes

Image

由上图和第二张图可以看出 当max_internal_size =30k时确实有30k的分配 继续对比两个结果可以看出 尽管已经分配了30k 还是有约60k仍在内部ram中被分配了!
也就是说 无论如何设置max_internal_size 的大小 都会在内部分配一块大内存

2. 问题二:max_internal_size=0 导致推理结果异常,30K 时结果正常

  • 仅修改 max_internal_size 参数(其他代码、模型文件、运行环境均未变更);
  • 当参数为 0 时,模型推理输出结果错误(与预期结果不符);
  • 当参数改为 30K 时,模型推理输出结果完全正常,与预期一致;
  • 已排除其他干扰因素(如特征计算、模型文件损坏、路径错误、加密配置问题等),确认该参数是推理结果异常的唯一诱因。
Image Image

Error logs or terminal output

Steps to reproduce the behavior

复现步骤

  1. 使用上述代码片段实例化 dl::Model,设置 max_internal_size=0
  2. 运行程序,检测并记录内部 RAM 占用量;
  3. 执行模型推理流程,保存并验证推理结果;
  4. 仅将 max_internal_size 参数修改为 30K,其余配置保持不变;
  5. 重复步骤 2-3,对比两次的内存占用量和推理结果。

Project release version

3.2.0

System architecture

Intel/AMD 64-bit (modern PC, older Mac)

Operating system

Windows

Operating system version

windows11

Shell

PowerShell

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions