创建Orchestrator快照时执行bf orchestrator:create间歇性报bad allocation错误
bf orchestrator:create 间歇性内存分配错误根因定位
你遇到的bad allocation错误本质是ONNX Runtime加载Orchestrator预训练模型时,系统无法分配满足要求的内存空间触发的异常,间歇性发作的常见根本原因如下:
- 系统可用内存波动不足
Orchestrator预训练模型加载时需要连续的大段内存空间,若运行命令时后台存在其他高内存占用程序(IDE、浏览器、后端服务等)间歇性抢占内存,就会有概率出现内存分配失败的情况。运行bf orchestrator:create前请确保系统可用内存不低于8G,大尺寸多语言模型需要至少16G可用内存。 - 本地基础模型文件损坏
通过bf orchestrator:basemodel:get拉取模型时如果出现网络波动导致文件下载不完整、损坏,会导致ONNX Runtime解析模型时逻辑异常,申请超出实际需求的内存空间触发分配失败。可以删除本地model目录重新拉取模型验证问题是否复现。 - BF CLI版本内存管理缺陷
旧版本Bot Framework CLI的Orchestrator组件存在内存管理BUG,多次运行命令后会残留大量内存碎片,后续运行时无法找到足够大的连续内存空间就会报错。可以将BF CLI升级到最新稳定版后重试。 - 32位运行环境限制
若使用的是32位Node.js或者32位BF CLI,进程最大可寻址内存仅为4G,实际可用用户内存不到2G,完全无法满足ONNX模型加载需求,会偶发内存分配失败。请确认运行环境为64位Node.js和64位BF CLI。
你使用的命令逻辑没有问题,错误和命令本身的参数配置无关。
你执行的命令参考:
bf orchestrator:add -t qna --id "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -k "xxxx" --routingName "q_xxxx" bf orchestrator:basemodel:get --out model bf orchestrator:create --model model --out generated报错日志参考:
2021-07-14 17:28:36.3948734 [E:onnxruntime:, inference_session.cc:1294 onnxruntime::InferenceSession::Initialize::<lambda_14ab80433efd07306ceb190544d07c3a>::operator ()] Exception during initialization: bad allocation EXCEPTION THROWN - utility_onnx::OnnxUtility::InitOnnxSession(): e.what()=Exception during initialization: bad allocation, __FILE__=D:\a\1\s\oc\utility\OnnxUtility.h, __LINE__=117 EXCEPTION THROWN - OC - EmbedderBase::EmbedderBase(json const& config, const string onnxVocabFileDefault, const string onnxModelFileDefault): e.what()=Exception during initialization: bad allocation, FILE=D:\a\1\s\oc\EmbedderBase.cc, LINE=57 Exception during initialization: bad allocation
内容的提问来源于stack exchange,提问作者Ed-Lima
相关产品推荐
相关产品推荐

