Merge branch '3.0' into merge/3.0to3.3.6
This commit is contained in:
commit
a488cb3d40
|
@ -3,6 +3,8 @@ sidebar_label: 数据模型
|
|||
title: TDengine 数据模型
|
||||
toc_max_heading_level: 4
|
||||
---
|
||||
import origintable from './data-model-origin-table.png';
|
||||
import origintable2 from './data-model-origin-table-2.png';
|
||||
|
||||
为了清晰地阐述时序数据的基本概念,并为示例程序的编写提供便利,整个文档都将以智能电表为例,探讨时序数据的典型应用场景。设想有一种型号的智能电表,它能够采集
|
||||
电流、电压和相位这 3 个模拟量。此外,每块智能电表还具有位置和分组等静态属性。这些智能电表采集的数据示例如下表所示。
|
||||
|
@ -355,7 +357,7 @@ TAGS (
|
|||
|
||||
以设备 d1001 为例,假设 d1001 设备的电流、电压、相位数据如下:
|
||||
|
||||

|
||||
<img src={origintable} width="70%" alt="data-model-origin-table" />
|
||||
|
||||
虚拟表 d1001_v 中的数据如下:
|
||||
|
||||
|
@ -388,7 +390,7 @@ CREATE VTABLE current_v (
|
|||
|
||||
假设 d1001, d1002, d1003, d1004 四个设备的电流数据如下:
|
||||
|
||||

|
||||
<img src={origintable2} width="70%" alt="data-model-origin-table-2" />
|
||||
|
||||
虚拟表 current_v 中的数据如下:
|
||||
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
---
|
||||
sidebar_label: TDgpt技术内幕
|
||||
title: TDgpt技术内幕
|
||||
---
|
||||
|
||||
import TDgpt from './pic/data-analysis.png';
|
||||
|
||||
# 背景介绍
|
||||
针对时间序列数据预测分析、异常检测、数据补全和数据分类的应用领域,相关领域的研究人员提出并开发出了众多不同技术特点、适用于不同场景的时序数据分析算法,广泛应用在时间序列数据预测、异常检测等领域。
|
||||
|
||||
分析算法通常以高级编程语言(Python语言或R语言)工具包的形式存在,并通过开源的方式广泛分发和使用,这种应用模式极大地便利了软件开发人员在应用系统中调用复杂的分析算法,极大地降低了使用高级算法的门槛。
|
||||
|
||||
另一方面,数据库系统研发人员也尝试将数据分析算法模型整合到数据库系统中,通过建立Machine Learning 库(例如 Spark 的机器学习库)充分利用成熟分析技术增强数据库或分析计算引擎的高级数据分析能力。
|
||||
|
||||
飞速发展的人工智能(AI)为时序数据分析应用带来的新机遇,快速有效地将 AI 能力应用在时间序列数据分析领域也为数据库。为此,涛思数据创新性地提出了时序数据分析智能体 TDgpt,使用 TDgpt,将您能够通过SQL 语句,直接调用适配和整合驱动统计分析算法、机器学习算法模型、深度学习模型,时序数据基础模型以及大语言模型,并将这些分析能力转化为 SQL 语句的调用,通过异常检测窗口和预测函数的方式应用在时序数据上。
|
||||
|
||||
|
||||
# 技术特点
|
||||
TDgpt 是与 TDengine 主进程 taosd 适配的外置式时序数据分析智能体,能够将时序数据分析服务无缝集成在 TDengine 的查询执行流程中。
|
||||
TDgpt 是一个无状态的平台,其内置了经典的统计分析模型库 Statsmodel,内嵌了 torch/Keras 等机器/深度学习框架库,此外还通过请求转发和适配的方式直接调用涛思数据自研的时序数据基础大模型 TDtsfm (TDengine time series foundation model)。
|
||||
|
||||
作为一个分析智能体,TDgpt 后续还将整合第三方时序数据 MaaS 大模型服务,仅修改一个参数(algo)就能够调用最先进的时间序列模型服务。
|
||||
TDgpt 是一个开放的系统,用户能够根据自己的需要,添加预测分析、异常检测、数据补全、数据分类算法,添加完成后,仅通过修改 SQL 语句中调用的算法参数就能够无缝使用新加入的算法。
|
||||
无需应用修改一行代码。
|
||||
|
||||
# 系统架构
|
||||
TDgpt 由若干个无状态的分析节点 anode 构成,可以按需在系统集群中部署 Anode 节点,也可以根据分析模型算法的特点,将 Anode 部署在合适的硬件环境中,例如带有 GPU 的计算节点。
|
||||
TDgpt 针对不同的分析算法,提供统一的调用接口和调用方式,根据用户请求的参数,调用高级分析算法包及其他的分析工具,并将分析获得的结果按照约定的方式返回给 TDengine 的主进程 taosd。
|
||||
TDgpt 的主要包含四个部分的内容。
|
||||
- 第一部分是内置分析库,包括statsmodels, pyculiarity, pmdarima 等,提供可以直接调用的预测分析和异常检测算法模型。
|
||||
- 第二部分是内置的机器学习库(包括:torch,keras,scikit-learn等),用于驱动预训练完成的机器(深度)学习模型在 TDgpt 的进程空间内运行。预训练的流程可以使用 Merlion/Kats 等 开源的端到端机器学习框架进行管理,并将完成训练的模型上传到 TDgpt 指定目录即可;
|
||||
- 第三部分是通用大语言模型的请求适配模块。将时序数据预测请求转换后,基于 Prompt 向 DeepSeek,LlaMa 等通用大语言模型 MaaS 请求服务(这部分功能暂未开源);
|
||||
- 第四部分是通过 Adapter 直接向本地部署的 Time-MoE、TDtsfm 等时序数据模型请求服务。时序数据专用模型相对于通用语言大模型,无需 Prompt,更加便捷轻量,本地应用部署对硬件资源要求也较低;除此之外,Adapter 还可以直接请求 TimeGPT 这种类型的时序数据分析 MaaS 服务,调用云端的时序模型服务提供本地化时序数据分析能力。
|
||||
|
||||
<img src={TDgpt} alt="TDgpt架构图" />
|
||||
|
||||
查询过程中,TDengine 中的Vnode 会将涉及时序数据高级分析的部分直接转发到 Anode,并等待分析完成后将结果组装完成,嵌入查询执行流程。
|
||||
|
||||
# 时序数据分析服务
|
||||
|
||||
使用TDgpt 提供的时序数据分析服务,包括:
|
||||
- 时序数据异常检测:TDengine 中定义了新的时间窗口——异常(状态)窗口——来提供异常检测服务。异常窗口可以视为一种特殊的事件窗口(Event Window),即异常检测算法确定的连续异常时间序列数据所在的时间窗口。与普通事件窗口区别在于——时间窗口的起始时间和结束时间均是分析算法确定,不是用户指定的表达式判定。异常窗口使用方式与其他类型的时间窗口(例如状态窗口、会话窗口等)类似。因此时间窗口内可使用的查询操作均可应用在异常窗口上。
|
||||
- 时序数据分析预测:TDengine 中提供了一个新的函数FORECAST提供时序数据预测服务,基于输入的(历史)时间序列数据调用指定(或默认)预测算法给出输入时序数据后续时间序列的预测数据。
|
||||
- 时序数据补全:研发测试中,2025年7月发布
|
||||
- 时序数据分类:研发测试中,2025年7月发布
|
||||
|
||||
# 自定义分析算法
|
||||
|
||||
TDgpt 是一个可扩展的时序数据高级分析智能体,用户遵循[算法开发者指南](./dev)中的简易步骤就能将自己开发的分析算法添加到系统中。之后应用可以通过 SQL语句直接调用, 让高级分析算法的使用门槛降到几乎为零。对于新引入的算法或模型,应用不用做任何调整。
|
||||
|
||||
TDpgt 只支持使用 Python 语言开发的分析算法。 Anode 采用 Python 类动态加载模式,在启动的时候扫描特定目录内满足约定条件的所有代码文件,并将其加载到系统中。因此,开发者只需要遵循以下几步就能完成新算法的添加工作:
|
||||
1. 开发完成符合要求的分析算法类
|
||||
2. 将代码文件放入对应目录,然后重启 Anode
|
||||
3. 使用SQL命令更新算法缓存列表即可。
|
||||
添加完成的算法在刷新算法列表后,立即使用 SQL 语句进行调用。
|
||||
|
||||
# 算法评估工具
|
||||
|
||||
在 TDgpt 企业版中,还提供针对多种算法模型有效性的综合评估工具。该工具可以针对 TDgpt 可调用所有时序数据分析(预测分析与异常检测)服务,包括内置数据分析算法模型,已部署的预训练机器学习模型、第三方时序数据(大)模型服务,基于 TDengine 中的时序数据进行预测分析对比和异常检测对比评估,并给出量化指标评估不同分析模型在给定数据集上准确度及性能。
|
||||
|
||||
# 模型管理
|
||||
|
||||
对于Torch/Tensorflow/Keras 等机器学习库框架驱动的预训练模型,需要首先将训练完成的数据模型添加到 Anode 的指定目录中,Anode 可以自动调用该目录内的模型,驱动其运行并提供服务。
|
||||
企业版本的 TDgpt 具备模型的管理能力,能够与开源的端到端时序数据机器学习框架(例如:Merlion、Kats等)无缝集成。
|
||||
处理能力
|
||||
|
||||
通常意义上,时间序列数据分析主要是计算密集型任务。这种计算密集型任务,可以使用更高性能的 CPU 或 GPU 来提升处理性能。
|
||||
如果是机器/深度学习模型,依赖于 torch 库驱动其运行,可以采用标准的提升分析处理能力的方案来提升 TDgpt 的服务能力,例如将 Anode 部署在内存更大,并具有 GPU 的服务器之上,使用可调用 GPU 的 torch 库驱动模型运行,以提升分析响应能力。
|
||||
不同的模型、算法可以部署在不同的 Anode 上,增加并行的处理能力。
|
||||
|
||||
# 运营维护
|
||||
|
||||
开源版本不提供用户权限和资源控制机制。
|
||||
TDgpt 默认使用 uWSGI 驱动的 flask 服务,可以通过打开 uwsgi 的端口监控服务的运行状态。
|
||||
|
||||
# 参考文献
|
||||
|
||||
[1] Merlion:https://opensource.salesforce.com/Merlion/latest/index.html
|
||||
|
||||
[2] Kats:https://facebookresearch.github.io/Kats/
|
||||
|
||||
[3] StatsModels: https://www.statsmodels.org/stable/index.html
|
||||
|
||||
[4] Keras:https://keras.io/guides/
|
||||
|
||||
[5] Torch:https://pytorch.org/
|
||||
|
||||
[6] Scikit-learn:https://scikit-learn.org/stable/index.html
|
||||
|
||||
[7] Time-MoE:https://github.com/Time-MoE/Time-MoE
|
||||
|
||||
[8] TimeGPT:https://docs.nixtla.io/docs/getting-started-about_timegpt
|
||||
|
||||
[9] DeepSeek:https://www.deepseek.com/
|
||||
|
||||
[10] LlaMa:https://www.llama.com/docs/overview/
|
||||
|
||||
[11] Spark MLlib:https://spark.apache.org/docs/latest/ml-guide.html
|
|
@ -32,7 +32,7 @@ curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
|
|||
```shell
|
||||
export PATH=$PATH:~/.local/bin
|
||||
```
|
||||
至此 Python 环境准备完成,可以进项 taosanode 的 安装和部署。
|
||||
至此 Python 环境准备完成,可以进行 taosanode 的安装和部署。
|
||||
|
||||
### 安装及卸载
|
||||
使用 Linux 环境下的安装包 TDengine-anode-3.3.x.x-Linux-x64.tar.gz 可进行 Anode 的安装部署工作,命令如下:
|
||||
|
|
|
@ -3,96 +3,12 @@ sidebar_label: TDgpt
|
|||
title: TDgpt
|
||||
---
|
||||
|
||||
import TDgpt from './pic/data-analysis.png';
|
||||
|
||||
# 背景介绍
|
||||
针对时间序列数据预测分析、异常检测、数据补全和数据分类的应用领域,相关领域的研究人员提出并开发出了众多不同技术特点、适用于不同场景的时序数据分析算法,广泛应用在时间序列数据预测、异常检测等领域。
|
||||
|
||||
分析算法通常以高级编程语言(Python语言或R语言)工具包的形式存在,并通过开源的方式广泛分发和使用,这种应用模式极大地便利了软件开发人员在应用系统中调用复杂的分析算法,极大地降低了使用高级算法的门槛。
|
||||
|
||||
另一方面,数据库系统研发人员也尝试将数据分析算法模型整合到数据库系统中,通过建立Machine Learning 库(例如 Spark 的机器学习库)充分利用成熟分析技术增强数据库或分析计算引擎的高级数据分析能力。
|
||||
|
||||
飞速发展的人工智能(AI)为时序数据分析应用带来的新机遇,快速有效地将 AI 能力应用在时间序列数据分析领域也为数据库。为此,涛思数据创新性地提出了时序数据分析智能体 TDgpt,使用 TDgpt,将您能够通过SQL 语句,直接调用适配和整合驱动统计分析算法、机器学习算法模型、深度学习模型,时序数据基础模型以及大语言模型,并将这些分析能力转化为 SQL 语句的调用,通过异常检测窗口和预测函数的方式应用在时序数据上。
|
||||
本章主要介绍如何安装部署、使用时序数据分析智能体 TDgpt 以及向 TDgpt 添加算法模型,协同 taosd 提供分析服务。
|
||||
|
||||
|
||||
# 技术特点
|
||||
TDgpt 是与 TDengine 主进程 taosd 适配的外置式时序数据分析智能体,能够将时序数据分析服务无缝集成在 TDengine 的查询执行流程中。
|
||||
TDgpt 是一个无状态的平台,其内置了经典的统计分析模型库 Statsmodel,内嵌了 torch/Keras 等机器/深度学习框架库,此外还通过请求转发和适配的方式直接调用涛思数据自研的时序数据基础大模型 TDtsfm (TDengine time series foundation model)。
|
||||
```mdx-code-block
|
||||
import DocCardList from '@theme/DocCardList';
|
||||
import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
|
||||
|
||||
作为一个分析智能体,TDgpt 后续还将整合第三方时序数据 MaaS 大模型服务,仅修改一个参数(algo)就能够调用最先进的时间序列模型服务。
|
||||
TDgpt 是一个开放的系统,用户能够根据自己的需要,添加预测分析、异常检测、数据补全、数据分类算法,添加完成后,仅通过修改 SQL 语句中调用的算法参数就能够无缝使用新加入的算法。
|
||||
无需应用修改一行代码。
|
||||
|
||||
# 系统架构
|
||||
TDgpt 由若干个无状态的分析节点 anode 构成,可以按需在系统集群中部署 Anode 节点,也可以根据分析模型算法的特点,将 Anode 部署在合适的硬件环境中,例如带有 GPU 的计算节点。
|
||||
TDgpt 针对不同的分析算法,提供统一的调用接口和调用方式,根据用户请求的参数,调用高级分析算法包及其他的分析工具,并将分析获得的结果按照约定的方式返回给 TDengine 的主进程 taosd。
|
||||
TDgpt 的主要包含四个部分的内容。
|
||||
- 第一部分是内置分析库,包括statsmodels, pyculiarity, pmdarima 等,提供可以直接调用的预测分析和异常检测算法模型。
|
||||
- 第二部分是内置的机器学习库(包括:torch,keras,scikit-learn等),用于驱动预训练完成的机器(深度)学习模型在 TDgpt 的进程空间内运行。预训练的流程可以使用 Merlion/Kats 等 开源的端到端机器学习框架进行管理,并将完成训练的模型上传到 TDgpt 指定目录即可;
|
||||
- 第三部分是通用大语言模型的请求适配模块。将时序数据预测请求转换后,基于 Prompt 向 DeepSeek,LlaMa 等通用大语言模型 MaaS 请求服务(这部分功能暂未开源);
|
||||
- 第四部分是通过 Adapter 直接向本地部署的 Time-MoE、TDtsfm 等时序数据模型请求服务。时序数据专用模型相对于通用语言大模型,无需 Prompt,更加便捷轻量,本地应用部署对硬件资源要求也较低;除此之外,Adapter 还可以直接请求 TimeGPT 这种类型的时序数据分析 MaaS 服务,调用云端的时序模型服务提供本地化时序数据分析能力。
|
||||
|
||||
<img src={TDgpt} alt="TDgpt架构图" />
|
||||
|
||||
查询过程中,TDengine 中的Vnode 会将涉及时序数据高级分析的部分直接转发到 Anode,并等待分析完成后将结果组装完成,嵌入查询执行流程。
|
||||
|
||||
# 时序数据分析服务
|
||||
|
||||
使用TDgpt 提供的时序数据分析服务,包括:
|
||||
- 时序数据异常检测:TDengine 中定义了新的时间窗口——异常(状态)窗口——来提供异常检测服务。异常窗口可以视为一种特殊的事件窗口(Event Window),即异常检测算法确定的连续异常时间序列数据所在的时间窗口。与普通事件窗口区别在于——时间窗口的起始时间和结束时间均是分析算法确定,不是用户指定的表达式判定。异常窗口使用方式与其他类型的时间窗口(例如状态窗口、会话窗口等)类似。因此时间窗口内可使用的查询操作均可应用在异常窗口上。
|
||||
- 时序数据分析预测:TDengine 中提供了一个新的函数FORECAST提供时序数据预测服务,基于输入的(历史)时间序列数据调用指定(或默认)预测算法给出输入时序数据后续时间序列的预测数据。
|
||||
- 时序数据补全:研发测试中,2025年7月发布
|
||||
- 时序数据分类:研发测试中,2025年7月发布
|
||||
|
||||
# 自定义分析算法
|
||||
|
||||
TDgpt 是一个可扩展的时序数据高级分析智能体,用户遵循[算法开发者指南](./dev)中的简易步骤就能将自己开发的分析算法添加到系统中。之后应用可以通过 SQL语句直接调用, 让高级分析算法的使用门槛降到几乎为零。对于新引入的算法或模型,应用不用做任何调整。
|
||||
|
||||
TDpgt 只支持使用 Python 语言开发的分析算法。 Anode 采用 Python 类动态加载模式,在启动的时候扫描特定目录内满足约定条件的所有代码文件,并将其加载到系统中。因此,开发者只需要遵循以下几步就能完成新算法的添加工作:
|
||||
1. 开发完成符合要求的分析算法类
|
||||
2. 将代码文件放入对应目录,然后重启 Anode
|
||||
3. 使用SQL命令更新算法缓存列表即可。
|
||||
添加完成的算法在刷新算法列表后,立即使用 SQL 语句进行调用。
|
||||
|
||||
# 算法评估工具
|
||||
|
||||
在 TDgpt 企业版中,还提供针对多种算法模型有效性的综合评估工具。该工具可以针对 TDgpt 可调用所有时序数据分析(预测分析与异常检测)服务,包括内置数据分析算法模型,已部署的预训练机器学习模型、第三方时序数据(大)模型服务,基于 TDengine 中的时序数据进行预测分析对比和异常检测对比评估,并给出量化指标评估不同分析模型在给定数据集上准确度及性能。
|
||||
|
||||
# 模型管理
|
||||
|
||||
对于Torch/Tensorflow/Keras 等机器学习库框架驱动的预训练模型,需要首先将训练完成的数据模型添加到 Anode 的指定目录中,Anode 可以自动调用该目录内的模型,驱动其运行并提供服务。
|
||||
企业版本的 TDgpt 具备模型的管理能力,能够与开源的端到端时序数据机器学习框架(例如:Merlion、Kats等)无缝集成。
|
||||
处理能力
|
||||
|
||||
通常意义上,时间序列数据分析主要是计算密集型任务。这种计算密集型任务,可以使用更高性能的 CPU 或 GPU 来提升处理性能。
|
||||
如果是机器/深度学习模型,依赖于 torch 库驱动其运行,可以采用标准的提升分析处理能力的方案来提升 TDgpt 的服务能力,例如将 Anode 部署在内存更大,并具有 GPU 的服务器之上,使用可调用 GPU 的 torch 库驱动模型运行,以提升分析响应能力。
|
||||
不同的模型、算法可以部署在不同的 Anode 上,增加并行的处理能力。
|
||||
|
||||
# 运营维护
|
||||
|
||||
开源版本不提供用户权限和资源控制机制。
|
||||
TDgpt 默认使用 uWSGI 驱动的 flask 服务,可以通过打开 uwsgi 的端口监控服务的运行状态。
|
||||
|
||||
# 参考文献
|
||||
|
||||
[1] Merlion:https://opensource.salesforce.com/Merlion/latest/index.html
|
||||
|
||||
[2] Kats:https://facebookresearch.github.io/Kats/
|
||||
|
||||
[3] StatsModels: https://www.statsmodels.org/stable/index.html
|
||||
|
||||
[4] Keras:https://keras.io/guides/
|
||||
|
||||
[5] Torch:https://pytorch.org/
|
||||
|
||||
[6] Scikit-learn:https://scikit-learn.org/stable/index.html
|
||||
|
||||
[7] Time-MoE:https://github.com/Time-MoE/Time-MoE
|
||||
|
||||
[8] TimeGPT:https://docs.nixtla.io/docs/getting-started-about_timegpt
|
||||
|
||||
[9] DeepSeek:https://www.deepseek.com/
|
||||
|
||||
[10] LlaMa:https://www.llama.com/docs/overview/
|
||||
|
||||
[11] Spark MLlib:https://spark.apache.org/docs/latest/ml-guide.html
|
||||
<DocCardList items={useCurrentSidebarCategory().items}/>
|
||||
```
|
||||
|
|
|
@ -3,6 +3,11 @@ sidebar_label: 虚拟表
|
|||
title: 虚拟表
|
||||
description: 对虚拟表的各种管理操作
|
||||
---
|
||||
|
||||
import origintable from './pic/virtual-table-origin-table.png';
|
||||
import queryres from './pic/virtual-table-query-res.png';
|
||||
import partres from './pic/virtual-table-query-res-part.png';
|
||||
|
||||
## 创建虚拟表
|
||||
|
||||
`CREATE VTABLE` 语句用于创建普通虚拟表和以虚拟超级表为模板创建虚拟子表。
|
||||
|
@ -68,7 +73,7 @@ CREATE VTABLE [IF NOT EXISTS] [db_name].vtb_name
|
|||
|
||||
假设有表 t1、t2、t3 结构和数据如下:
|
||||
|
||||

|
||||
<img src={origintable} width="100%" alt="origintable" />
|
||||
|
||||
并且有虚拟普通表 v1 ,创建方式如下:
|
||||
|
||||
|
@ -89,7 +94,7 @@ select * from v1;
|
|||
|
||||
结果如下:
|
||||
|
||||

|
||||
<img src={queryres} width="100%" alt="queryres" />
|
||||
|
||||
如果没有选择全部列,只是选择了部分列,查询的结果只会包含选择的列的原始表的时间戳,例如执行如下查询:
|
||||
|
||||
|
@ -99,7 +104,7 @@ select c1, c2 from v1;
|
|||
|
||||
得到的结果如下图所示:
|
||||
|
||||

|
||||
<img src={partres} width="100%" alt="partres" />
|
||||
|
||||
因为 c1、c2 列对应的原始表 t1、t2 中没有 0:00:03 这个时间戳,所以最后的结果也不会包含这个时间戳。
|
||||
|
Loading…
Reference in New Issue