Skip to content

wangjiezhe/Hy-MT2-Evaluation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hy-MT2 缓存量化测试

测试数据集:google/wmt25pp(英→中)

BLEU(双语评估替补)是一种算法,用于评估从一种语言机器翻译成另一种语言的文本的精确度或准确度。 自定义翻译器使用 BLEU 指标作为传达翻译准确性的一种方式。

BLEU 分数是一个 0 到 100 之间的数字。 0 分表示翻译质量低,翻译中没有任何内容与引用匹配。 分数为 100 表示与引用完全相同的完美翻译。 不需要达到 100 分 - BLEU 分数在 40 到 60 之间表明翻译质量高。

From 测试自定义翻译器 by Microsoft

BLEU(Bilingual Evaluation Understudy)是机器翻译中最常用的自动评价指标之一,它衡量的是机器翻译结果和一个或多个参考译文之间的相似度。

BLEU指标的取值范围为[0,1]之间,值越大代表机器翻译与参考译文越相似,表明翻译效果越好。

BLEU得分 模型表现
0-0.1 差,基本不可读
0.1-0.2 可表达大体意思,有时会有错误
0.2-0.3 基本流畅可用,有一定错误或者不自然
0.3-0.4 很流畅,但不完美
0.4-0.5 很好,接近人工翻译
0.5-1.0 非常好(罕见)

你只要知道BLEU是衡量模型翻译好坏的指标,取值范围[0-1],越大越好。0.3以上就表示该翻译模型基本可用。

From RethinkFun深度学习

机器翻译及 ChatGPT 英翻中译文的 BLEU 值(测试材料为5篇China Daily的中英文新闻)

有道 微软 Google DeepL ChatGPT
均值 51.4 47.2 51.2 53.8 46.1

From 基于BLEU指标的机器翻译译文差异对比——以 China Daily 新闻为例

llama-cpp-python 运行量化模型

直接推理:

模型 K&V 缓存量化 BLEU chrF++
Hy-MT2-1.8B:Q8_0 f16 34.07 18.27
q8_0 34.07 18.27
q4_0 34.07 18.27
Hy-MT2-7B:Q4_K_M f16 59.20 43.74
q8_0 59.20 43.74
q4_0 59.20 43.74

使用 user prompt:

模型 K&V 缓存量化 BLEU chrF++ 时间
Hy-MT2-1.8B:Q8_0 f16 36.62 20.55 06:49
q8_0 36.62 20.55 07:30
q4_0 49.97 29.96 07:21
Hy-MT2-7B:Q4_K_M f16 63.49 45.78 14:47
q8_0 46.98 33.24 15:43
q4_0 46.98 33.24 15:37
Hy-MT2-1.8B:Q8_0* q4_0 48.85 25.12 07:23
Hy-MT2-7B:Q4_K_M* q4_0 63.49 45.78 15:12
Hy-MT2-7B:Q4_K_M** q4_0 50.65 34.41 16:04

使用 system prompt:

模型 K&V 缓存量化 BLEU chrF++ 时间
Hy-MT2-1.8B:Q8_0 f16 49.98 25.38 06:32
q8_0 49.98 25.38 07:06
q4_0 55.64 32.20 07:12
Hy-MT2-7B:Q4_K_M f16 59.20 43.74 14:36
q8_0 59.20 43.74 15:08
q4_0 63.49 45.78 15:09
Hy-MT2-1.8B:Q8_0* q4_0 53.64 31.13 07:00
Hy-MT2-7B:Q4_K_M* q4_0 51.47 34.30 15:18
Hy-MT2-7B:Q4_K_M** q4_0 63.49 45.06 15:52
  • *: 推荐参数重测
  • **: top_p=0.8 重测

使用中文 prompt + user prompt::

模型 K&V 缓存量化 BLEU chrF++ 时间
Hy-MT2-7B:Q4_K_M - 59.20 43.74 14:58
q8_0 59.20 43.74 15:43
q4_0 59.20 43.74 15:43

使用中文 prompt + system prompt::

模型 K&V 缓存量化 BLEU chrF++ 时间
Hy-MT2-7B:Q4_K_M - 59.20 43.74 15:04
q8_0 59.20 43.74 15:42
q4_0 59.20 43.74 15:43

vllm 运行非量化模型

Server: (vllm 0.10.2)

VIRTUAL_ENV=.venv_vllm uv run vllm serve tencent/Hy-MT2-1.8B --tensor-parallel-size 1 --max-model-len 8192 --gpu-memory-utilization 0.66 --port 8118 --kv-cache-dtype fp8

使用 user prompt:

