环境要求
| 组件 | 版本 | 说明 |
| Python | 3.11 | conda 环境 openvino2 |
| openvino | 2026.1.0+ | pip show openvino |
| openvino-genai | 2026.1.0.dev+ | |
| transformers | >= 4.57.0 | qwen3_vl 必须 ≥ 4.57.0;已验证 4.57.6 |
| optimum-intel | 源码安装 | pip 版 2.1.0 不支持 qwen3_vl,需从 GitHub 源码安装 |
安装依赖
安装Openvino的nightly版本
pip install --pre openvino openvino-tokenizers openvino-genai --extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly
从源码安装 optimum-intel
# 克隆或已有本地源码
# git clone https://github.com/huggingface/optimum-intel
# 从本地源码安装(--no-deps 避免覆盖已有依赖)
conda activate openvino
pip install -e D:\Projects\optimum-intel --no-deps
安装其他依赖
transformers==4.57.6 torch==2.10.0 torchvision==0.25.0+cpu
转换命令
基础 INT4(无校准数据,速度最快)
conda activate openvino
optimum-cli export openvino ^
--model E:\models\Qwen3-VL-4B-Instruct ^
--task image-text-to-text ^
--weight-format int4 ^
--group-size 128 ^
--ratio 1.0 ^
E:\models\Qwen3-VL-4B-Instruct-int4-ov
可选:更高精度(AWQ + 校准数据)
conda activate openvino
optimum-cli export openvino ^
--model E:\models\Qwen3-VL-4B-Instruct ^
--task image-text-to-text ^
--weight-format int4 ^
--group-size 128 ^
--ratio 0.8 ^
--awq ^
--dataset wikitext2 ^
--num-samples 128 ^
E:\models\Qwen3-VL-4B-Instruct-int4-ov
--ratio 0.8 表示 80% 的层量化为 int4,其余保留 int8,精度更好但模型略大。
参数说明
| 参数 | 说明 |
| --task image-text-to-text | 必须显式指定,本地目录无法自动推断 |
| --weight-format int4 | 权重量化为 int4 |
| --group-size 128 | 每 128 个权重共享量化参数 |
| --ratio 1.0 | 全部层量化为 int4 |
| --awq | AWQ 算法,需配合 --dataset 使用 |
导出产物结构
转换完成后,输出目录包含以下 OV 子模型:
| 子模型文件 | 输入 | 输出 | 说明 |
| text_embeddings.xml/bin | input_ids [B,L] | inputs_embeds [B,L,2560] | token 嵌入 |
| vision_embeddings.xml/bin | hidden_states [N,C] | last_hidden_state [N,1024] | 视觉编码器 |
| vision_embeddings_merger.xml/bin | hidden_states [N,1024] + attention_mask + rotary_pos_emb [N,32] | last_hidden_state [N,2560] + deepstack_feature_lists [3,N,2560] | 视觉特征融合 |
| vision_embeddings_pos.xml/bin | input [4,N] | last_hidden_state [4,N,1024] | 视觉位置编码(推理路径不直接调用) |
| language_model.xml/bin | inputs_embeds [B,L,2560] + position_ids [3,B,L] + visual_pos_masks + deepstack_visual_embeds [3,N,2560] + beam_idx | logits | 语言模型主体 |
推理加载
from optimum.intel import OVModelForVisualCausalLM
from transformers import AutoProcessor
model_path = r"E:\models\Qwen3-VL-4B-Instruct-int4-ov"
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = OVModelForVisualCausalLM.from_pretrained(model_path, trust_remote_code=True)

431

被折叠的 条评论
为什么被折叠?



