g
gcw_coj3XaOd/ant-intl_Falcon-TST_Large
模型介绍
文件和版本
Pull Requests
讨论
分析

Falcon-TST_Large - 昇腾 NPU 推理部署

1. 模型简介

模型名称: ant-intl/Falcon-TST_Large

模型链接: HuggingFace

模型描述: Falcon-TST 是一个基于 Falcon 注意力机制和 MoE(Mixture of Experts)架构的大规模时间序列预测模型,专为长序列时序建模设计。

模型架构: FalconTSTForPrediction(Falcon Attention + MoE)

参数规模: 2.49B(2492M)

输入规格:

  • 时间序列张量:(batch, seq_len, channels)
  • 默认 seq_len=2880,channels=7

输出规格:

  • 预测张量:(batch, forecast_horizon, channels)
  • 默认 forecast_horizon=96

2. 环境依赖

依赖项版本要求说明
Python>= 3.10推荐 3.11
torch>= 2.1.0PyTorch 框架
torch_npu>= 2.1.0昇腾 NPU 后端
transformers>= 4.30.0HuggingFace Transformers
numpy>= 1.20.0数值计算
safetensors>= 0.3.0安全张量格式
昇腾驱动CANN 8.0+推荐 CANN 8.5.1

安装命令:

pip install torch torch_npu transformers numpy safetensors accelerate

3. 推理步骤

3.1 环境准备

# 检查 NPU 设备
npu-smi info

# 验证 torch_npu
python3 -c "import torch_npu; print(torch.npu.device_count(), torch.npu.get_device_name(0))"

3.2 模型下载

方式一:HuggingFace(推荐)

huggingface-cli download ant-intl/Falcon-TST_Large --local-dir ./model_src

方式二:AtomGit 镜像(HuggingFace 下载慢时使用)

huggingface-cli download --repo-type model https://ai.gitcode.com/hf_mirrors/ant-intl/Falcon-TST_Large --local-dir ./model_src

3.3 运行推理

# CPU 推理
python3 inference.py --model_path ./model_src --device cpu

# NPU 推理(昇腾 910B)
python3 inference.py --model_path ./model_src --device npu:0

# 使用真实数据
python3 inference.py --model_path ./model_src --data time_series.npy --lookback 2880 --channels 7 --forecast 96 --device npu:0

3.4 推理参数说明

参数类型默认值说明
--model_pathstr必填模型 checkpoint 路径
--datastrNone真实时间序列数据文件(.npy)
--lookbackint2880回看长度(输入序列长度)
--channelsint7通道数(变量数)
--forecastint96预测长度
--devicestrnpu:0推理设备(npu:0 / cpu)
--outputstrNone结果输出文件(.npy)

4. 推理成功日志

4.1 CPU 推理日志

[info] device = cpu
[info] loading model from ./model_src
[info] model loaded: falcon_tst (2492M, dtype=torch.bfloat16)
[warn] 未提供数据文件,使用确定性序列示例(7 通道)
[info] input: time_series=(1, 2880, 7)
[info] predicting on cpu (forecast_horizon=96) ...
============================================================
[info] 预测形状: (1, 96, 7)
[info] 未来 96 步预测(每通道前 5 点):
  ch0: [0.2344, 0.9648, 2.1875, 1.2344, 0.9629]
  ch1: [0.0205, 0.542, 0.9844, 0.9844, 0.5205]
  ch2: [0.0236, 0.543, 0.8242, 1.0234, 0.543]
[info] 历史最后 3 点 ch0: [-0.001, 0.062, 0.125]
============================================================

4.2 NPU 推理日志

[info] NPU 可用: 2 卡, 使用 npu:0
[info] device = npu:0
[info] loading model from ./model_src
[info] model loaded: FalconTST (2492M, dtype=torch.bfloat16)
[info] input: time_series=(1, 2880, 7)
[info] predicting on npu:0 (forecast_horizon=96) ...
============================================================
[info] 预测形状: (1, 96, 7)
[info] 未来 96 步预测(每通道前 5 点):
  ch0: [1.0156, 0.9766, 0.9609, 0.9766, 0.9766]
  ch1: [0.7148, 0.6875, 0.6758, 0.7031, 0.6797]
  ch2: [-0.3398, -0.3594, -0.3516, -0.3516, -0.3828]