模型 K&V 缓存量化 BLEU chrF++ 时间
Hy-MT2-1.8B - 52.64 33.26 11:55
Hy-MT2-1.8B fp8 52.64 33.26 12:14

使用 system prompt:

模型 K&V 缓存量化 BLEU chrF++ 时间
Hy-MT2-1.8B - 56.68 35.17 11:03

Server: (vllm 0.19.2)

docker run --gpus all -it --rm \
	--ipc=host --ulimit memlock=-1 --ulimit stack=67108864 \
	--name vllm \
	-v ~/.cache/huggingface:/root/.cache/huggingface \
	--env "HF_ENDPOINT=$HF_ENDPOINT" \
	-p 8118:8000 nvcr.nju.edu.cn/nvidia/vllm:26.04-py3 \
	vllm serve tencent/Hy-MT2-1.8B \
	--tensor-parallel-size 1 --max-model-len 8192 --gpu-memory-utilization 0.66 \
	--override-generation-config '{"repetition_penalty": 1.05, "temperature": 0.7, "top_k": 20, "top_p": 0.6, "max_tokens": 4096}' \
	--attention-backend FLASHINFER

使用 system prompt:

模型 后端 BLEU chrF++ 时间
Hy-MT2-1.8B FlashInfer 54.82 32.91 10:17
Hy-MT2-1.8B Flash Attention 54.82 32.91 10:24

使用 FlashInfer 比 Flash Attention 占用的显存要多(约1G〖?〗)。

显存占用(预估)

模型 上下文长度 K&V 缓存量化 显存 (G)
Hy-MT2-1.8B:Q8_0 40960 f16 3.11
q8_0 2.53
q4_0 2.23
Hy-MT2-7B:Q4_K_M 20480 f16 5.77
q8_0 5.20
q4_0 4.89

Gemma 4 26B A4B (4bit QAT) (with MTP)

模型:unsloth/gemma-4-26B-A4B-it-qat-GGUF

使用 system prompt:

思考 K&V 缓存量化 BLEU chrF++ 时间
non-thinking q8_0 29.99 18.15 24:25
thinking q8_0 29.56 15.43 6:19:45

PPL

PPL 是 Perplexity(困惑度) 的缩写,它是衡量语言模型性能的常用指标,特别是在评估经典语言模型自回归因果语言模型)的生成任务时。

PPL 主要用于衡量模型对给定文本的预测能力。PPL 反映了模型在处理一段文本时的“不确定性”或“困惑度”,数值越低,表示模型越擅长预测下一个词汇。

  • 较低的 PPL:表示模型更准确地预测了文本中的词汇,模型对语言结构的掌握更好。

  • 较高的 PPL:表示模型对文本的预测较为不确定,困惑度高,模型的表现较差。

在 AWQ 和 GPTQ 的量化研究中,PPL 被用来评估模型在不同量化位宽下的性能表现,例如 3-bit 或 4-bit 量化对模型预测能力的影响。

From AI-Guide-and-Demos-zh_CN

命令:.\llama-perplexity.exe -ngl 99 -m $MODEL -fa on -f .\test.txt -ctk $K -ctv $V

模型 K&V 缓存量化 PPL
Hy-MT2-7B:Q4_K_M f16 33.9120 ± 0.96412
q8_0 33.9277 ± 0.96509
q4_0 33.6081 ± 0.95230
Hy-MT2-1.8B:Q8_0 f16 18.9252 ± 0.40557
q8_0 18.9504 ± 0.40618
q4_0 19.2110 ± 0.41287

结论

  • 量化的大模型优于非量化的小模型
  • 开启K&V缓存量化,速度略有下降(与实际使用的感官不同〖?〗),但是显存占用明显减少。
  • 对于量化的小模型,使用 K&V 缓存量化没有太大的负面影响。
    • 实测,在使用 KISS Translator 开启聚合之后,有一定概率出现漏翻的情况。
    • 使用 Trancy 时较少遇到这种情况。
  • 官方推荐 max_tokens=4096 是有道理的,超过 4k 的输入经常会出现中间漏翻的情况。有时还会只翻译第一句就结束了。
  • Hy-MT2-7B:Q4_K_M 模型
    • 上下文长度务必设为0!(否则经常直接返回上一个翻译结果。)
    • 输入 ≈240 tokens/s,输出 ≈18 tokens/s
    • 开启q8_0缓存量化,输入 ≈1.6k tokens/s,输出 ≈38 tokens/s
    • 开启q4_0缓存量化,输入 ≈1.8k tokens/s,输出 ≈35 tokens/s

About

对 Hy-MT2 翻译大模型进行缓存量化测试

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages