HunyuanOCR-ncnn —— fp16 模型
本目录是 HunyuanOCR 的 全 fp16(半精度) ncnn 推理模型,由官方模型经
export_onnx.py --fp16 导出 ONNX 后转换得到。
体积
总体积约 2.2 GB(相对 fp32 的 5.9 GB 缩减约 63%)。
精度说明
- 全模型权重以 fp16 存储;CPU 推理时
vision_encoder / embed / lm_head / projector
实际按 fp16 计算,LLM decoder 因内部结构(静态序列长度 512、无真正 KV cache)
在 CPU 上仍走 fp32 计算路径。
- 实测输出与 fp32 模型逐字节一致(英文
En.png、中文 qikai.png 均已验证)。
- 适合对精度要求高、显存/磁盘敏感但又不希望引入 int8 校准风险的场景。
文件清单
配置与词表
| 文件 |
说明 |
model.json |
模型元信息(结构、维度、词表大小等) |
vocab.txt |
分词器词表(120818 词条) |
merges.txt |
BPE 合并规则 |
image_begin.bin / image_end.bin / image_newline.bin |
图像占位符 token 的 embedding |
视觉编码器(Vision Encoder)
| 文件 |
大小 |
说明 |
vision_encoder.ncnn.param / .bin |
844M |
CLIP 视觉编码器(fp16) |
perceptron_weights.bin |
118M |
感知机/投影前权重 |
pos_embed_32x32.bin |
4.5M |
32×32 位置编码 |
projector.ncnn.param / .bin |
2.1M |
视觉特征 → 文本空间投影层(fp16) |
LLM 解码器
| 文件 |
大小 |
说明 |
decoder.ncnn.param / .bin |
809M |
主解码网络(含 prefill + decode,CPU 走 fp32) |
decoder_prefill.ncnn.param |
75K |
prefill 阶段子图 |
decoder_decode.ncnn.param |
78K |
decode 阶段子图 |
embed.ncnn.param / .bin |
236M |
词嵌入层(fp16) |
lm_head.ncnn.param / .bin |
236M |
输出词表投影头(fp16) |
运行方式
./build-cpu/hunyuan_ocr.exe \
--model assets/hunyuan_ocr_ncnn_fp16 \
--image source/En.png \
--prompt "请识别图片中的文字内容" \
--quant fp16 \
--threads 8 \
--max-tokens 4096
--quant fp16:运行时开启 fp16 计算路径(见 src/quant_opt.h)。
- GPU(Vulkan)推理:追加
--use-vulkan 1(此时仅 fp16 路径生效,int8 无效)。
与 int8 模型的关系
- 本目录是 int8 混合方案的精度基准:int8 模型(
hunyuan_ocr_ncnn_int8)仅把
embed / lm_head 转为 int8,其余(含 vision_encoder、decoder、projector)
直接复用本目录的文件,因此输出与本目录逐字节一致。
- 若你的设备对体积更敏感且能接受 int8 的轻微风险,见
../hunyuan_ocr_ncnn_int8/README.md。