TDengine TDgpt 时序基础模型(TSFM)部署实战:从 Time-MoE 到 FORECAST SQL 预测
发布时间:2026/9/13 9:56:59来源:尧图网络
TDengine TDgpt 时序基础模型TSFM部署实战从 Time-MoE 到 FORECAST SQL 预测【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine导读时序基础模型Time-Series Foundation Model简称 TSFM是专为大模型范式训练的高级时序分析模型能直接基于输入数据完成预测、异常检测与数据补齐等任务无需复杂参数调优。TDengine 的智能分析组件 TDgpt 自v3.3.6.4起内置了六款主流开源 TSFM 的接入能力TDtsfm、Time-MoE、Chronos、Moirai、TimesFM、Moment并提供了从模型服务部署、TDgpt 注册接入到 SQL 调用的全链路方案。读完本文你将掌握如何部署 TSFM 模型服务、如何通过taosanode.config.py配置服务地址、如何使用FORECAST等 SQL 函数调用模型完成预测与补齐以及各模型的端口、依赖版本和功能边界。一、什么是时序基础模型时序基础模型是专门面向时序分析任务预测、异常检测、缺失值补齐训练的大规模基础模型。与传统时序算法如 ARIMA、ETS或需逐场景训练的深度学习模型不同TSFM 继承了大型基础模型强大的泛化能力无需复杂参数配置即可基于输入数据完成预测分析。TDgpt 中可通过 SQL 直接指定模型名称来调用已部署的 TSFM 服务。TDengine 内置的 TSFM 模型名如下表出自 08-tsfm.md序号模型参数名说明1tdtsfm_1TDtsfm v1.0TDgpt 自带模型2timemoe-fcTime-MoESQL 调用名3moiraiSalesforce 时序基础模型4chronosAmazon 时序基础模型5timesfmGoogle 时序基础模型6momentCMU 时序基础模型部署模型服务并完成 TDgpt 配置后即可通过 SQL 指定模型名与输出行数发起预测例如-- 使用 TDtsfm 预测 10 行数据 SELECT _frowts, FORECAST(i32, algotdtsfm_1,rows10) FROM foo; -- 使用 Time-MoE 预测 10 行数据 SELECT _frowts, FORECAST(i32, algotimemoe-fc,rows10) FROM foo;二、六款 TSFM 的部署形态与能力矩阵TDgpt 的 TSFM 支持分为两类随安装包内置的模型TDtsfm、Time-MoE以及需本地自行启动服务的第三方模型Chronos、Moirai、TimesFM、Moment。第三方模型的服务脚本位于TDgpt_root_directory/lib/taosanalytics/tsfmservice/仓库源码见 tsfmservice 目录TDtsfm 由安装包直接提供因此该目录中没有独立的*-server.py文件。各模型的具体文件名、可加载的权重版本、参数量、模型大小及其功能支持情况如下表数据源自部署文档 03-tsfm/index.md模型服务脚本模型权重参数量(亿)大小(MiB)预测协变量预测多变量预测异常检测补齐timemoetimemoe-server.pyMaple728/TimeMoE-50M0.50227✔✘✘✘✘timemoetimemoe-server.pyMaple728/TimeMoE-200M4.53906✔✘✘✘✘moiraimoirai-server.pySalesforce/moirai-moe-1.0-R-small1.17469✔✔✘✘✘moiraimoirai-server.pySalesforce/moirai-moe-1.0-R-base9.353,740✔✔✘✘✘chronoschronos-server.pyamazon/chronos-bolt-tiny0.0935✔✘✘✘✘chronoschronos-server.pyamazon/chronos-bolt-mini0.2185✔✘✘✘✘chronoschronos-server.pyamazon/chronos-bolt-small0.48191✔✘✘✘✘chronoschronos-server.pyamazon/chronos-bolt-base2.05821✔✘✘✘✘timesfmtimesfm-server.pygoogle/timesfm-2.0-500m-pytorch4.992,000✔✘✘✘✘momentmoment-server.pyAutonLab/MOMENT-1-small0.38152✘✘✘✘✔momentmoment-server.pyAutonLab/MOMENT-1-base1.13454✘✘✘✘✔momentmoment-server.pyAutonLab/MOMENT-1-large3.461,039✘✘✘✘✔两点重要说明功能边界由模型自身与 TDgpt 适配共同决定TDgpt 是针对各模型的具体能力做了适配接入的若某个功能不可用可能是模型本身的局限也可能是 TDgpt 尚未为该模型适配该特性。例如上表可见Moirai 支持协变量预测其余模型不支持Moment 仅支持补齐imputation不支持预测。部署文档中以 Time-MoE 为完整示例演示了部署服务 → 注册到 TDgpt → SQL 调用全流程其余模型遵循同样的接入逻辑下文将逐一展开。三、环境准备Python 与依赖安装使用 TSFM 前需准备 Python 环境并安装推理所需依赖。以 Time-MoE 为例官方推荐命令如下可复用 TDgpt 自带的虚拟 Python 环境也可单独创建环境pip install torch2.3.1cpu -f https://download.pytorch.org/whl/torch_stable.html pip install flask3.0.3 pip install transformers4.40.0 pip install accelerate提示torch2.3.1cpu为 CPU 版本若机器配备 NVIDIA GPU 且安装了 CUDA可替换为对应的 CUDA 版本以加速推理transformers的版本要求因模型而异详见本文Transformers 版本要求一节务必按目标模型安装匹配版本。四、以 Time-MoE 为例部署 TSFM 服务4.1 服务脚本与路由配置Time-MoE 的部署脚本为 TDgpt 根目录下的lib/taosanalytics/tsfmservice/timemoe-server.py早期版本为time-moe.py。仓库中对应源码见 timemoe-server.py其核心是一个基于 Flask 的 HTTP 服务app.route(/ds_predict, methods[POST]) def do_predict(): ...默认路由为/ds_predict。如果你的环境需要可将其改为自定义 URL 路径。服务监听配置如下可按需修改端口app.run( hostargs.host, # 默认 0.0.0.0 portargs.port, # 默认 6062 threadedTrue, debugFalse )从源码看timemoe-server.py已支持命令行参数化启动--host、--port、--model-index加载哪个预训练模型、--model-folder本地模型目录与--enable-ep启用国内镜像下载。修改 URL 与端口后需重启服务生效。4.2 启动服务v3.3.8.0 之前在v3.3.8.0之前的版本直接后台运行脚本即可nohup python timemoe-server.py service_output.out 21 首次启动时脚本会从 Hugging Face 自动下载Maple728/TimeMoE-50M模型权重。如需改用Maple728/TimeMoE-200M在脚本的_model_list中选择索引1。国内用户若下载失败可设置镜像环境变量export HF_ENDPOINThttps://hf-mirror.com检查service-output.out日志看到以下输出即表示模型加载完成、服务已就绪Running on all addresses (0.0.0.0) Running on http://127.0.0.1:60624.3 验证服务用curl验证服务是否正常运行curl 127.0.0.1:6062/ds_predict由于该路由只接受POST请求用GET访问会得到如下 405 响应——这恰恰说明 Time-MoE 已成功部署并对外提供服务!doctype html html langen title405 Method Not Allowed/title h1Method Not Allowed/h1 pThe method is not allowed for the requested URL./p五、将 Time-MoE 注册到 TDgpt5.1 模型适配文件TDgpt 通过算法适配文件把外部 TSFM 服务封装为可被 SQL 调用的算法。Time-MoE 的适配文件位于algo/fc/timemoe.py仓库源码见 timemoe.pyfrom taosanalytics.algo.tsfm import TsfmBaseService class _TimeMOEService(TsfmBaseService): # 模型名称自定义作为模型的 key 使用 name timemoe-fc desc ( Time-MoE: Billion-Scale Time Series Foundation Models with Mixture of Experts; Ref. to https://github.com/Time-MoE/Time-MoE ) def execute(self): # 校验是否支持协变量预测不支持时抛出异常Time-MoE 即不支持 if len(self.past_dynamic_real): raise ValueError(covariate forecast is not supported yet) return super().execute()在 TDgpt 安装环境中适配文件位于/usr/local/taos/taosanode/lib/taosanalytics/algo/fc/实际上该目录下已预置好timemoe.py无需自行编写。TDgpt 对 Time-MoE 是内置支持的运行SHOW ANODES FULL即可看到基于 Time-MoE 的预测算法被列为timemoe-fc。5.2 配置服务地址在/etc/taos/taosanode.config.py中设置模型服务 URL早期版本使用taosanode.ini的[tsfm-service]段timemoe_fc http://127.0.0.1:6062/ds_predict配置键即 Python 适配代码中定义的模型名配置值是本地 Time-MoE 服务的 URL。从仓库配置源码 taosanode.config.py 可以看到新版配置采用models字典统一管理各模型每个模型声明script服务脚本、default_model默认权重、ip、port、endpoint路由与algo_nameSQL 可见的算法名。tdtsfm与timemoe标记为required: True必须存在其余四个模型为可选。运行时会由 conf.py 依据ip:portendpoint自动推导出形如http://127.0.0.1:6062/ds_predict的服务 URL并以algo_name如timemoe-fc、tdtsfm_1作为配置键注入配置。5.3 重启并刷新节点配置完成后重启 taosanode 服务并执行UPDATE ALL ANODES;刷新后即可在 SQL 语句中直接使用 Time-MoE 预测。六、在 SQL 中调用 TSFM 模型模型注册完成后即可用FORECAST函数发起预测。TDgpt 会把输入序列、时间戳、预测行数等参数以 JSON 形式 POST 给模型服务并解析返回结果。SELECT FORECAST(i32, algotimemoe-fc) FROM foo;其中algo指定模型名还可在参数中追加rows指定预测行数-- 使用 TDtsfm 预测 10 行 SELECT _frowts, FORECAST(i32, algotdtsfm_1,rows10) FROM foo; -- 使用 Time-MoE 预测 10 行 SELECT _frowts, FORECAST(i32, algotimemoe-fc,rows10) FROM foo;从底层实现看所有 TSFM 适配类都继承自TsfmBaseService源码见 tsfm.py其核心调用链为校验输入数据量是否小于周期数len(self.list) self.period以及预测行数是否为正组装input、ts时间戳、next_len预测行数、past_dynamic_real历史协变量、dynamic_real未来协变量、conf_interval置信区间等字段通过requests.post发送至service_host若服务返回 404 判定 URL 无效非 200 状态码则抛出异常默认返回预测均值当请求置信区间且服务返回upper/lower时返回预测值 置信下界 置信上界三路结果。此外TsfmBaseService.set_params支持在 SQL 参数中通过host覆盖模型服务地址自动补全http://前缀便于临时指向其他服务实例。七、部署其余四款第三方 TSFM各模型本地部署 TDgpt 注册的逻辑与 Time-MoE 完全一致只需修改适配类名与模型 key、设置正确的服务地址即可。Chronos、TimesFM、Moirai 的适配文件已随 TDgpt 默认提供v3.3.6.4及以后版本的用户只需在本地启动对应服务。为避免依赖冲突官方建议为每个模型准备干净的 Python 虚拟环境。7.1 启动 Moirai 服务端口 6064pip install torch2.3.1cpu -f https://download.pytorch.org/whl/torch_stable.html pip install uni2ts pip install flask在moirai-server.py中配置服务地址与要加载的模型如有必要_model_list [ Salesforce/moirai-moe-1.0-R-small, # small 模型1.17 亿参数 Salesforce/moirai-moe-1.0-R-base, # base 模型9.35 亿参数 ] pretrained_model MoiraiMoEModule.from_pretrained( _model_list[0] # 默认加载 small改为 1 则加载 base ).to(device)启动服务首次启动会自动下载模型文件下载过慢可配置国内镜像nohup python moirai-server.py service_output.out 21 7.2 启动 Chronos 服务端口 6063pip install torch2.3.1cpu -f https://download.pytorch.org/whl/torch_stable.html pip install chronos-forecasting pip install flask在chronos-server.py中设置服务地址与模型也可使用默认值。该脚本基于BaseChronosPipeline提供四个档位的权重仓库源码见 chronos-server.py_model_list [ amazon/chronos-bolt-tiny, # 9M 参数 基于 t5-efficient-tiny amazon/chronos-bolt-mini, # 21M 参数 基于 t5-efficient-mini amazon/chronos-bolt-small, # 48M 参数 基于 t5-efficient-small amazon/chronos-bolt-base, # 205M 参数基于 t5-efficient-base ] model BaseChronosPipeline.from_pretrained( _model_list[0], # 默认加载 tiny修改索引切换模型 device_mapdevice, torch_dtypetorch.bfloat16, )启动nohup python chronos-server.py service_output.out 21 7.3 启动 TimesFM 服务端口 6065pip install torch2.3.1cpu -f https://download.pytorch.org/whl/torch_stable.html pip install timesfm pip install jax pip install flask3.0.3按需调整timesfm-server.py中的服务地址后启动nohup python timesfm-server.py service_output.out 21 7.4 启动 Moment 服务端口 6066Moment 的定位是时序补齐imputation而非预测其 TDgpt 适配位于algo/imputat/moment.py。依赖安装pip install torch2.3.1cpu -f https://download.pytorch.org/whl/torch_stable.html pip install transformers4.33.3 pip install numpy1.25.2 pip install matplotlib pip install pandas1.5 pip install scikit-learn pip install flask3.0.3 pip install momentfm调整moment-server.py中的服务地址后启动nohup python moment-server.py service_output.out 21 各服务默认监听端口在 taosanode.config.py 的models字典中一目了然tdtsfm 6061、timemoe 6062、chronos 6063、moirai 6064、timesfm 6065、moment 6066。八、统一服务管理脚本v3.4.0.0 起自v3.4.0.0起TDgpt 提供统一的start-model.sh与stop-model.sh脚本管理所有模型服务。Linux 入口脚本会委托给taosanode_service.py读取taosanode.config.py后按各模型配置的虚拟环境启动服务始终使用安装目录下的主虚拟环境不会回退到PATH上的 Python。root 安装后脚本位于tdgpt_root/bin/并自动在/usr/bin/start-model建立全局软链接日志默认输出到/var/log/taos/taosanode/taosanode_service_model_name.log。仓库实现见 start-model.sh。8.1 启动脚本用法Usage: /usr/bin/start-model [-c config_file] [model_name|all] Supported models: tdtsfm, timesfm, timemoe, moirai, chronos, moment选项说明-c config_file指定配置文件默认取install_dir/cfg/taosanode.config.py回退到/etc/taos/taosanode.config.py-h, --help显示帮助信息。使用示例# 后台启动全部模型服务 /usr/bin/start-model all # 只启动 TimesFM 服务 /usr/bin/start-model timesfm # 指定自定义配置文件 /usr/bin/start-model -c /path/to/custom_taosanode.config.py8.2 停止脚本用法stop-model.sh用于终止指定或全部模型服务会自动识别并杀掉相关 Python 进程# 停止 TimesFM 服务 /usr/bin/stop-model timesfm # 停止全部模型服务 /usr/bin/stop-model all九、动态模型下载v3.3.8.0 起自v3.3.8.0起可在启动时指定不同规格的模型。直接无参运行[xxx]-server.py默认加载model_index0的模型使用start-model或配置文件时以taosanode.config.py中的default_model为准。例如Time-MoE 默认Maple728/TimeMoE-200MChronos 默认amazon/chronos-bolt-baseMOMENT 默认AutonLab/MOMENT-1-base。若已手动下载好模型文件可通过指定本地路径直接运行# 运行位于 /var/lib/taos/taosanode/model/chronos 下的 chronos-bolt-tiny 模型。 # 若该目录不存在会自动下载模型到此路径。 # 第三个参数True启用镜像站点加速下载国内用户推荐。 python chronos-server.py /var/lib/taos/taosanode/model/chronos/ amazon/chronos-bolt-tiny True从 timemoe-server.py 源码可以印证这一机制指定--model-folder后脚本会检查该目录下是否存在model.safetensors与config.json存在则直接加载本地模型否则调用snapshot_download_with_fallback下载--model-index则用于直接按索引从 Hugging Face 加载Maple728/TimeMoE-50M索引 0或Maple728/TimeMoE-200M索引 1。十、Transformers 版本要求各模型对transformers库的版本要求不同部署前务必核对数据源自部署文档 03-tsfm/index.md模型名Transformers 版本time-moe, moirai, tdtsfm4.40chronos4.55moment4.33timesfm不适用N/A十一、功能边界与注意事项协变量预测仅 Moirai 支持。Time-MoE 的适配代码在execute()中显式检查past_dynamic_real一旦传入历史协变量即抛出ValueError(covariate forecast is not supported yet)见 timemoe.py。多变量预测与异常检测目前六款模型中均未提供这与模型自身能力及 TDgpt 的适配进度有关。补齐能力目前仅 Moment 支持algo/imputat/moment.py且 Moment 不支持预测。TDtsfm 为安装包自带无需像第三方模型那样单独启动服务但其同样遵循部署 → 配置 → SQL 调用的接入逻辑SQL 调用名为tdtsfm_1。若某项功能不可用建议先区分是模型本身不支持还是 TDgpt 尚未适配排查时可结合SHOW ANODES FULL查看已注册算法并通过模型服务的service_output.out日志确认服务状态。总结TDengine 通过 TDgpt 将时序基础模型这一前沿能力无缝融入了 SQL 查询体系开发者只需完成Python 环境准备 → 启动模型服务 → 配置服务地址 → 刷新 ANODE四步即可用一条FORECAST(..., algo...,rowsN)语句获得大模型级别的时序预测结果或将 Moment 用于缺失值补齐。整套方案既有开箱即用的 TDtsfm / Time-MoE 内置支持也保留了 Chronos、Moirai、TimesFM、Moment 四款开源模型的灵活接入能力为 IIoT 场景下的高级时序分析提供了低成本、可扩展的落地路径。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网