K-ON111111/TEMPO
模型介绍
文件和版本
Pull Requests
讨论
分析

TEMPO — 昇腾 NPU 适配模型

赛事: 昇腾 Model Agent 模型适配大赛(第二季) 引擎: torch_npu + GPT2(peft LoRA) 硬件: Ascend 910B 系列(实测 Ascend910B4) 标签: npu ascend pytorch transformers

📖 模型简介

属性值
原始模型Melady/TEMPO
架构TEMPO-80M(GPT2 时序基础模型,STL 分解 + prompt)
参数量71.3M(3 层 GPT2 + STL 映射层)
任务类型时序预测(Time Series Forecasting)
输入格式[batch, seq_len, channels] 时序
输出格式未来 pred_len 步预测

🔧 环境依赖与代码获取

⚠️ 本仓库不包含模型权重(交付件仅 inference.py / readme.md / requirements.txt / assets/), 推理前必须先从原始模型仓单独下载权重。

依赖清单(requirements.txt):

  • torch / torch_npu(昇腾 NPU 环境)
  • transformers(GPT2 模型)
  • omegaconf(配置解析)
  • peft(LoRA 适配器)
  • einops、numpy

代码获取:inference.py 首次运行会自动从官方 GitHub(DC-research/TEMPO)下载 tempo/models/TEMPO.py、tempo/embed.py、tempo/utils/rev_in.py 等模型代码, 并注入 NPU 兼容补丁(prompt=0 时跳过 GPT2 tokenizer 下载)。

🚀 推理步骤

# 1. 安装依赖
pip install -r requirements.txt -i https://repo.huaweicloud.com/repository/pypi/simple/

# 2. 下载模型权重(仓库不含权重,必须单独下载)
git clone https://gitcode.com/hf_mirrors/Melady/TEMPO.git .
git lfs pull

# 3. 运行 NPU 推理(默认 336 点示例,预测 96 步)
python3 inference.py --model_path . --device npu:0

🧪 测试用例

用例 1: 时序预测(336 点上下文 → 96 步)

python3 inference.py --model_path . --device npu:0

预期输出:

[Model Agent] ✅ NPU 设备就绪: Ascend910B4
[Model Agent] ✅ 模型加载完成 → npu:0 (TEMPO-80M, missing=0)
[Model Agent] 📊 输入过去值: 336 个, 预测 96 步
[Model Agent] ✅ 推理完成 → 预测 96 步, 耗时 297 ms
[Model Agent] 📈 预测前5: [68.87, 68.76, 67.47, 67.97, 65.48]
[Model Agent] ✅ 结果已保存 → inference_result.json

📁 目录结构

.
├── inference.py          # NPU 推理脚本
├── readme.md             # 本文件
├── requirements.txt      # 依赖清单
└── assets/               # 截图素材

📝 适配说明

本模型由 昇腾 Model Agent 自动完成 NPU 适配。 TEMPO(GPT2 时序基础模型)迁移至昇腾 NPU:

  • inference.py 首次运行自动下载官方 TEMPO 代码并注入补丁:prompt=0 时跳过 GPT2 tokenizer 下载(HF 网络受限);
  • 权重为 peft LoRA 格式(base_model.model. 前缀),直接 load_state_dict 加载;
  • 调用 torch_npu 完成设备初始化,STL 分解(趋势/季节/残差)→ GPT2 自回归生成预测;
  • GPT2 截取 3 层匹配 80M checkpoint。