ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

DeepSeek-V4-Flash-Vision-Exp 实战指南:视觉编码、最小化推理与 vLLM/SGLang 部署

DeepSeek-V4-Flash-Vision-Exp 实战指南:视觉编码、最小化推理与 vLLM/SGLang 部署 大模型基础模型多模态计算机视觉DeepSeek【免费下载链接】DeepSeek-V4-Flash-Vision-Exp项目地址https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp点击查看免费下载本文以 DeepSeek-V4-Flash-Vision-Exp 开源仓库为主体系统讲解这一多模态实验模型的核心能力、仓库布局、Prompt 编码规范含 OpenAI 风格 JSON 与紧凑 TXT 两种等价输入、最小化 PyTorch 推理的权重转换与运行流程以及基于 vLLM 和 SGLang 的部署参数。读完本文你将掌握从消息编码到权重转换再到单机/多机推理与在线服务的完整落地链路。DeepSeek-V4-Flash-Vision-Exp 是 DeepSeek-V4 家族中首个实验性多模态模型它基于 DeepSeek-V4-Flash 架构引入视觉模块Vision Encoder Aligner并通过持续训练解锁了视觉理解能力。与 DeepSeek-V4-Flash-0731 相比它在多模态 Agent 能力上获得显著提升同时保持了文本 Agent 任务的相近表现。仓库本身提供了分词器、Prompt 编码参考实现以及一套可读的 PyTorch 最小推理实现覆盖 Vision Aligner、DFlash 注意力、MoE、Hyper-Connections 与 DSpark 前向路径。上面两张图是仓库内置示例example_vl.txt/example_vl_harmony.json中实际使用的测试图片用于验证两张图交替输入的多模态 Prompt 编码与推理链路。模型定位与能力概览根据仓库根目录 README.md 的说明DeepSeek-V4-Flash-Vision-Exp 的目标是在保持 DeepSeek-V4-Flash 文本 Agent 能力的前提下解锁并强化视觉理解与多模态 Agent 能力。仓库给出的基准测试结果官方自报数据如下BenchmarkDeepSeek-V4-Flash-Vision-ExpDeepSeek-V4-Flash-0731Opus-4.8Text Agent CapabilitiesTerminal Bench 2.183.982.785.0NL2Repo57.754.269.7Cybergym75.376.778.3DeepSWE59.354.458.0Toolathlon-Verified75.970.376.2DSBench-Hard63.659.671.7AutomationBench (Public)25.725.127.2Multimodal Agent CapabilitiesApexBench (Pass1)36.526.2†39.4Agents Last Exam27.325.2†25.7Chartography64.3-65.0ZeroBench (Pass5)35.0-34.0测试说明来自 README 原文备注文本 Agent 基准中DeepSeek 模型统一使用 DeepSeek Harness 的 minimal 模式作为 Agent 框架采用max推理强度reasoning effort生成参数为temperature 1.0, top_p 0.95† 表示 ApexBench 与 Agents Last Exam 两项测试中DeepSeek-V4-Flash-0731 忽略了输入中的多模态元素即纯文本评估。仓库布局一份麻雀虽小、五脏俱全的参考实现根目录 README.md 明确了仓库的定位——它包含分词器、Prompt 编码参考prompt encoding reference以及一个最小化的 PyTorch 推理实现其推理路径覆盖 Vision Encoder 与 Aligner、DFlash 注意力、MoE、Hyper-Connections 以及 DSpark 前向路径。目录结构如下. ├── encoding/ # OpenAI-style messages - model prompt ├── inference/ # weight conversion and minimal inference │ └── examples/ # equivalent TXT and JSON vision prompts ├── config.json # Hugging Face model metadata ├── generation_config.json ├── model.safetensors.index.json ├── tokenizer.json └── tokenizer_config.json其中几个值得注意的工程细节encoding/与inference/刻意分离Prompt 格式化不依赖 PyTorch而推理模块通过显式 Python 路径sys.path导入同级的 encoding 模块无需符号链接symlinks。这一点可以从 inference/generate.py 看到generate.py通过sys.path.insert(0, os.path.abspath(encoding_dir))引入encoding_dsv4再导入image_processor。分词器文件采用普通文件而非符号链接以便仓库可以不经本地文件系统符号链接直接上传到 Hugging Face大模型分片由model.safetensors.index.json描述在组装本仓库的源码检出中不会重复存放分片权重当前仓库根目录可见model-00001-of-00048.safetensors至model-00048-of-00048.safetensors的 48 个分片。Prompt 编码从 OpenAI 风格消息到模型输入Prompt 编码是模型输入的第一公里。仓库在 encoding/README.md 中说明encoding_dsv4.py是独立的 Prompt 格式参考实现支持多轮对话、工具调用、思考模式thinking mode以及交错图片内容块interleaved image content blocks并且不依赖推理实现。OpenAI 风格消息JSON content blocks使用 encoding_dsv4.py 中暴露的encode_messages入口可以直接将 OpenAI 风格的消息列表编码为模型 Promptfrom encoding_dsv4 import encode_messages messages [{ role: user, content: [ {type: text, text: 第一张图}, { type: image_url, image_url: {url: examples/images/carrots.jpeg}, }, {type: text, text: 有什么内容}, ], }] # 非思考模式chat prompt, media encode_messages( messages, thinking_modechat, return_multi_modal_dataTrue, ) # prompt: # begin▁of▁sentenceUser第一张图\n\ndeepseek_image\n\n有什么内容Assistant/think # 思考模式thinking并指定 reasoning_effortmax # prompt, media encode_messages( # messages, # thinking_modethinking, # reasoning_effortmax, # return_multi_modal_dataTrue, # )编码的核心规则可以结合源码总结为几点图片在 Prompt 中以deepseek_image占位符表示media[images]中按完全相同顺序存放对应的图片记录占位符与图片记录是一一对应的文本与图片可以任意交错示例中第一张图文本块、图片块、后续文本块依次排布编码后形成一个统一的 user 轮次思考模式下系统会在对话最开头index 0前置一段推理强度指令。从 encoding_dsv4.py 的REASONING_EFFORT_PROMPTS可以看出共支持三档low默认不附加任何内容、high、maxmax档会附加一段Beyond maximum — exhaustive, relentless, and uncompromising的英文推理指令并最终以think开启思考段像素加载与图片 token 展开不在此模块处理而是由inference/image_processor.py完成见下文视觉链路章节。紧凑 TXT 记法imagepath/imageparse_tagged_text()提供了另一种更紧凑的输入方式将形如第一张图imageexamples/images/carrots.jpeg/image有什么内容的文本转换为与 OpenAI 风格完全相同的标准 content blocks。这一点在 encoding_dsv4.py 中通过正则IMAGE_TAG_PATTERN re.compile(rimage(.*?)/image, re.DOTALL)实现按标签切分文本将标签内容转为image_url块其余部分转为text块并校验标签合法性例如空路径、未闭合标签会抛出ValueError。需要特别强调TXT 记法只是输入便捷层并不是第二套编码实现——两者最终走同一条编码路径产物完全一致。与推理的衔接图片占位符到视觉 token编码完成后图片占位符如何在 token 层面展开inference/image_processor.py 中的prepare_vl_inputs()给出了答案用 tokenizer 将deepseek_image转为 token id若 tokenizer 中不存在该 token 则报错统计prompt_tokens中占位符 token 的数量必须与传入的图片数量严格一致否则抛出ValueError逐个图片调用load_image()得到 ViT patches 与网格尺寸再调用build_image_block()构造 N-layout 的哨兵 token 序列IMAGE_START/IMAGE/IMAGE_NEW_LINE/IMAGE_PAD/IMAGE_END以vocab_size types的方式拼入 token 序列即图片在 LLM 侧表现为[vocab_size, vocab_size1, ...]这类超出词表范围的视觉 token。测试验证TXT 与 JSON 编码一致仓库通过 encoding/test_encoding_dsv4.py 的 14 个测试用例锁定了编码行为其中两个用例与本主题强相关test_txt_and_json_examples_encode_identically读取inference/examples/example_vl.txt与example_vl_harmony.json分别编码后断言完全相等且两张图片carrots.jpeg、corn.jpeg顺序保持一致test_tagged_text_matches_standard_image_content_blocks断言parse_tagged_text的结果与手写的标准 content blocks 编码结果一致。在仓库根目录可直接运行python -m pytest -q encoding/test_encoding_dsv4.py视觉链路ViT 编码器与 Aligner 对齐器虽然根 README 将视觉相关实现归入推理参考代码但从源码结构看视觉模块的组成与参数一目了然Vision EncoderViT定义在 inference/vision.py是单图全双向注意力 2D RoPE的 DeepSeek ViT。patch embed 将3 * patch_size²像素映射为vision_dim维向量随后堆叠vision_n_layers个 BlockRMSNorm Attention MLP每个 Block 做残差连接Aligner对齐器定义在同文件 inference/vision.py将 ViT 输出按downsample_ratio做 unfold 下采样再经两层线性变换GELU 激活映射到 LLM 的dim维度实现视觉特征与文本 token 的空间对齐预处理参数图片预处理在 inference/image_processor.py 中完成包括按vision_max_wh_ratio限制宽高比、按vision_min_pixels放大过小图片、以ImageOps.pad灰色127,127,127填充至 patch 对齐尺寸、归一化到(x - 0.5) / 0.5的 bfloat16 张量最终切成(n_vit_h * n_vit_w, 3, patch, patch)的 patch 张量。以上参数的实际取值可以从 inference/config.json 读到例如vision_n_layers: 32、vision_dim: 1024、vision_n_heads: 16、vision_patch_size: 14、vision_downsample_ratio: 3、vision_max_n_token: 384、vision_min_pixels: 147456、vision_max_wh_ratio: 8。最小化推理权重转换与运行inference/README.md 明确指出该目录提供的是可读的参考实现而非生产级推理引擎。模型代码包含 Vision Aligner、DFlash、MoE、Hyper-Connections以及Transformer.forward_spec()DSpark 前向路径生成循环仍是直白的自回归采样。安装依赖python -m pip install -r requirements.txt依赖清单见 inference/requirements.txt。转换 Hugging Face 权重参考运行时的加载方式很特殊每个 tensor-parallel rank 对应一个转换后的 checkpoint 文件。在inference/目录下执行export HF_CKPT_PATH/path/to/DeepSeek-V4-Flash-Vision-Exp-HF export SAVE_PATH/path/to/DeepSeek-V4-Flash-Vision-Exp-TP4 export MP4 python convert.py \ --hf-ckpt-path ${HF_CKPT_PATH} \ --save-path ${SAVE_PATH} \ --n-experts 256 \ --model-parallel ${MP} \ --expert-dtype fp4参数说明结合 inference/convert.py 的 argparse 定义参数必填说明--hf-ckpt-path✅Hugging Face 权重目录含model.safetensors.index.json与各分片--save-path✅转换后 checkpoint 输出目录--n-experts✅模型总专家数仓库示例为 256--model-parallel✅模型并行度MP必须整除专家数--expert-dtype❌专家权重类型可选fp8或fp4--tokenizer-path❌分词器文件所在目录缺省时从--hf-ckpt-path读取转换脚本的行为要点convert.py会将tokenizer.json与tokenizer_config.json一并拷贝进转换后的 checkpoint 目录见 convert.py当分词器文件不在权重目录时用--tokenizer-path指定转换会按 MP 切分维度可整除的张量param.size(dim) % mp 0断言并将 256 个专家按 rank 划分每个 rank 负责n_experts // mp个本地专家输出model{i}-mp{mp}.safetensors文件fp4专家权重以torch.float4_e2m1fn_x2保存fp8则通过cast_e2m1fn_to_e4m3fn做无损转换底层基于 128 元素 FP8 块与 32 元素 FP4 块的量化表详见 convert.py。运行等价 TXT 与 JSON 示例export CKPT_PATH/path/to/DeepSeek-V4-Flash-Vision-Exp-TP4 export MP4 INPUT_FILEexamples/example_vl.txt ./run.sh INPUT_FILEexamples/example_vl_harmony.json ./run.shinference/run.sh 实际执行的是torchrun --nproc-per-node ${MP} generate.py \ --ckpt-path ${CKPT_PATH} \ --config ${CONFIG} \ --input-file ${INPUT_FILE}其中CKPT_PATH、MP默认 4、CONFIG默认config.json、INPUT_FILE默认examples/example_vl.txt均可用环境变量覆盖。两个示例文件表达了同一个交替两图提示example_vl.txt用紧凑 TXT 记法example_vl_harmony.json用 OpenAI 风格 JSON content blocks二者会编码出完全相同的 Prompt 与输入 token id。交互式聊天torchrun --nproc-per-node ${MP} generate.py \ --ckpt-path ${CKPT_PATH} \ --config config.json \ --interactive \ --temperature 1.0多机执行时只需在generate.py前追加标准的torchrun --nnodes、--node-rank、--master-addr、--master-port参数。生成流程与批处理策略从 inference/generate.py 可以看到参考实现的生成逻辑generate()采用右填充right-padded批处理第一次前向为 prefill 阶段处理min_prompt_len:之后的 token后续逐 token 解码decode 阶段仍在 Prompt 内的位置用真实 token 覆盖模型预测遇到 EOS 即标记完成generate_batched()有一个值得注意的策略含图片的 Prompt 单独推理图片 span 需要单 chunk prefill 以支持图像内双向注意力纯文本 Prompt 则按max_batch_size微批并行——这是实现层面为多模态输入做出的显式取舍。预处理测试在仓库根目录运行python -m pytest -q \ encoding/test_encoding_dsv4.py \ inference/test_image_processor.py该命令会同时验证编码层与图片预处理层的行为。用 vLLM 部署根 README 给出了单机 4×GB300 节点的 vLLM 服务示例命令docker run --gpus all \ vllm/vllm-openai:deepseekv4-flash-vision deepseek-ai/DeepSeek-V4-Flash-Vision-Exp \ --kv-cache-dtype fp8 \ --block-size 256 \ --tensor-parallel-size 4 \ --tool-call-parser deepseek_v4 \ --enable-auto-tool-choice \ --reasoning-parser deepseek_v4 \ --reasoning-config {reasoning_parser:deepseek_v4,reasoning_start_str:,reasoning_end_str:} \ --speculative-config {method:dspark,model:deepseek-ai/DeepSeek-V4-Flash-Vision-Exp,num_speculative_tokens:3,draft_sample_method:probabilistic,enable_adaptive_verification:true}几个关键配置的实战含义--tool-call-parser deepseek_v4与--enable-auto-tool-choice启用 DeepSeek-V4 的 DSML 工具调用解析与自动工具选择这与 encoding_dsv4.py 中 赞分享大模型基础模型多模态计算机视觉DeepSeek【免费下载链接】DeepSeek-V4-Flash-Vision-Exp项目地址https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Flash-Vision-Exp点击查看免费下载相关推荐DeepSeek-V4-Flash-0731 完全指南聊天模板编码、DSpark 投机解码与 vLLM/SGLang/本地推理部署实战DeepSeek V4 Flash 0731 完全指南聊天模板编码、DSpark 投机解码与 vLLM/SGLang/本地推理部署实战 DeepSeek V4人工智能大模型基础模型DeepSeekKTransformers 异构推理实战使用 SGLang KT-Kernel 部署 DeepSeek-V4-Flash 完整指南KTransformers 异构推理实战使用 SGLang KT Kernel 部署 DeepSeek V4 Flash 完整指南 导读 本文是 KTra人工智能大模型推理引擎本地部署微调DeepSeek-V4-Flash-Vision-Exp 视觉编码器深度拆解32 层 ViT、2D RoPE 与 Aligner 如何看懂图像DeepSeek V4 Flash Vision Exp 视觉编码器深度拆解32 层 ViT、2D RoPE 与 Aligner 如何看懂图像 DeepSee大模型基础模型多模态计算机视觉DeepSeek创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表