Coderdw commited on
Commit
b64243d
·
verified ·
1 Parent(s): 45b0780

Add ncnn model card and usage guide

Browse files
Files changed (1) hide show
  1. README.md +194 -0
README.md CHANGED
@@ -1,5 +1,199 @@
1
  ---
 
 
 
2
  license: other
3
  license_name: youtu-vl
4
  license_link: LICENSE
 
 
 
 
 
 
 
 
 
 
5
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ language:
3
+ - zh
4
+ - en
5
  license: other
6
  license_name: youtu-vl
7
  license_link: LICENSE
8
+ library_name: ncnn
9
+ pipeline_tag: image-text-to-text
10
+ base_model: tencent/Youtu-VL-4B-Instruct
11
+ tags:
12
+ - ncnn
13
+ - pnnx
14
+ - cpp
15
+ - vision-language
16
+ - multimodal
17
+ - image-text-to-text
18
  ---
19
+
20
+ # Youtu-VL-4B-Instruct-ncnn
21
+
22
+ 这是
23
+ [`tencent/Youtu-VL-4B-Instruct`](https://huggingface.co/tencent/Youtu-VL-4B-Instruct)
24
+ 的 pnnx/ncnn 部署版本,面向不依赖 Python、PyTorch 和 Transformers 的
25
+ C++ CPU 推理。
26
+
27
+ 本仓库只发布转换后的 ncnn 模型资产。模型需要与专用
28
+ `Youtu-VL-ncnn` C++ 运行时配套使用,不能直接通过
29
+ `AutoModel.from_pretrained()`、Hugging Face Inference API 或标准
30
+ Transformers Pipeline 加载。
31
+
32
+ ## 项目来源
33
+
34
+ | 项目 | 来源 |
35
+ | --- | --- |
36
+ | 原始模型 | [tencent/Youtu-VL-4B-Instruct](https://huggingface.co/tencent/Youtu-VL-4B-Instruct) |
37
+ | 官方代码 | [TencentCloudADP/youtu-vl](https://github.com/TencentCloudADP/youtu-vl) |
38
+ | 技术报告 | [Youtu-VL: Unleashing Visual Potential via Unified Vision-Language Supervision](https://arxiv.org/abs/2601.19798) |
39
+ | 推理框架 | [Tencent/ncnn](https://github.com/Tencent/ncnn) |
40
+ | 模型转换工具 | [pnnx](https://github.com/pnnx/pnnx) |
41
+ | C++ 运行时 | `Youtu-VL-ncnn`,源码通过独立 GitHub 仓库发布 |
42
+
43
+ Youtu-VL 是腾讯优图实验室发布的视觉语言模型,基于 Youtu-LLM,并使用
44
+ Vision-Language Unified Autoregressive Supervision。原模型同时覆盖通用
45
+ 视觉问答、多模态理解以及目标检测、视觉定位等视觉中心任务。
46
+
47
+ 本项目没有重新训练 Youtu-VL,也不改变原模型的所有权。项目工作集中在部署
48
+ 链路迁移:使用 pnnx 将模型计算转换为 ncnn 图,并以 C++ 实现图片
49
+ Processor、Chat Template、ByteLevel-BPE、KV Cache、Prefill/Decode 调度
50
+ 和最终文本解码。
51
+
52
+ ## 转换后的运行结构
53
+
54
+ ```text
55
+ image + prompt
56
+ -> C++ image decode / resize / normalize / patchify
57
+ -> C++ Chat Template + ByteLevel-BPE
58
+ -> ncnn 27-layer Vision
59
+ -> ncnn VLPatchMerger
60
+ -> image/text token fusion
61
+ -> ncnn 40-layer LLM Prefill
62
+ -> KV-cache Decode
63
+ -> Final RMSNorm + 17 LM-head shards
64
+ -> C++ coordinate postprocess + UTF-8 text
65
+ ```
66
+
67
+ 模型按照实际运行边界拆分为多个 ncnn 子图。线性层、归一化、激活和投影由
68
+ ncnn 执行;动态图像网格、Vision RoPE/mask、图文 token 融合、KV Cache
69
+ 及生成循环由 C++ 调度。
70
+
71
+ 推理运行时不依赖 Python、PyTorch、Transformers、BLAS、MKL 或 OpenBLAS。
72
+
73
+ ## 文件说明
74
+
75
+ | 文件 | 说明 |
76
+ | --- | --- |
77
+ | `youtu-vl-ncnn-model.tar.gz` | 完整 ncnn 模型压缩包 |
78
+ | `MODEL_PACKAGE_SHA256.txt` | 压缩包 SHA-256 |
79
+ | `LICENSE` | Youtu-VL License |
80
+
81
+ 压缩包解开后生成 `model/`:
82
+
83
+ ```text
84
+ model/
85
+ ├── artifacts/
86
+ │ ├── vision_embedding/
87
+ │ ├── vision_layer0_masked_core/ ... vision_layer26_masked_core/
88
+ │ ├── vision_post_layernorm/
89
+ │ ├── llm_layer0_three_part/ ... llm_layer39_three_part/
90
+ │ ├── llm_final_head_ncnn/
91
+ │ ├── text_embedding/
92
+ │ └── llm_rope_inv_freq.npy
93
+ ├── models/
94
+ │ └── youtu_merger.ncnn.{param,bin}
95
+ ├── tokenizer/
96
+ │ └── tokenizer.bin
97
+ └── checksums.sha256
98
+ ```
99
+
100
+ 完整模型包含 339 个运行资产,解压后约 13.43 GiB。
101
+
102
+ ## 下载、校验与解压
103
+
104
+ 安装 Hugging Face CLI:
105
+
106
+ ```bash
107
+ python3 -m pip install -U huggingface_hub
108
+ ```
109
+
110
+ 下载模型包:
111
+
112
+ ```bash
113
+ hf download Coderdw/Youtu-VL-4B-Instruct-ncnn \
114
+ youtu-vl-ncnn-model.tar.gz MODEL_PACKAGE_SHA256.txt \
115
+ --local-dir model-download
116
+ ```
117
+
118
+ 校验并解压:
119
+
120
+ ```bash
121
+ cd model-download
122
+ sha256sum -c MODEL_PACKAGE_SHA256.txt
123
+ tar -xzf youtu-vl-ncnn-model.tar.gz
124
+ (cd model && sha256sum -c checksums.sha256)
125
+ ```
126
+
127
+ 当前模型包 SHA-256:
128
+
129
+ ```text
130
+ BAF79D8507B89AFDDC70EC151605A41A7616F03A9ACA3983B804FBE52302C4AA youtu-vl-ncnn-model.tar.gz
131
+ ```
132
+
133
+ ## C++ 推理
134
+
135
+ 在 `Youtu-VL-ncnn` 源码根目录完成 CMake 构建后运行:
136
+
137
+ ```bash
138
+ ./build/youtu_vl_ncnn \
139
+ --model-root /path/to/model-download/model \
140
+ --image /path/to/image.jpg \
141
+ --prompt "Describe this image." \
142
+ --output-dir out/run \
143
+ --max-new-tokens 128 \
144
+ --weight-mode persistent \
145
+ --threads 8
146
+ ```
147
+
148
+ `persistent` 模式会在 Prefill 前加载 138 个 ncnn 图,并在生成阶段持续复用。
149
+ 该模式实测最大 RSS 约 24 GiB,建议至少准备 32 GiB 内存,推荐 64 GiB。
150
+
151
+ ## 验证结果
152
+
153
+ 验证条件为单图片、单 Prompt、batch size 1、greedy decode、CPU Release、
154
+ 8 threads 和 Vulkan OFF。
155
+
156
+ | 验证范围 | 结果 |
157
+ | --- | --- |
158
+ | Linux 32/64/128 token | 最终 token ID 与 PyTorch 参考逐元素一致,文本一致 |
159
+ | Windows 1/32/64/128 token | 最终 token ID 与 PyTorch 参考逐元素一致,文本一致 |
160
+ | 英文 VQA、物体检测 | 64-token 用例均通过 |
161
+ | Persistent 生命周期 | `resident_models=138`,`model_load_count=138` |
162
+ | Python/Transformers 运行时依赖 | 无 |
163
+ | BLAS/MKL/OpenBLAS/Vulkan 依赖 | 无 |
164
+
165
+ Linux Persistent 最终版相对重复加载基线,在 32/64/128 token 下的总耗时
166
+ 分别获得约 1.64×、1.46× 和 1.36× 加速。
167
+
168
+ ## 使用范围与限制
169
+
170
+ - 当前验证范围是单张图片和单个文本 Prompt,batch size 为 1。
171
+ - 当前发布版本以 CPU Release、Vulkan OFF 为验收配置。
172
+ - 多图片、视频、批量推理和服务端并发不在当前验证范围内。
173
+ - 模型输出可能继承原始模型的知识偏差、幻觉和安全限制。
174
+ - 本模型包是部署格式转换,不应被描述为新的训练模型或新的基础模型。
175
+
176
+ ## License
177
+
178
+ 模型、转换权重及使用行为遵循仓库中的
179
+ [Youtu-VL License](LICENSE)。使用前请同时阅读原始模型仓库的许可证与
180
+ 使用限制。
181
+
182
+ 本项目使用 ncnn,并通过 pnnx 完成模型图转换;相关组件分别遵循其自身的
183
+ 开源许可证。本仓库与腾讯优图实验室不存在官方隶属或背书关系。
184
+
185
+ ## Citation
186
+
187
+ 使用本模型时,请引用原始 Youtu-VL 工作:
188
+
189
+ ```bibtex
190
+ @article{youtu-vl,
191
+ title={Youtu-VL: Unleashing Visual Potential via Unified Vision-Language Supervision},
192
+ author={Tencent Youtu Lab},
193
+ year={2026},
194
+ eprint={2601.19798},
195
+ archivePrefix={arXiv},
196
+ primaryClass={cs.CV},
197
+ url={https://arxiv.org/abs/2601.19798}
198
+ }
199
+ ```