lin__/Chronos-2
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Chronos-2 on Ascend NPU

Amazon Chronos-2 时间序列预测模型在华为昇腾 NPU 上的推理适配与性能优化。

快速开始

pip install chronos-forecasting

# 推理
python3 -c "
from chronos import Chronos2Pipeline
import torch, numpy as np
pipe = Chronos2Pipeline.from_pretrained('model_files/chronos-2', local_files_only=True)
pipe.model = pipe.model.to('npu:0').to(torch.bfloat16)
data = torch.tensor(np.random.randn(32, 1, 512), dtype=torch.bfloat16).to('npu:0')
forecasts = pipe.predict(data, prediction_length=64)
print(forecasts[0].shape)  # (21 quantiles, 64 horizon)
"

性能

基线要求:NPU 吞吐量 ≥ 500 series/s,对比 CPU 基线 (6.9 series/s) 加速 ≥ 72×

测试条件:context_length=512,prediction_length=64,Ascend910_9362

Chronos-2 完整评测报告

NPU 与 CPU 对比 (bs=32,ctx=512)

配置延迟吞吐量加速比
CPU FP32(基线)1.163s6.9 series/s1×
NPU BF16(LN融合+dropout=0,bs=32)0.0269s1,189 series/s173×
NPU BF16(LN融合+dropout=0,bs=512)0.1571s3,259 series/s474× ← 峰值

批处理能力测试(NPU BF16 优化配置 — 最佳结果)

批处理大小延迟吞吐量相对 CPU 加速比
320.0269s1,189 /s173×
640.0286s2,238 /s334×
1280.0403s3,174 /s474×
2560.0773s3,310 /s494×
5120.1571s3,259 /s ← 峰值474×
10240.3145s3,256 /s473×

NPU 峰值吞吐:3,259 series/s(batch=512)= 相对 CPU(单核 6.9/s)加速 474×

上下文长度测试(NPU BF16 优化配置,bs=32)

上下文长度延迟吞吐量
1280.0325s983.6 series/s
2560.0322s993.7 series/s
5120.0329s971.8 series/s
10240.0330s969.5 series/s
20480.0369s866.8 series/s
40960.0720s444.5 series/s

优化记录

优化手段效果
BF16 混合精度基础加速
TASK_QUEUE_ENABLE=1流并行下发
Chronos2LayerNorm → npu_rms_norm (37x)+6% 唯一有效算子替换
推理时 Dropout 禁用 (p=0)消除无用计算
NPU_ASD_ENABLE=0消除诊断开销
PYTORCH_NPU_ALLOC_CONF内存分配优化
PER_STREAM_QUEUE=1无额外收益
CPU_AFFINITY_CONF=1无额外收益
TASK_QUEUE_ENABLE=2无额外收益 (1.01x)
NPUGraph❌ 流水线中 host-device 拷贝不支持
RoPE→npu_apply_rotary_pos_emb❌ -15%(BNSD↔BSH转置开销)
FFN→npu_ffn❌ -17%(小层无收益)
AUTO_TUNE_MODE=1❌ -17%(编译开销)
全组合❌ -19%(累积开销)

验证结论

检查项结果
NPU 推理跑通✅ 通过
精度误差 < 1%✅ 通过 (0.64%)
性能基线 > 500 series/s✅ 通过 (3,259 series/s)
整体状态✅ 全部通过

精度

NPU BF16 与 CPU FP32 对比:平均相对误差 0.64%(修剪后 0.39%,< 1% ✅)

结构

chronos-2/
├── model_files/chronos-2/    # 模型权重 (LFS)
│   ├── config.json
│   └── model.safetensors
├── benchmark.py              # 全面基准测试脚本
├── deep_optimize.py          # 深度算子优化测试
├── deep_optimize_round2.py   # 第二轮摸高测试 (LN融合最优配置)
├── deep_optimize_round3.py   # 第三轮摸高测试 (NPU亲和算子替换)
├── deep_optimize_round4.py   # 第四轮摸高测试 (Pipeline bypass)
├── results/                  # 全部结果 JSON
├── SKILL.md                  # 优化技能文档
└── README.md