Ascend-SACT/chronos-forecasting
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Chronos-2 昇腾 NPU 迁移适配指导书

第1章 环境准备

1.1 容器镜像

# 拉取昇腾基础镜像(以 CANN 8.5.x 为例)
docker pull quay.io/ascend/cann:8.5.0-910b-ubuntu22.04-py3.11

1.2 环境依赖

# 安装 Python 依赖
pip install -r requirements.txt

requirements.txt 示例:

torch>=2.7.0
torch-npu>=2.7.0
transformers>=4.31.0
huggingface-hub>=0.19.0
numpy>=1.24.0
pandas>=2.0.0

1.3 CANN 环境配置

# 加载 CANN 环境
source /usr/local/Ascend/ascend-toolkit/set_env.sh

# 验证 CANN 版本
echo $ASCEND_AISERVER

1.4 HuggingFace 镜像配置(必须)

# 配置 HuggingFace 镜像(必须!)
export HF_ENDPOINT=https://hf-mirror.com
echo "HuggingFace 镜像: $HF_ENDPOINT"

第2章 依赖安装

2.1 完整依赖安装

# 使用镜像源安装
pip install -r requirements.txt \
    -i https://mirrors.aliyun.com/pypi/simple/

2.2 环境验证

python3 -c "
import torch
import torch.npu
print(f'torch: {torch.__version__}')
print(f'torch-npu: {torch.npu.__version__}')
print(f'NPU available: {torch.npu.is_available()}')
"

第3章 执行训练

3.1 微调训练

Chronos-2 支持使用 fit() 方法进行微调训练。

# 微调训练命令
export HF_ENDPOINT=https://hf-mirror.com
python3 ascend_finetune.py \
    --model-path "amazon/chronos-2" \
    --npu-device-id 4 \
    --n-samples 10 \
    --num-steps 100 \
    --batch-size 4 \
    --prediction-length 96 \
    --context-length 512 \
    --learning-rate 1e-4 \
    --finetune-mode full \
    --output-dir ./checkpoints

3.2 训练参数说明

参数说明默认值
--model-path模型路径或 HuggingFace IDamazon/chronos-2
--npu-device-idNPU 设备 ID4
--n-samples训练样本数10
--num-steps训练步数100
--batch-size批次大小4
--prediction-length预测长度96
--context-length上下文长度512
--learning-rate学习率1e-4
--finetune-mode微调模式 (full/lora)full

3.3 训练验证

训练完成后,检查输出:

[✓] 微调完成!
[✓] 模型已保存到: checkpoints/chronos2_finetuned_20260403_xxxxxx

第4章 执行推理

4.1 推理命令

# 使用微调后的模型进行推理
export HF_ENDPOINT=https://hf-mirror.com
python3 ascend_infer.py \
    --model-path ./checkpoints/chronos2_finetuned_20260403_xxxxxx \
    --device-id 4 \
    --context-length 512 \
    --prediction-length 96 \
    --n-series 4

4.2 推理输出

[✓] 推理完成!
[✓] NPU 推理验证通过!

4.3 推理参数说明

参数说明默认值
--model-path微调后的模型路径(必须)-
--device-idNPU 设备 ID4
--context-length上下文长度512
--prediction-length预测长度96
--n-series时序数量4

第5章 精度评测

5.1 精度评测命令

# NPU vs CPU 精度评测
export HF_ENDPOINT=https://hf-mirror.com
python3 eval_accuracy.py \
    --model-path ./checkpoints/chronos2_finetuned_20260403_xxxxxx \
    --n-samples 10 \
    --npu-device-id 4 \
    --output-dir ./eval_results

5.2 精度指标

指标说明
MAE平均绝对误差
MSE均方误差
RMSE均方根误差

精度对齐要求:NPU vs CPU 精度差异 < 5%


第6章 性能评测

6.1 性能指标

指标说明
推理延迟单次推理耗时 (ms)
吞吐量每秒推理次数
加速比NPU 相比 CPU 加速倍数

6.2 性能评测脚本

python3 benchmark_performance.py \
    --model-path ./checkpoints/chronos2_finetuned_20260403_xxxxxx \
    --npu-device-id 4 \
    --n-iterations 100

第7章 关键差异与不支持特性

7.1 Chronos 模型差异

特性Chronos-1Chronos-2
模型架构T5独立架构
训练能力❌ 仅推理✅ 支持微调
fit() 方法❌ 不支持✅ 支持
HuggingFace IDamazon/chronos-t5-*amazon/chronos-2

7.2 使用限制

  1. 必须使用 Chronos-2 进行微调,Chronos-1 不支持训练
  2. 必须配置 HuggingFace 镜像,否则下载极慢或失败
  3. 微调后权重用于推理,禁止使用原始预训练权重

7.3 已知问题

问题原因解决方案
模型加载慢HuggingFace 网络问题配置 HF_ENDPOINT 镜像
训练 loss 为 9+合成数据随机性使用真实数据微调

第8章 常见问题处理

FAQ

问题答案
Q: Chronos-1 可以训练吗?A: 不可以,Chronos-1 仅支持推理。必须使用 Chronos-2。
Q: 如何判断模型是否支持微调?A: 检查是否有 fit() 方法。Chronos-2 有,Chronos-1 没有。
Q: 微调后权重和原始权重一样?A: 不一样。微调会更新模型权重,生成新的 safetensors 文件。
Q: 为什么推理输出有 21 个分位数?A: Chronos-2 默认输出 21 个分位数 (0.01, 0.05, ..., 0.99)。

8.1 错误处理

错误解决方案
ModuleNotFoundError: No module named 'chronos'添加 sys.path.insert(0, '/path/to/src')
HF_ENDPOINT not set执行 export HF_ENDPOINT=https://hf-mirror.com
NPU not available检查 CANN 环境是否加载,检查 NPU 设备

附录:迁移文件清单

文件状态说明
ascend_finetune.py✅Chronos-2 NPU 微调脚本
ascend_infer.py✅推理验证脚本
eval_accuracy.py✅精度评测脚本
benchmark_performance.py✅性能评测脚本
requirements.txt✅依赖清单
pip_before.txt✅迁移前依赖快照
pip_after.txt✅迁移后依赖快照
README.md✅快速参考
本指导书✅完整迁移指导书

版本: 1.0 更新日期: 2026-04-03 适用模型: Chronos-2 (amazon/chronos-2) 适用 CANN: 8.5.x / 8.6.x / 8.7.x