昇腾社区首页
中文
注册
开发者
下载

多模态模型输入时,出现大小限制报错问题

问题描述

多模态模型输入(image_url/video_url/audio_url)时出现类似以下报错提示:

  • OpenAI接口:
    {"error": "Message len not in (0, 4194304], but the length of inputs is xxxxx", "error_type": "Input Validation Error"}
  • vLLM接口:
    Prompt must be necessary and data type must be string and length in (0, 4194304], but the length of inputs is xxxxx
  • Triton接口:
    Text_input must be necessary and data type must be string and length in (0, 4194304], but the length of inputs is xxxxx

原因分析

可能输入的图片、音频或者视频是Base64编码格式(Base64 编码后的数据通常是原始数据的4/3倍),导致整个message/prompt/text_input超过4MB而出现报错。

解决方案

  • 方式一:参考接口约束
    • OpenAI接口:

      请求参数中的messages参数下所有字段的字符数被限制为不大于4MB,详情请参见推理接口

    • vLLM接口:

      请求参数中的prompt参数下所有字段的字符数被限制为不大于4MB,详情请参见文本/流式推理接口

    • Triton接口:

      请求参数中的text_input参数下所有字段的字符数被限制为不大于4MB,详情请参见文本推理接口

    • 当base64编码的图片格式大小为1MB,message/prompt/text_input下其余的请求字符数大于3MB时,也会导致整个message/prompt/text_input超过4MB而出现报错。
    • 如果image_url/video_url/audio_url传的是本地图片/视频/音频,或者是一个远端的url,这个url的字符串长度大小加上message/prompt/text_input下其余的请求字符数大小也应该小于4MB。url传进来之后,会去加载解析该url得到该图片/视频/音频:
      • 图片:不大于20MB;
      • 视频:不大于512MB;
      • 音频:不大于20MB;
    • base64编码的输入更容易超出限制,当前版本会报错, 因为涉及到安全问题,建议采用网页地址或本地地址。
    • 如果选择使用base64格式请求,请勿直接使用终端curl,建议选择使用Python脚本,因为base64编码后的数据字符长度可能超出系统终端限制,导致请求被截断。
  • 方式二:手动修改源码(不推荐)

    比如修改输入inputs大小的限制为10MB,代码修改示例如下所示:

    图1 示例一
    图2 示例二