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

TimerXL 昇腾适配完成总结

|驱动固件|24.1.RC3| |CANN版本|8.3.RC1| |python版本|3.10.19| |torch版本|2.1.0| |torch_npu版本|2.1.0| |Transformers版本|4.40.1|

1. 核心适配代码

  • ✅ TimerXL.py: 运行脚本
  • ✅ ETTh2.csv: 数据集 提前下载 HuggingFace模型权重下载路径:https://huggingface.co/thuml/timer-base-84m/tree/main

2. 主要修改点

设备选择

  • 选择 device = torch.device('npu:7') :将模型放到那张卡上跑
  • 选择 model = model.to(device)

3. 算子适配

  • TimerXL.py

    • 添加import torch_npu
    • 添加 from torch_npu.contrib import transfer_to_npu

📋 适配统计

代码修改统计

  • 设备选择相关: ~4 处

🔧 关键适配点

0. 设备模型加载

# 旧代码
model = AutoModelForCausalLM.from_pretrained('thuml/timer-base-84m', trust_remote_code=True)

# 新代码
model = AutoModelForCausalLM.from_pretrained(
    '/root/TimerXL/thumltimer-base-84m',  #更换到本地路径
    trust_remote_code=True
)

1. 设备检测和选择

# 旧代码
df = pd.read_csv(
    "https://raw.githubusercontent.com/WenWeiTHU/TimeSeriesDatasets/main/ETT-small/ETTh2.csv"
)

# 新代码(适配后)
df = pd.read_csv(
    "/root/TimerXL/ETTh2.csv" #更换为本地数据集路径
)

2. 设备操作统一

# 旧代码
seqs = torch.tensor(df["OT"][:lookback_length]).unsqueeze(0).float()

# 新代码(适配后)
seqs = torch.tensor(df["OT"][:lookback_length]).unsqueeze(0).float()
seqs = seqs.to(device):数据移动到npu中

3. 设备预测推理

# 旧代码
output = model.generate(seqs, max_new_tokens=prediction_length)

# 新代码(适配后)
with torch.no_grad():  #节省内存和加速
    output = model.generate(seqs, max_new_tokens=prediction_length)

使用方法

1. 数据准备

  1. 打开 ETTh2.csv ,按需求复制文档中的数据url进行手动下载(需要科学上网),本指南以 https://raw.githubusercontent.com/WenWeiTHU/TimeSeriesDatasets/main/ETT-small/ETTh2.csv 为例。

  2. 下载完成后,解压缩,将数据中的文件夹拷贝到 /home/xxx/TimerXL 路径下。以下以 ETTh2.csv 为例。

  3. 参考https://github.com/thuml/Timer-XL,提供模型适配相关材料

执行命令进行验证

python /home/xxx/TimerXL/TimerXL.py

若执行输出预测结果表示成功,则其他任务可参考以上方法修改对应的文件以达到目标。

总结

  1. 根据不同任务,修改的主要文件是: 启动脚本 .py 文件。查看https://github.com/thuml/Timer-XL可了解更多关于时序模型的信息。

  2. 如果硬件环境只有一张卡,则在 .py 中,要在device = torch.device('npu:7')中指定对应卡名.