test-ttm-v1快速开始指南:如何在昇腾NPU上3分钟跑通首次时序预测推理
【免费下载链接】test-ttm-v1-npu项目地址: https://ai.gitcode.com/atlasleong/test-ttm-v1-npu
test-ttm-v1 是 IBM TinyTimeMixer(TTM)时序预测模型在华为昇腾NPU上的适配版本,模型前向全程由 torch_npu 在逻辑设备 npu:0 上执行,无 CPU 回退。本文是一份面向新手的快速开始指南,手把手带你完成环境准备、依赖安装与推理验证,3 分钟跑通"输入 512 个历史点、输出未来 96 步预测"的完整时序预测流程。
什么是test-ttm-v1?昇腾NPU上的TinyTimeMixer时序预测模型
TinyTimeMixer(TTM)是 IBM 推出的轻量级时序预测基础模型,参数量小、推理速度快,广泛用于零样本时序预测(time-series forecasting)。test-ttm-v1 则是在此基础上为华为昇腾 NPU 量身定制的适配交付版本,核心特点如下:
- 模型架构:TinyTimeMixerForPrediction,输入历史序列形状为 (batch_size, 512, 1)
- 输出结果:未来 96 步连续点预测,形状 (batch_size, 96, 1)
- 运行平台:torch 2.9.0 + torch_npu 2.9.0,CANN 8.5.1,NPU 910B4-1
- 全流程 NPU 执行:输入、模型参数与输出全部驻留 npu:0,杜绝 CPU 回退
更贴心的是,这个仓库是"自包含"交付:模型权重快照(model/model.safetensors)与 granite-tsfm 建模代码都已内嵌,克隆后无需联网下载模型,开箱即用。
运行前准备:昇腾NPU推理环境清单
在动手之前,请先确认你的机器满足以下条件:
| 项目 | 要求 |
|---|---|
| 硬件 | 昇腾 NPU(如 910B4-1),逻辑设备 npu:0 可用 |
| 驱动与 CANN | CANN 8.5.1、npu-smi 驱动 25.2.0 |
| PyTorch | torch 2.9.0 + torch_npu 2.9.0(由昇腾 worker 镜像固定) |
| Python | 3.10+,建议使用独立虚拟环境 |
⚠️ 注意:torch 与 torch_npu 必须由昇腾镜像提供,禁止从 PyPI 安装,否则无法识别 npu:0 设备。
可以通过 npu-smi 快速确认设备状态,正常运行时可以看到 910B4 芯片信息与健康状态,推理进程也会显示在进程列表中:
最快配置方法:3步完成环境安装
第1步:克隆仓库
git clone https://gitcode.com/atlasleong/test-ttm-v1-npu cd test-ttm-v1-npu第2步:安装锁定依赖
非平台依赖使用华为云镜像精确锁定版本安装:
export PIP_INDEX_URL=https://repo.huaweicloud.com/repository/pypi/simple/ pip install --ignore-installed --no-deps -r requirements.txtrequirements.txt 中锁定了 numpy 1.26.4、transformers 4.49.0、safetensors 0.8.0 等关键依赖;granite-tsfm 建模代码已内嵌在仓库中,无需单独安装。
第3步:验证NPU可用性
import torch import torch_npu print(torch.npu.is_available()) # 输出 True 表示设备就绪3分钟跑通首次时序预测推理
环境就绪后,在仓库根目录执行一条命令即可完成首次时序预测推理:
python3 inference.py脚本内部会自动完成以下流程:
- 从本地 model/ 目录加载 TinyTimeMixerForPrediction 权重(local_files_only,全程离线)
- 用固定随机种子 seed=42 确定性生成输入 past_values,形状 (2, 512, 1)
- 在 npu:0 上预热一次前向,排除首次初始化开销
- 同步计时主前向,得到未来 96 步预测结果
- 打印设备标记与语义输出标记,全程无 CPU 回退
相关核心代码集中在 inference.py(推理入口)与 model_loader.py(模型加载与输入生成)中,模型配置见 model/config.json,感兴趣的读者可以对照阅读。
验证推理结果:设备标记与预测输出解读
运行成功后,终端会输出类似下面的结果:
INPUT_DEVICE=npu:0 MODEL_DEVICE=npu:0 OUTPUT_DEVICE=npu:0 CPU_FALLBACK=false FORECAST_SHAPE=[2, 96, 1] FORECAST_FINITE=True FORECAST_INFER_MS=9.8991 EXIT_CODE=0每个标记都来自本次运行的真实张量与模型,绝非硬编码:
- INPUT_DEVICE / MODEL_DEVICE / OUTPUT_DEVICE:输入、模型、输出所在设备,均为 npu:0,证明全流程在昇腾NPU上执行
- CPU_FALLBACK=false:无 CPU 回退,符合适配要求
- FORECAST_SHAPE=[2, 96, 1]:两个样本各自输出未来 96 步预测
- FORECAST_FINITE=True:输出无 NaN/Inf,数值健康
- FORECAST_INFER_MS=9.8991:单次同步计时前向耗时(毫秒)
精度与性能:NPU实测数据一览
精度验证(NPU vs CPU)
适配过程中修复了 torch_npu 的 GELU 内核在默认 approximate="none" 下仍计算 tanh 近似、与 CPU 精确 erf 形式不一致的问题(在建模代码中将 gelu 显式指定为 approximate="tanh")。修复后 NPU 与 CPU 数值高度一致:
- 修复后 max_abs_error ≈ 2.0e-7,mean_abs_error ≈ 4.9e-8
- 离散方向一致率 discrete_agreement = 1.0,多样本回归 10/10 全部一致
性能实测(同步计时)
性能阶段配置 3 次预热 + 10 次重复计时,每次计时前后均执行 torch.npu.synchronize():
- 中位数 7.6984 ms,均值 7.72 ms,P90 7.80 ms
- 单次前向即可完成 96 步预测,非常适合低成本、高吞吐的时序预测场景
常见问题解答(FAQ)
Q:没有联网环境能运行吗?可以。仓库已内嵌模型权重与建模代码,加载时使用 local_files_only=True,完全离线运行。
Q:输出 FORECAST_INFER_MS 与文档数值不一样?单次计时存在正常波动(受负载、温度影响),性能阶段 10 次重复的中位数 7.7 ms 更具参考意义。
Q:想把 TTM 用在真实业务数据上?当前推理使用合成输入验证流程;如需真实数据集评测,可参照 model/config.json 中 context_length=512、num_input_channels=1 的约定,自行构造 past_values 张量接入业务数据。
总结:下一步还可以做什么
至此,你已经在昇腾NPU上 3 分钟跑通了 test-ttm-v1 的首次时序预测推理。从环境准备、依赖安装到结果解读,全程只需 3 条命令,即可体验 TinyTimeMixer 在 NPU 上毫秒级的推理速度。接下来可以尝试调整 batch_size、接入自己的历史时序数据,或将模型封装成服务,让时序预测能力真正落地到业务场景中。
【免费下载链接】test-ttm-v1-npu项目地址: https://ai.gitcode.com/atlasleong/test-ttm-v1-npu
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考