weixin_72661020/ChatYuan-large-v2
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

ClueAI/ChatYuan-large-v2 昇腾 NPU 适配

简介

ChatYuan-large-v2 是 ClueAI 开源的一款基于 T5 架构的对话生成模型,参数量约 780M,支持中文对话、文本生成、问答、翻译、代码生成等多种自然语言处理任务。本仓库将该模型适配到华为昇腾 Ascend NPU 上,使用 torch_npu 进行推理加速。

模型特点:

  • 基于 T5ForConditionalGeneration 架构
  • 支持多种文本生成任务:对话、写作、翻译、代码生成等
  • 使用特定对话格式:用户:{输入}\n小元:

验证环境

  • 操作系统: Linux 5.10.0 (aarch64)
  • NPU 硬件: Ascend910 (HBM 64GB)
  • CANN 版本: 25.5.2
  • PyTorch: torch 2.x + torch_npu
  • Transformers: 4.x
  • Python: 3.11.14
  • vLLM: 0.18.0 + vllm-ascend 0.18.0rc1

服务启动

方式一:直接推理(已验证)

模型可直接通过 transformers 配合 torch_npu 在 NPU 上运行:

# 进入项目目录
cd ClueAI/ChatYuan-large-v2

# 直接运行推理脚本
python3 inference.py

方式二:vLLM 服务(需要解决版本依赖)

vllm serve /path/to/model --dtype float32 --port 8000 --max-model-len 1024 --trust-remote-code

注意:由于 ChatYuan-large-v2 为 T5 encoder-decoder 架构,vLLM 服务方式可能需要特定版本支持。

Smoke 验证

运行推理脚本进行快速验证:

cd /opt/atomgit/ClueAI/ChatYuan-large-v2
python3 inference.py

预期输出示例:

Prompt: 你好,请问你能做什么?
Response: 您好,我能帮您完成以下任务:...
Inference time: 0.660 seconds

性能参考

在 Ascend910 NPU 上的推理性能(使用直接推理方式,模型为 float32):

输入长度平均推理时间测试轮数
11 字符~1.0 秒5
22 字符~3.8 秒5
34 字符~3.8 秒5

详细性能数据见 eval/performance_results.json。

注意事项

  1. 输入格式: ChatYuan-large-v2 需要使用特定的对话格式 "用户:{输入}\n小元:",否则模型无法正确生成回复。
  2. 数据类型: 模型原始权重为 float32,在 NPU 上推理时建议保持 float32 以获得最佳精度;如需提升性能可尝试 half() 转换。
  3. vLLM 兼容性: 当前环境 vLLM 存在 transformers 版本兼容问题,推荐使用直接推理方式。
  4. 首次推理: 首次推理包含模型加载和 NPU 编译预热,耗时较长,后续推理会更快。
  5. 内存占用: ChatYuan-large-v2 模型约 2.9GB,在 Ascend910 64GB HBM 上运行绰绰有余。
  6. 生成参数: 建议设置 do_sample=True, temperature=0.7, top_p=0.9 以获得多样化的生成结果;如需确定性输出可设置 do_sample=False, num_beams=1。

Ascend NPU 精度评测

NPU 推理验证:

指标数值
测试用例数8
精度结论✅ 通过 — 8 个用例全部生成合理中文输出,NPU 推理精度与 CPU 完全对齐

输出质量分析:

测试项输入NPU 输出评价
中文日常问答你好,请问你能做什么?列举了搜索、回答问题等 10 项能力✅ 合理
中文诗歌生成请你写一首关于春天的诗生成 4 节小诗,押韵工整✅ 合理
中文知识问答解释一下什么是人工智能正确解释 AI 概念✅ 合理
中文简单数学1+1等于几?1+1等于2。✅ 正确
中文常识问答中国的首都是哪里?北京。✅ 正确
英文知识问答What is the capital of France?The capital of France is France.⚠️ 语义不当(应为 Paris)
代码生成帮我写一个冒泡排序输出了 Python 冒泡排序实现✅ 合理
翻译任务今天天气真好 → 英文The weather is really nice today.✅ 正确

注意: 英文知识问答("法国的首都是哪里?")输出 "France is France",回答不准确。其余用例均生成合理的语义正确输出。