============================================================

5. 测试样例及输出结果

样例 1:CPU 推理(默认合成数据)

运行命令:

cd model_src && python3 inference.py --model_path . --device cpu

输出:

[info] device = cpu
[info] loading model from .
[info] model loaded: falcon_tst (2492M, dtype=torch.bfloat16)
[warn] 未提供数据文件,使用确定性序列示例(7 通道)
[info] input: time_series=(1, 2880, 7)
[info] predicting on cpu (forecast_horizon=96) ...
============================================================
[info] 预测形状: (1, 96, 7)
[info] 未来 96 步预测(每通道前 5 点):
  ch0: [0.2344, 0.9648, 2.1875, 1.2344, 0.9629]
  ch1: [0.0205, 0.542, 0.9844, 0.9844, 0.5205]
  ch2: [0.0236, 0.543, 0.8242, 1.0234, 0.543]
============================================================

样例 2:NPU 推理(昇腾 910B)

运行命令:

cd model_src && python3 inference.py --model_path . --device npu:0

输出:

[info] NPU 可用: 2 卡, 使用 npu:0
[info] device = npu:0
[info] loading model from .
[info] model loaded: FalconTST (2492M, dtype=torch.bfloat16)
[info] input: time_series=(1, 2880, 7)
[info] predicting on npu:0 (forecast_horizon=96) ...
============================================================
[info] 预测形状: (1, 96, 7)
[info] 未来 96 步预测(每通道前 5 点):
  ch0: [1.0156, 0.9766, 0.9609, 0.9766, 0.9766]
  ch1: [0.7148, 0.6875, 0.6758, 0.7031, 0.6797]
  ch2: [-0.3398, -0.3594, -0.3516, -0.3516, -0.3828]
============================================================

6. Agent适配截图

6.1 Agent 完整适配工作流

Agent 适配流程

6.2 NPU 设备调用日志

NPU 设备调用

6.3 模型适配结果

模型适配结果


7. 精度评测

测试数据: 合成正弦波时间序列(多频率叠加)

评测指标:

指标结果说明
模型加载SUCCESSCPU + NPU 均成功加载
推理输出形状(1, 96, 7)符合预期
NPU 设备2x 昇腾 910Btorch_npu 2.9.0
混合精度bfloat16 + float32路由器权重保持 float32

评测命令:

cd model_src && python3 inference.py --model_path . --lookback 2880 --channels 7 --forecast 96 --device npu:0

8. NPU 配置说明

  • NPU 型号: 昇腾 910B × 2
  • 驱动版本: CANN 8.5.1
  • torch_npu 版本: 2.9.0.post1
  • PyTorch 版本: 2.9.0+cpu
  • 混合精度策略: 模型主体 bfloat16,MoE 路由器权重 float32

9. 已知问题

dtype 兼容性修复: 原始 modeling_FalconTST.py 中 TopKRouter.forward() 方法使用 F.linear(input, self.weight) 时,当 input 为 bfloat16、router weight 为 float32 时会触发 dtype 不匹配错误。已将代码修改为 F.linear(input.to(self.weight.dtype), self.weight),在路由器计算时将输入临时提升至 float32,其余层保持 bfloat16,既保证路由精度又不损失整体推理速度。


10. 项目结构

ant-intl_Falcon-TST_Large/
├── inference.py              # 推理脚本
├── modeling_FalconTST.py     # 修复 dtype 兼容性的模型定义
├── configuration_FalconTST.py # 模型配置
├── config.json               # JSON 格式模型配置
├── README.md                 # 本文件
├── requirements.txt          # 环境依赖
├── assets/                   # 截图素材
│   ├── agent_workflow.png
│   ├── npu_device_call.png
│   └── model_result.png
├── model-00001-of-00002.safetensors  # 权重分片 1
└── model-00002-of-00002.safetensors  # 权重分片 2