ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

TDengine TDgpt 时序基础模型部署实战:从 Time-MoE 到六模型统一服务

2026/9/21 17:34:14 拓冰建站 浏览量
TDengine TDgpt 时序基础模型部署实战:从 Time-MoE 到六模型统一服务 数据库时序数据库物联网大数据实时分析云原生【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址https://gitcode.com/taosdata/tdengine点击查看免费下载时序基础模型Time Series Foundation ModelTSFM为时序数据分析提供了一条区别于传统统计分析、机器学习的全新路径。本文基于 TDengine 开源仓库中 TDgpt 的官方文档系统讲解如何在本机部署开源时序基础模型服务并将其整合进 TDgptTDengine 的智能分析平台中最终通过标准 SQL 语句直接调用模型的预测、补值等能力。读完本文你将掌握如何准备模型运行环境、如何启动/停止 Time-MoE、Chronos、Moirai、TimesFM、MOMENT 等服务、如何编写 MaaS 适配代码注册新模型、如何配置模型服务地址以及如何使用start-model.sh/stop-model.sh统一启停服务和动态指定模型规模。TDgpt 支持的时序基础模型总览自v3.3.6.4起TDgpt 陆续支持六种时序基础模型涛思时序基础模型TDtsfm v1.0、Time-MoE、Chronos、Moirai、TimesFM、Moment。安装包中内置了TDtsfm和Time-MoE两个时序模型其余模型需要在本地部署对应服务。第三方模型的服务脚本位于tdgpt 根目录/lib/taosanalytics/tsfmservice/目录在开源仓库中对应 tools/tdgpt/taosanalytics/tsfmservice。下表列出该目录下各适配文件及能力说明TDtsfm 由安装包内置服务提供不在此目录以独立*-server.py形式列出。其中「未勾选」既可能是模型本身不支持也可能是 TDgpt 尚未适配。模型文件模型名称参数亿大小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✘✘✘✘✔从表中可以看出Time-MoE、Chronos、TimesFM 目前主要支持单变量预测Moirai 是唯一同时支持单变量与协变量预测的模型而 MOMENT 系列则专注于**补值imputation**能力。MOMENT 端点与其他模型不同在 taosanode.config.py 中其 endpoint 为/imputation其余模型均为/ds_predict。下文以 Time-MoE 为例完整演示「本地部署 MaaS 服务 → 写入适配代码 → 配置服务地址 → SQL 调用」的全过程。你也可以用同样方式部署其余五种模型。准备运行环境时序基础模型基于 PyTorch 生态需要准备一个 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上述命令安装的是 CPU 驱动版本的 PyTorch。若模型服务部署在带有 GPU 的服务器上可以在虚拟环境中安装支持 GPU 加速的 PyTorchpip install torch2.3.1 -f https://download.pytorch.org/whl/torch_stable.html你可以直接复用 TDgpt 自带的虚拟环境也可以新建一个独立虚拟环境。使用该环境前务必确保上述依赖包均已正确安装。关于依赖版本的底层约束开源仓库中的 requirements_tsfm.txt 给出了官方统一锁定的一套 Python 3.12 运行环境基线覆盖全部六个 TSFM 服务torch2.4.1cpu、transformers4.40.1、accelerate0.34.2、flask3.0.3等并按需引入uni2ts2.0Moirai、chronos-forecasting1.4.1Chronos、timesfm2.0.2TimesFMMOMENT 则建议用pip install --no-deps momentfm0.1.4单独安装以避免旧版本 numpy/pandas/transformers 的依赖冲突。该文件是排查依赖问题的权威依据。设置时序基础模型服务地址TDgpt 安装根目录下的./lib/taosanalytics/tsfmservice/timemoe-server.py早期版本曾使用time-moe.py负责 Time-MoE 模型的部署与服务。开源仓库中对应的源码位于 tools/tdgpt/taosanalytics/tsfmservice/timemoe-server.py。该脚本基于 Flask 实现核心接口定义如下app.route(/ds_predict, methods[POST]) def do_predict(): # 接收 JSON字段包括 input历史序列、next_len预测长度等 # 对输入序列做 mean/std 标准化后交给模型 generate再反标准化还原服务监听地址通过app.run控制默认绑定0.0.0.0、端口6062app.run( host0.0.0.0, port6062, threadedTrue, debugFalse )将host修改为你希望开启的 URL 服务地址将port修改为你希望开启的端口使用默认值亦可。修改后重启服务即可生效。值得一提的底层细节timemoe-server.py中模型推理前会对输入序列做标准化处理(seqs - mean) / std输出预测后再做反标准化predictions * std mean保证预测结果与原始数据量纲一致当输入序列所有值相同时标准差为 0会直接返回常量预测避免除零错误。启动 Time-MoE 服务⚠️注意如下直接运行脚本的启动方式只对v3.3.8.0之前的版本有效若你使用v3.3.8.0及之后的版本请参考下文「动态下载时序模型」与「时序模型服务启动和停止脚本」。nohup python timemoe-server.py service_output.out 21 第一次启动时脚本会自动从 HuggingFace 加载 0.5 亿参数模型Maple728/TimeMoE-50M。如果需要部署参数规模更大的版本Maple728/TimeMoE-200M将timemoe-server.py文件中的_model_list[0]修改为_model_list[1]即可。模型列表在源码中定义如下model_list [ Maple728/TimeMoE-50M, # time-moe model with 50M parameters Maple728/TimeMoE-200M, # time-moe model with 200M parameters ]如果模型加载失败网络原因可先执行如下命令切换为国内镜像下载模型然后再尝试启动服务export HF_ENDPOINThttps://hf-mirror.com检查service_output.out文件出现如下输出则说明加载成功Running on all addresses (0.0.0.0) Running on http://127.0.0.1:6062检查服务状态使用 Shell 命令验证服务是否正常curl 127.0.0.1:6062/ds_predict如果看到如下返回信息说明服务已正常响应由于/ds_predict仅接受 POST 方法GET 请求返回 405 属预期行为!doctype html html langen title405 Method Not Allowed/title h1Method Not Allowed/h1 pThe method is not allowed for the requested URL./p看到 405 返回即代表部署 Time-MoE 完成。编写模型适配代码将 MaaS 服务整合进 TDgpt 的关键是编写适配类。开源仓库中的 tools/tdgpt/taosanalytics/algo/fc/timemoe.py 是系统内置的 Time-MoE 适配文件可作为参考模板# 所有的时序基础模型服务类均从 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 __init__(self): super().__init__() # 如果配置文件中没有设置服务 URL 地址这里使用默认地址 if self.service_host is None: self.service_host http://127.0.0.1:6062/ds_predict def execute(self): # 检查是否支持历史协变量分析如果不支持触发异常。 # time-moe 不支持历史协变量分析因此触发异常 if len(self.past_dynamic_real): raise ValueError(covariate forecast is not supported yet) # 调用父类的 execute 方法 super().execute()将适配代码放入/usr/local/taos/taosanode/lib/taosanalytics/algo/fc目录下。TDgpt 已经内置 Time-MoE 的支持执行show anodes full可以看到 Time-MoE 的预测服务timemoe-fc。适配基类的实现原理所有时序基础模型适配类都继承自 tools/tdgpt/taosanalytics/algo/tsfm.py 中的TsfmBaseService。其__init__中通过Configure.get_instance().get_tsfm_service(self.name)从配置文件读取该模型的服务地址execute()中构造如下 JSON 载荷通过requests.post发送到 MaaS 服务data { input: self.list, # 历史时序数据 ts: self.ts_list, # 时间戳列表 next_len: self.rows, # 预测长度 past_dynamic_real: self.past_dynamic_real, # 历史协变量 dynamic_real: self.dynamic_real, # 未来协变量 conf_interval: self.conf, # 置信区间 }响应处理逻辑也值得注意404被判定为「invalid host url」非200状态会抛出带响应文本的异常当请求置信区间return_conf ! 0时若服务端未返回upper/lower边界则预测值、上界、下界三者取相同值保证调用方拿到一致的三元组结构。此外set_params支持在 SQL 中通过host参数临时覆盖服务地址自动补全http://前缀get_status会以 5 秒超时探测服务连通性供show anodes full展示服务状态。设置模型服务地址修改/etc/taos/taosanode.config.py中的模型服务地址早期版本曾使用taosanode.ini的[tsfm-service]段timemoe_fc http://127.0.0.1:6062/ds_predict其中key是模型的名称即timemoe-fcvalue是 Time-MoE 本地服务的地址。当前版本的配置结构已演化为 taosanode.config.py 中的models字典各模型的ip、port、endpoint是服务 URL 的单一事实来源conf.py 的reload()会自动推导出http://127.0.0.1:portendpoint并注入配置models { tdtsfm: {script: tdtsfm-server.py, default_model: None, port: 6061, endpoint: /tdtsfm, algo_name: tdtsfm_1, required: True}, timemoe: {script: timemoe-server.py, default_model: Maple728/TimeMoE-200M, port: 6062, endpoint: /ds_predict, algo_name: timemoe-fc, required: True}, moirai: {script: moirai-server.py, default_model: Salesforce/moirai-moe-1.0-R-small, port: 6064, endpoint: /ds_predict, algo_name: moirai, required: False}, chronos: {script: chronos-server.py, default_model: amazon/chronos-bolt-base, port: 6063, endpoint: /ds_predict, algo_name: chronos, required: False}, timesfm: {script: timesfm-server.py, default_model: google/timesfm-2.5-200m-pytorch, port: 6065, endpoint: /ds_predict, algo_name: timesfm, required: False}, moment: {script: moment-server.py, default_model: AutonLab/MOMENT-1-base, port: 6066, endpoint: /imputation, algo_name: moment, required: False}, }其中required: True的tdtsfm与timemoe是安装包内置的必选模型缺失时报错其余四个为可选模型缺失时跳过。随后重启 taosnode 服务并更新服务端算法缓存列表update all anodes之后即可通过 SQL 调用 Time-MoE 的时序数据预测服务。SQL 调用基础模型预测能力部署并注册完成后即可在 TDengine 中用标准 SQL 进行预测SELECT FORECAST(val, algotimemoe-fc) FROM foo;FORECAST函数的algo参数指定模型 key即适配类的nameTDgpt 会将该表的val列数据组装为 JSON 请求发送给 Time-MoE 服务并返回预测结果。若需要指定置信区间或临时覆盖服务地址还可结合TsfmBaseService.set_params支持的参数扩展调用。部署其他时序基础模型其他模型在本地部署服务后在 TDgpt 中注册的逻辑与 Time-MoE 完全一致只需要修改类名称和模型服务名称Key、设置正确的服务地址。Chronos、TimesFM 等时序基础服务的适配文件已经默认提供v3.3.6.4及之后版本的用户只需要在本地启动相应服务即可。各服务脚本同样位于 tools/tdgpt/taosanalytics/tsfmservice 目录。启动 moirai 服务为避免依赖库冲突建议准备干净的 Python 虚拟环境在虚拟环境中安装依赖库pip 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 model with 117M parameters Salesforce/moirai-moe-1.0-R-base, # base model with 205M parameters ] pretrained_model MoiraiMoEModule.from_pretrained( _model_list[0] # 默认加载 small 模型改成 1 即加载 base 模型 ).to(device)执行命令启动服务首次启动会自动下载模型文件若下载速度太慢可使用国内镜像设置方式见上文nohup python moirai-server.py service_output.out 21 检查服务状态的方式与 Time-MoE 相同。启动 chronos 服务在干净的 Python 虚拟环境中安装依赖库pip install torch2.3.1cpu -f https://download.pytorch.org/whl/torch_stable.html pip install chronos-forecasting pip install flask在chronos-server.py文件中设置服务地址与加载模型也可使用默认值def main(): app.run( host0.0.0.0, port6063, threadedTrue, debugFalse )_model_list [ amazon/chronos-bolt-tiny, # 9M parameters, based on t5-efficient-tiny amazon/chronos-bolt-mini, # 21M parameters, based on t5-efficient-mini amazon/chronos-bolt-small, # 48M parameters, based on t5-efficient-small amazon/chronos-bolt-base, # 205M parameters, based on t5-efficient-base ] model BaseChronosPipeline.from_pretrained( _model_list[0], # 默认加载 tiny 模型修改数值即可调整加载的模型 device_mapdevice, torch_dtypetorch.bfloat16, )在 Shell 中执行命令启动服务nohup python chronos-server.py service_output.out 21 启动 timesfm 服务在干净的 Python 虚拟环境中安装依赖库pip 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 启动 moment 服务在干净的 Python 虚拟环境中安装依赖库注意 momentfm 依赖较旧的 numpy/pandas/transformers 版本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 时序模型服务启动和停止脚本为便于启停时序基础模型服务自v3.4.0.0起提供统一的启动脚本start-model.sh与停止脚本stop-model.sh用于一键启动或停止指定或全部时序基础模型服务。启动脚本start-model.sh用于启动指定或全部时序基础模型服务。脚本本身只保留 Linux 入口命令内部统一委托taosanode_service.py对应仓库源码 tools/tdgpt/script/taosanode_service.py读取taosanode.config.py再根据模型名称选择对应的 Python 虚拟环境并启动模型服务。入口脚本固定使用安装目录下主venv的 Python不再回退到系统PATH。使用root安装完成后可在tdgpt根目录/bin/目录下找到该脚本安装过程通常会创建软链接/usr/bin/start-model便于全局调用。默认日志输出到/var/log/taos/taosanode/目录下的taosanode_service_model_name.log文件中。用法说明用法/usr/bin/start-model [-c 配置文件] [模型名|all] 支持的模型名tdtsfm, timesfm, timemoe, moirai, chronos, moment选项说明-c 配置文件 指定配置文件默认install_dir/cfg/taosanode.config.py找不到时回退 /etc/taos/taosanode.config.py -h, --help 显示本帮助信息入口脚本不接受模型名以外的额外位置参数模型规模或本地路径等高级参数请参阅下文「动态下载时序模型」。使用示例在后台启动全部模型服务/usr/bin/start-model all单独启动某个模型服务例如/usr/bin/start-model timesfm通过-c参数指定自定义配置文件/usr/bin/start-model -c /path/to/custom_taosanode.config.py未指定时默认优先使用install_dir/cfg/taosanode.config.py找不到时回退/etc/taos/taosanode.config.py停止脚本stop-model.sh用于一键停止指定或全部时序基础模型服务同样保留为 Linux 入口命令内部委托taosanode_service.py执行停止逻辑使用方式与启动脚本一致便于批量运维。其底层能力对应taosanode_service.py中的model-stop [name]命令。使用示例停止 timesfm 服务/usr/bin/stop-model timesfm一键停止全部模型服务/usr/bin/stop-model all动态下载时序模型自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 模型文件 # 若指定目录不存在则自动下载模型文件到该目录下。 # 第三个参数表示下载模型文件时是否打开镜像推荐国内用户打开该选项 python chronos-server.py /var/lib/taos/taosanode/model/chronos/ amazon/chronos-bolt-tiny True底层实现上timemoe-server.py等脚本通过 argparse 提供了一组等价的高级参数-i/--model-index从 HuggingFace 按索引加载预训练模型、-f/--model-folder指定本地模型目录配合-n/--model-name使用、--enable-ep下载时启用https://hf-mirror.com镜像端点、--host/--port监听地址与端口。指定--model-folder时脚本会检查目录下是否存在model.safetensors与config.json缺失则自动下载存在则直接加载从而支持完全离线的模型部署。时序基础模型 transformers 版本要求不同时序基础模型对transformers库的版本要求不同部署时需严格匹配模型名称transformers 版本time-moe、moirai、tdtsfm4.40chronos4.55moment4.33timesfmN/A实际部署时建议优先参考官方锁定的 requirements_tsfm.txt 统一版本基线并按需调整MOMENT 需要的transformers4.33与主环境4.40存在冲突因此更推荐为每个模型准备独立虚拟环境这与前文「干净的 Python 虚拟环境」的部署建议完全一致。总结时序基础模型把「训练一个专用预测模型」的门槛降低为「部署一个通用 MaaS 服务」。通过本文介绍的五步流程——准备环境、启动服务脚本、编写TsfmBaseService适配类、配置taosanode.config.py服务地址、update all anodes刷新缓存——你可以将 Time-MoE、Chronos、Moirai、TimesFM、MOMENT 等任意开源时序基础模型接入 TDgpt并用一句SELECT FORECAST(val, algoxxx)完成预测或补值。自v3.4.0.0起start-model.sh/stop-model.sh提供了统一的模型服务生命周期管理入口配合taosanode_service.py的model-start/model-stop/model-status命令可在生产环境中实现时序基础模型服务的标准化运维。赞分享数据库时序数据库物联网大数据实时分析云原生【免费下载链接】tdengineTDengine is an open source, high-performance, cloud native time-series database optimized for Internet of Things (IoT), Connected Cars, Industrial IoT and DevOps.项目地址https://gitcode.com/taosdata/tdengine点击查看免费下载相关推荐TDengine TDgpt 时序基础模型TSFM部署实战从 Time-MoE 到 FORECAST SQL 预测TDengine TDgpt 时序基础模型TSFM部署实战从 Time MoE 到 FORECAST SQL 预测 导读 时序基础模型Time Seri数据库时序数据库大数据物联网云原生TDengine 时间序列基础模型TSFM实战指南从 TDgpt 模型服务部署到 SQL 预测与补全TDengine 时间序列基础模型TSFM实战指南从 TDgpt 模型服务部署到 SQL 预测与补全 TDengine 从 v3.3.6.4 起在其 A数据库时序数据库物联网大数据实时分析云原生TDengine TDgpt 部署时间序列基础模型TSFM实战指南从服务启动到 SQL 预测TDengine TDgpt 部署时间序列基础模型TSFM实战指南从服务启动到 SQL 预测 导读 时间序列基础模型Time Series Founda数据库时序数据库物联网大数据实时分析云原生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考