文件最后提交记录最后更新时间
[dev]Synchronize code Co-authored-by: forcekeng<gengli8@huawei.com> 5 个月前
[bugfix] 对齐多模态媒体限制到 maxRequestLength Co-authored-by: muziyuhui666<lijianfu9@huawei.com> # message auto-generated for no-merge-commit merge: !715 merge feat/multimodal-media-limit-config into dev [bugfix] 对齐多模态媒体限制到 maxRequestLength Created-by: muziyuhui666 Commit-by: muziyuhui666 Merged-by: ascend-robot Description: # 合入背景 当前多模态媒体(图片/音频)在不同组件间存在硬编码与语义不一致的问题,可能导致: 1. 服务端请求体上限(maxRequestLength)与 tokenizer 侧图片/音频媒体大小校验规则不一致; 2. Python tokenizer 在下载/保存图片链路中仍存在固定上限,影响与配置项统一; 3. HTTP 413 PayloadTooLarge 返回信息使用固定文案,难以与当前配置(maxRequestLength)对应; 本 PR 旨在减少媒体限制相关硬编码,并将多模态媒体大小限制尽可能对齐到 maxRequestLength 配置范围,同时同步更新相关校验逻辑与测试。 # 修改内容 1. src/server/endpoint/http_wrapper/http_server.cpp - 在 HTTP 413 PayloadTooLarge 场景下,错误文案从固定文案改为使用 GetServerConfig().maxRequestLength 计算并拼接,提升与配置的一致性。 2. src/server/tokenizer/infer_tokenizer.cpp - 调用 Python download_url 时增加/传递 size_limit 参数,使用 GetMaxTextLength()(由 maxRequestLength 换算为字节上限)作为媒体大小限制驱动输入链路。 3. mindie_llm/tokenizer/tokenizer.py - 将 download_url/_download/_process_url_path/_process_local_path/_process_base64 增加 size_limit 透传链路。 - 移除图片/音频的固定 _SINGLE_IMAGE_LIMIT/_SINGLE_AUDIO_LIMIT 相关逻辑。 - base64 分支在保存图片时使用 size_limit 进行校验,避免仍受固定上限影响。 4. mindie_llm/tokenizer/io_utils.py - fetch_media_urlsave_image 改为显式接收 size_limit 参数,图片保存前按 size_limit 校验字节大小,移除固定 20MB 硬编码。 5. examples/atb_models/atb_llm/utils/multimodal_utils.py - 为简化处理,将 MAX_IMAGE_FILE_SIZEMAX_AUDIO_FILE_SIZE20 * 1024 * 1024 调整为 100 * 1024 * 1024,与文档中 maxRequestLength 参数范围(1~100MB)更一致,减少 ATB 侧更早拦截导致的不一致。 # 资料变更 不涉及。 # 接口变更 不涉及对跨代码仓或客户面可见的接口变更。 说明:仅为 tokenizer 内部 C++ -> Python 调用链增加媒体 size_limit 透传参数,C++ 调用方已同步更新。 # 测试结果 - 已完成本 PR 相关代码修改与对应单测同步更新。 - 在目标环境已验证以下场景: - 图片/音频通过 URL、本地路径与 base64 三种输入方式的超限场景返回符合预期; - HTTP 413 返回信息中“最大允许大小”随 maxRequestLength 正确变化; # CheckList - [ ] 代码注释完备 - [ ] 正确记录错误日志 - [ ] 进行了返回值校验 (禁止使用void屏蔽安全函数、自研函数返回值;考虑接口的异常场景;调用底层组件接口时,需要进行返回值校验) - [ ] 进行了空指针校验 - [ ] 若存在资源申请,使用后资源被正确的释放了 - [ ] 若涉及多线程场景,考虑了并发场景,不存在死锁问题 - [ ] 按照[代码仓中提供的格式模板](https://gitcode.com/Ascend/MindIE-LLM/blob/master/.clang-format),使用clang-format工具格式化代码 - [ ] 符合Ascend社区的编码规范。[C++ 语言编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-coding-style-guide.md) | [C++ 语言安全编程指导](https://gitcode.com/Ascend/community/blob/master/docs/contributor/Ascend-cpp-secure-coding-guide.md) Fix [#363](https://gitcode.com/Ascend/MindIE-LLM/issues/363) See merge request: Ascend/MindIE-LLM!7151 个月前