【量化实战】单卡3090部署Hy-SimulMT-30B-A3B-Interleave同传大模型

【量化实战】单卡3090部署Hy-SimulMT-30B-A3B-Interleave同传大模型

  • 前言
  • 量化转换过程
    • [1. 执行量化转换脚本](#1. 执行量化转换脚本)
    • [2. 补全原始模型组件](#2. 补全原始模型组件)
    • [3. 补充量化配置字段](#3. 补充量化配置字段)
  • 量化前后效果对比
    • [1. 语音识别与翻译质量对比](#1. 语音识别与翻译质量对比)
    • [2. 延迟与推理性能对比](#2. 延迟与推理性能对比)
    • 结果总结

前言

2026 年 10 月 26 日,腾讯混元正式开源同声传译大模型 Hy-SimulMT。该模型支持中英双向"语音到语音"实时翻译:音频流持续输入,模型边听边译,同步输出译文文本与合成语音,并支持实时音色克隆,可高度还原说话人的声音与语气。在 RealSI 长音频评测中,Hy-SimulMT 的 StreamLAAL(流式翻译延迟)约为 3 秒,低于参与对比的全部开源模型与商用 API,GEMBA 翻译质量得分同样领先。

模型采用 MoE(混合专家)架构,总参数 30B、单次推理仅激活约 3B 参数,即名称中的 30B-A3B。本文实战使用 Hy-SimulMT-30B-A3B-Interleave 基底版本,该版本为源文与译文交错训练,推理时可同时输出源语言转写文本和译文(source + target)。

此前我们已实现双卡 RTX 3090 部署 FP8 版本模型(详见 【Hy-SimulMT 实战】双卡 RTX 3090 部署 30B 同传大模型),本文进一步通过 W4A16 RTN(就近舍入)权重量化,将模型压缩至单张 RTX 3090 可运行的体量,完整记录量化转换流程、关键操作与效果对比。

转换完成的量化模型已上传至 ModelScope,可直接下载使用:Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN

量化转换过程

本次量化基于 LLM Compressor 工具链实现,采用无校准数据的 RTN(Round to Nearest)量化方案,将语言模型主干线性层权重压缩至 4bit,激活值保持 16bit;同时保留 MoE 路由层、语言模型输出头与音频编码器不量化,在压缩显存的同时最小化精度损失。

1. 执行量化转换脚本

核心思路:在 CPU 侧加载原始 BF16 模型,修正 MoE 中间层维度配置后,调用 LLM Compressor 的 oneshot 接口完成权重量化,最后导出量化 checkpoint。

完整转换脚本如下:

python 复制代码
import os

os.environ["CUDA_VISIBLE_DEVICES"] = ""
os.environ["TOKENIZERS_PARALLELISM"] = "false"

from transformers import AutoModelForCausalLM, AutoTokenizer, AutoConfig
from llmcompressor import oneshot
from llmcompressor.modifiers.quantization import QuantizationModifier

MODEL_ID = "./Hy-SimulMT-30B-A3B-Interleave"
SAVE_DIR = "./Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN"

# ========== 配置修正 ==========
# 修正MoE中间层维度,匹配模型实际结构
config = AutoConfig.from_pretrained(MODEL_ID, trust_remote_code=True)
config.moe_intermediate_size = 768

# ========== 加载模型 ==========
model = AutoModelForCausalLM.from_pretrained(
    MODEL_ID,
    config=config,
    trust_remote_code=True,
    device_map="cpu",
    torch_dtype="auto"
)
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code=True)

# ========== 量化配置 ==========
# W4A16权重量化,跳过路由层、门控层与输出头,避免MoE调度精度下降
recipe = QuantizationModifier(
    targets="Linear",
    scheme="W4A16",
    ignore=[
        "lm_head",
        "re:.*mlp.gate$",
        "re:.*gate.weight$",
        "re:.*router.*"
    ]
)

oneshot(model=model, recipe=recipe, tokenizer=tokenizer)

# 清理生成配置默认值
if hasattr(model, "generation_config"):
    model.generation_config.temperature = None
    model.generation_config.top_p = None
    model.generation_config.top_k = None

# 保存量化模型
model.save_pretrained(SAVE_DIR)
tokenizer.save_pretrained(SAVE_DIR)
print(f"量化模型已保存至: {SAVE_DIR}")

关键日志说明

执行过程中核心输出如下,包含几处可预期的提示:

bash 复制代码
# 无GPU环境提示,CPU侧量化为预期行为
2026-11-10T02:54:55.9271 | get_main_device | WARNING - No accelerator available! Compressing model on CPU instead

# 音频塔权重被标记为UNEXPECTED,属正常现象:量化工具仅处理语言模型,多模态组件不参与量化
[transformers] HYV3ForCausalLM LOAD REPORT from: ./Hy-SimulMT-30B-A3B-Interleave
audio_tower.*  | UNEXPECTED

# MoE自动线性化:工具自动将融合的3D专家权重展开为2D线性层以支持量化
2026-11-10T02:55:22.9655 | apply_recipe_modifiers | WARNING - Detected an MoE model which has not been linearized.
Linearizing experts: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 47/47 [00:13<00:00,  3.53it/s]

# 量化完成并导出
Compressing model: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 18384/18384 [00:21<00:00, 858.18it/s]
量化模型已保存至: ./Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN

注:脚本末尾的 ResourceTracker.__del__ 报错为 Python 多进程库的已知兼容问题,不影响模型文件导出结果,可直接忽略。

2. 补全原始模型组件

LLM Compressor 仅对语言模型主干进行量化处理,音频编码器、分词器等多模态组件不会被自动导出,需从原始 checkpoint 中完整复制,保障语音输入功能正常。

bash 复制代码
ORIGIN_DIR="./Hy-SimulMT-30B-A3B-Interleave"
QUANT_DIR="./Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN"

# 复制分词器相关文件
cp "$ORIGIN_DIR/tokenizer_config.json" "$QUANT_DIR/"
cp "$ORIGIN_DIR/tokenizer.json" "$QUANT_DIR/"
cp "$ORIGIN_DIR/special_tokens_map.json" "$QUANT_DIR/"

# 复制音频编码器权重与预处理配置
cp "$ORIGIN_DIR/model-audio-tower.safetensors" "$QUANT_DIR/"
cp "$ORIGIN_DIR/preprocessor_config.json" "$QUANT_DIR/"

3. 补充量化配置字段

原始模型 config.json 不包含量化元数据,需手动添加 quantization_config 字段,使 vLLM 可正确识别 compressed-tensors 格式的 4bit 权重。

在 config.json 根节点中新增如下配置:

json 复制代码
{
  "quantization_config": {
    "config_groups": {
      "group_0": {
        "format": "pack-quantized",
        "input_activations": null,
        "output_activations": null,
        "targets": [
          "Linear"
        ],
        "weights": {
          "dynamic": false,
          "group_size": 128,
          "num_bits": 4,
          "observer": "memoryless_minmax",
          "strategy": "group",
          "symmetric": true,
          "type": "int"
        }
      }
    },
    "format": "pack-quantized",
    "global_compression_ratio": null,
    "ignore": [
      "model.layers.1.mlp.router.gate",
      "model.layers.2.mlp.router.gate",
      "model.layers.3.mlp.router.gate",
      "model.layers.4.mlp.router.gate",
      "model.layers.5.mlp.router.gate",
      "model.layers.6.mlp.router.gate",
      "model.layers.7.mlp.router.gate",
      "model.layers.8.mlp.router.gate",
      "model.layers.9.mlp.router.gate",
      "model.layers.10.mlp.router.gate",
      "model.layers.11.mlp.router.gate",
      "model.layers.12.mlp.router.gate",
      "model.layers.13.mlp.router.gate",
      "model.layers.14.mlp.router.gate",
      "model.layers.15.mlp.router.gate",
      "model.layers.16.mlp.router.gate",
      "model.layers.17.mlp.router.gate",
      "model.layers.18.mlp.router.gate",
      "model.layers.19.mlp.router.gate",
      "model.layers.20.mlp.router.gate",
      "model.layers.21.mlp.router.gate",
      "model.layers.22.mlp.router.gate",
      "model.layers.23.mlp.router.gate",
      "model.layers.24.mlp.router.gate",
      "model.layers.25.mlp.router.gate",
      "model.layers.26.mlp.router.gate",
      "model.layers.27.mlp.router.gate",
      "model.layers.28.mlp.router.gate",
      "model.layers.29.mlp.router.gate",
      "model.layers.30.mlp.router.gate",
      "model.layers.31.mlp.router.gate",
      "model.layers.32.mlp.router.gate",
      "model.layers.33.mlp.router.gate",
      "model.layers.34.mlp.router.gate",
      "model.layers.35.mlp.router.gate",
      "model.layers.36.mlp.router.gate",
      "model.layers.37.mlp.router.gate",
      "model.layers.38.mlp.router.gate",
      "model.layers.39.mlp.router.gate",
      "model.layers.40.mlp.router.gate",
      "model.layers.41.mlp.router.gate",
      "model.layers.42.mlp.router.gate",
      "model.layers.43.mlp.router.gate",
      "model.layers.44.mlp.router.gate",
      "model.layers.45.mlp.router.gate",
      "model.layers.46.mlp.router.gate",
      "model.layers.47.mlp.router.gate",
      "lm_head"
    ],
    "kv_cache_scheme": null,
    "moe_sparsity_config": null,
    "quant_method": "compressed-tensors",
    "quantization_status": "compressed",
    "sparsity_config": {},
    "transform_config": {},
    "version": "0.20.1"
  }
}

完成以上三步后,即可参照双卡部署的启动方式,在单卡 RTX 3090 上通过 vLLM 加载量化模型。

量化前后效果对比

本次评测基于 RealSI 中英双向语音翻译测试集,测试环境与基准 FP8 版本完全一致,覆盖 SSE、POLL、WebSocket 三种请求模式,从语音识别与翻译质量 、延迟与推理性能两个维度进行对比。

测试集详细说明可参考:【S2TT测试集】中英双向语音到文本翻译测试集 RealSI

1. 语音识别与翻译质量对比

模型版本 请求模式 中文CER 英文WER 英中BLEU 英中COMET 中英BLEU 中英COMET
Hy-SimulMT-30B-A3B-Interleave-FP8 SSE 6.79% 14.03% 19.67 0.6457 29.88 0.6075
Hy-SimulMT-30B-A3B-Interleave-FP8 POLL 6.75% 14.55% 19.81 0.6324 32.21 0.6082
Hy-SimulMT-30B-A3B-Interleave-FP8 WebSocket 7.01% 13.97% 20.35 0.6525 31.58 0.6050
Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN SSE 7.43% 14.32% 19.09 0.6128 29.96 0.5921
Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN POLL 6.66% 13.99% 18.50 0.6250 27.88 0.5761
Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN WebSocket 7.03% 13.72% 18.66 0.6226 29.82 0.5798

2. 延迟与推理性能对比

模型版本 请求模式 端到端延迟(s) 平均首字延迟(s) 平均总处理时长(s)
Hy-SimulMT-30B-A3B-Interleave-FP8 SSE 5.05 23.66 82.61
Hy-SimulMT-30B-A3B-Interleave-FP8 POLL 5.15 24.86 78.10
Hy-SimulMT-30B-A3B-Interleave-FP8 WebSocket 2.96 1.69 288.09
Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN SSE 5.35 24.63 80.84
Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN POLL 5.27 25.12 79.95
Hy-SimulMT-30B-A3B-Interleave-W4A16-RTN WebSocket 3.20 1.60 288.06

结果总结

  1. 精度损失可控:W4A16 RTN 量化后,ASR 识别准确率基本与 FP8 基准持平,CER/WER 波动在 0.5% 以内;翻译质量 BLEU 下降约 1~2 分,COMET 下降约 0.02~0.03,属于可接受范围,满足日常同传场景使用需求。
  2. 延迟影响微小:三种请求模式下,量化后端到端延迟仅增加 0.2~0.3s,首字延迟与总处理时长无显著差异,模型实时性得到完整保留。
  3. 显存收益显著:通过 4bit 量化,模型权重显存占用降低约 50%,配合上下文长度限制,可在单张 RTX 3090(24GB)上完整部署运行,大幅降低了该同传模型的硬件门槛。
相关推荐
东姬AI4 小时前
迪士尼联手Adobe自训“片场专用“AI模型:当内容工业按下生产线开关,角色“开口“这道工序还没自动化
大模型·数字人·多模态·ai视频生成·内容生产
承渊政道21 小时前
LangChainAI应用开发框架【LangChain与LangGraph介绍】
langchain·大模型·langgraph·ai应用开发
Flynn Liang21 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
武雄(小星Ai)1 天前
Ollama报llama-server binary not found排坑实录:服务活着引擎没了
人工智能·windows·大模型·ollama·排坑
小田学Python2 天前
工具调用:让 Agent 从“说”到“做”
大数据·大模型·agent·ai工具·deepseek
小田学Python3 天前
DeepSeek Harness 完整上手指南:安装部署 + 必装插件 + 用一周就回不去的功能
大数据·大模型·agent·ai工具·deepseek
aicat_cn3 天前
json-render 接入 Chat SDK:Agent 在 Slack 和 Teams 里直接回表格和按钮
ai·大模型
神奇的代码在哪里3 天前
Agent 记忆的组成部分:Anthropic The components of agent memory 文章的简要解读
大模型·claude·ai agent·上下文工程·agent记忆
神奇的代码在哪里3 天前
ERNIE-5.5-Flash-Base 开源速览:280B-A14B MoE 基座,微调与推理支持 1M 上下文
大模型·模型部署·文心大模型·moe·ernie5.5