-
Notifications
You must be signed in to change notification settings - Fork 181
Open
Description
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 的设置会出现两个关键问题:
- max_internal_size = 30*1024时 内部 RAM 占用过高(约 70K);
- max_internal_size = 0时推理结果异常错误,而将该参数改为 max_internal_size = 30*1024 后,推理结果正常,仅修改该参数即引发差异。
期望结果
- 当
max_internal_size=0时(或未指定足够内存时),应该将内存分配至psram,或按框架默认逻辑合理分配内存,不出现异常高占用; - 无论
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代码完成的测试
由上述两图可以看出 0k时也消耗了58504bytes
由上图和第二张图可以看出 当max_internal_size =30k时确实有30k的分配 继续对比两个结果可以看出 尽管已经分配了30k 还是有约60k仍在内部ram中被分配了!
也就是说 无论如何设置max_internal_size 的大小 都会在内部分配一块大内存
2. 问题二:max_internal_size=0 导致推理结果异常,30K 时结果正常
- 仅修改
max_internal_size参数(其他代码、模型文件、运行环境均未变更); - 当参数为 0 时,模型推理输出结果错误(与预期结果不符);
- 当参数改为 30K 时,模型推理输出结果完全正常,与预期一致;
- 已排除其他干扰因素(如特征计算、模型文件损坏、路径错误、加密配置问题等),确认该参数是推理结果异常的唯一诱因。
Error logs or terminal output
Steps to reproduce the behavior
复现步骤
- 使用上述代码片段实例化
dl::Model,设置max_internal_size=0; - 运行程序,检测并记录内部 RAM 占用量;
- 执行模型推理流程,保存并验证推理结果;
- 仅将
max_internal_size参数修改为 30K,其余配置保持不变; - 重复步骤 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
Labels
No labels