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 ID | amazon/chronos-2 |
--npu-device-id | NPU 设备 ID | 4 |
--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-id | NPU 设备 ID | 4 |
--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-1 | Chronos-2 |
|---|
| 模型架构 | T5 | 独立架构 |
| 训练能力 | ❌ 仅推理 | ✅ 支持微调 |
| fit() 方法 | ❌ 不支持 | ✅ 支持 |
| HuggingFace ID | amazon/chronos-t5-* | amazon/chronos-2 |
7.2 使用限制
- 必须使用 Chronos-2 进行微调,Chronos-1 不支持训练
- 必须配置 HuggingFace 镜像,否则下载极慢或失败
- 微调后权重用于推理,禁止使用原始预训练权重
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