diff --git a/docs/zh/06-advanced/06-TDgpt/06-dev/index.md b/docs/zh/06-advanced/06-TDgpt/06-dev/index.md index 17c245742e..6ef9e67a20 100644 --- a/docs/zh/06-advanced/06-TDgpt/06-dev/index.md +++ b/docs/zh/06-advanced/06-TDgpt/06-dev/index.md @@ -29,7 +29,7 @@ TDgpt 是一个可扩展的时序数据高级分析平台,用户仅按照简 |目录|说明| |---|---| -|taos|Python 源代码目录,其下包含了算法具体保存目录 algo,放置杂项目录 misc,单元测试和集成测试目录 test。 algo 目录下 ad 保存异常检测算法代码,fc 目录保存预测算法代码| +|taosanalytics| 源代码目录,其下包含了算法具体保存目录 algo,放置杂项目录 misc,单元测试和集成测试目录 test。 algo 目录下 ad 保存异常检测算法代码,fc 目录保存预测算法代码| |script|是安装脚本和发布脚本放置目录| |model|放置针对数据集完成的训练模型| |cfg|配置文件目录| @@ -42,7 +42,7 @@ TDgpt 是一个可扩展的时序数据高级分析平台,用户仅按照简 ### 类命名规范 -由于算法采用自动加载,因此其只识别按照特定命名方式的类。算法类的名称需要以下划线开始,以 Service 结尾。例如:_KsigmaService 是 KSigma 异常检测算法类。 +由于算法采用自动加载,因此其只识别按照特定命名方式的类。算法类的名称需要以下划线开始,以 Service 结尾。例如:`_KsigmaService` 是 KSigma 异常检测算法类。 ### 类继承约定 @@ -60,33 +60,23 @@ TDgpt 是一个可扩展的时序数据高级分析平台,用户仅按照简 SELECT COUNT(*) FROM foo ANOMALY_DETECTION(col_name, 'algo=algo_name') ``` -## 需要模型的算法 +## 添加具有训练模型的分析算法 -针对特定数据集,进行模型训练的算法,在训练完成后。需要将训练得到的模型保存在 model 目录中。需要注意的是,针对每个算法,需要建立独立的文件夹。例如 auto_encoder 的训练算法在 model 目录下建立 autoencoder 的目录,使用该算法针对不同数据集训练得到的模型,均需要放置在该目录下。 +某些深度学习的分析算法需要使用输入时间序列数据进行训练,然后生成针对训练数据集的分析模型。这种情况下,同一个分析算法对应不同的输入数据集有不同的分析模型。 +这种类型的分析算法要添加到 TDgpt 中,首先需要在 `model` 目录中建立目录,将采用该算法针对不同的输入时间序列数据生成的训练模型均保存在该目录下。如下图所示,针对不同的数据集,采用自编码器训练的数据异常检测算法生成的模型均保存在该目录下。为了确保模型能够正常读取加载,要求存储的模型使用`joblib`库进行序列化保存。 +采用训练-保存模型的方式可以一次训练,多次调用的优势。避免动态训练调用所带来的反复训练开销。 -训练完成后的模型,使用 joblib 进行保存。 - -并在 model 目录下建立对应的文件夹存放该模型。 - -保存模型的调用,可参考 encoder.py 的方式,用户通过调用 set_params 方法,并指定参数 `{"model": "ad_encoder_keras"}` 的方式,可以调用该模型进行计算。 - -具体的调用方式如下: +调用已经保存的模型,需要首先调用`set_params`方法,并在参数中指定调用模型的名称 `{"model": "ad_encoder_keras"}` 即可调用该模型进行计算。调用方式如下: ```python def test_autoencoder_ad(self): - # 获取特定的算法服务 - s = loader.get_service("ac") - data = self.__load_remote_data_for_ad() - - # 设置异常检查的输入数据 - s.set_input_list(data) + # 获取特定的算法对象 + # ... # 指定调用的模型,该模型是之前针对该数据集进行训练获得 s.set_params({"model": "ad_encoder_keras"}) + # 执行检查动作,并返回结果 r = s.execute() - - num_of_error = -(sum(filter(lambda x: x == -1, r))) - self.assertEqual(num_of_error, 109) ```