签到成功

知道了

CNDBA社区CNDBA社区

Qwen3-32B 最大 Tokens 从 32k 改成 128k(YaRN)

2025-12-19 10:53 17 0 转载 大模型
作者: dave

✅ 一、前提条件

  1. 使用 Qwen3-32B 的开源版本
  2. 推理框架支持 RoPE 扩展
    • 推荐:vLLM ≥ 0.6.0SGLang ≥ 0.4.0llama.cpp(需编译支持 YaRN)。
  3. GPU 显存充足
    • 128K 上下文会显著增加 KV Cache 显存占用(INT4 量化下约需 25–35GB)。

✅ 二、启用 128K 的核心方法:YaRN(Yet another RoPE extensioN)

Qwen 系列使用 RoPE(旋转位置编码),原生仅支持 32K。通过 YaRN 插值 + 动态缩放,可安全外推至 128K。http://www.cndba.cn/cndba/dave/article/131783

http://www.cndba.cn/cndba/dave/article/131783

▶ 方法 1:使用 vLLM(推荐)

# 安装 vLLM >= 0.6.0
pip install vllm>=0.6.0

# 启动 API 服务(启用 YaRN 扩展至 128K)
python -m vllm.entrypoints.openai.api_server /
  --model /path/to/Qwen3-32B /
  --dtype auto /
  --tensor-parallel-size 2 /          # 根据 GPU 数量调整
  --max-model-len 131072 /
  --rope-scaling '{"type":"yarn","factor":4.0,"original_max_position_embeddings":32768}'

🔔 关键参数说明:

  • --max-model-len 131072:设置最大上下文长度;
  • --rope-scaling:启用 YaRN,factor=4.0 表示从 32K → 128K(32768 × 4 = 131072)。

▶ 方法 2:使用 Transformers + YaRN 补丁

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "Qwen/Qwen3-32B",
    device_map="auto",
    rope_scaling={
        "type": "yarn",
        "factor": 4.0,
        "original_max_position_embeddings": 32768
    }
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen3-32B")

⚠️ 注意:Hugging Face Transformers 对 YaRN 的原生支持有限,建议优先使用 vLLM/SGLanghttp://www.cndba.cn/cndba/dave/article/131783

http://www.cndba.cn/cndba/dave/article/131783


✅ 三、验证是否生效

  1. 检查模型 confighttp://www.cndba.cn/cndba/dave/article/131783http://www.cndba.cn/cndba/dave/article/131783

    print(model.config.rope_scaling)
    # 应输出 {'type': 'yarn', 'factor': 4.0, ...}
    
  2. 测试长文本输入(>32K tokens):

    http://www.cndba.cn/cndba/dave/article/131783

    • 若能正常生成且不报错,则扩展成功。

⚠️ 四、注意事项

项目 说明
性能影响 128K 下推理速度比 32K 慢 30%~50%,显存增加 20%~40%
精度损失 极长上下文中远距离 token 的注意力可能弱化(属所有 LLM 共性)
非官方默认 阿里未在原始权重中启用 128K,需自行配置
输出长度限制 即使上下文为 128K,单次生成长度通常仍限于 8192 tokens

✅ 五、替代方案(若不想折腾)

直接调用阿里云 Qwen-Plus API

http://www.cndba.cn/cndba/dave/article/131783
http://www.cndba.cn/cndba/dave/article/131783

  • 原生支持 128K 上下文
  • 无需部署,按 token 计费;
  • 适合不想自建推理服务的场景。

🔚 总结

Qwen3-32B 可通过 YaRN 技术将最大 token 从 32K 扩展至 128K
关键步骤http://www.cndba.cn/cndba/dave/article/131783

  1. 使用 vLLM/SGLang 等支持 RoPE 扩展的推理引擎;
  2. 配置 rope_scaling={"type":"yarn", "factor":4.0}
  3. 设置 max_model_len=131072

此方案已在多个生产环境中验证,适用于法律、医疗、科研等超长文档处理场景。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 659
    转载
  • 199
    评论
  • 访问:9730596次
  • 积分:4557
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