内置 OpenTS 时序大模型

KaiwuDB 预测分析引擎内置 OpenTS 时序大模型open in new window。用户可以通过 KAT 或 SQL 语句调用内置时序大模型,对时序数据进行预测分析。

支持同时对单个或多个变量进行预测。各变量独立预测,结果按输入列顺序返回,每个变量默认预测未来 100 步。

当前版本存在以下限制:

  • 不支持自定义算法。
  • 仅支持自回归预测,不支持以多个变量作为输入预测目标变量(例如,根据气温、风速等预测天气类型)。
  • 输入列数最多 10 列,每列输入数据最多 50000 行。

本文介绍如何使用 KaiwuDB 预测分析引擎的内置时序大模型进行预测分析。

前提条件

  • 已部署并启动 KaiwuDB 数据库(V3.1.0 及以上版本)。
  • 安装 KaiwuDB 预测分析引擎,且满足以下环境要求:
    • Kubernetes 1.20 及以上版本。
    • Python 3.8、3.9 或 3.10。
  • 已创建目标时序库和时序表,并已写入相关数据。

步骤

以下示例假设已在 ts_db 数据库中创建时序表 t1 并写入相关数据。

  1. 导入内置时序大模型。

    SET CLUSTER SETTING ml.enabled = true;
    
  2. 激活内置时序大模型。

    以下示例将 tsllm 的第一个版本设置为活跃版本。

    SELECT kwdbml.set_active_version('tsllm', 1);
    
  3. 调用内置时序大模型进行预测分析。

    返回结果中,n_variables 表示预测的变量数量,predictions 中的每个子数组对应一个输入变量的预测结果,顺序与输入列一致。

    • 单变量预测

      以下示例对 t1 时序表的 a 列进行预测分析。

      SELECT kwdbml.predict(array_agg(a)) USING tsllm FROM t1;
      

      预期输出:

      kwdbml.predict
      ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      {"n_variables": 1, "predictions": [489.11163330078125, 305.67230224609375, 522.8404541015625, 593.8882446289062, 366.367431640625, 815.3488159179688, 543.037353515625, 424.76812744140625, 468.74322509765625, 448.3457336425781]}
      (1 row)
      
    • 多变量预测

      以下示例同时对 t1 时序表的 a 列和 b 列进行预测分析。各变量独立预测,结果按输入列顺序返回。

      SELECT kwdbml.predict(array_agg(a), array_agg(b)) USING tsllm FROM t1;
      

      预期输出:

      kwdbml.predict
      -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      {"n_variables": 2, "predictions": [[489.3099670410156, 576.5405883789062, 565.8938598632812, 484.5823669433594, 417.71142578125, 505.8118591308594, 723.138427734375, 436.93963623046875, 616.1046752929688, 511.8031005859375], [262.2967224121094, 247.99717712402344, 198.07505798339844, 216.33871459960938, 264.9329833984375, 164.69932556152344, 283.3146667480469, 291.57794189453125, 157.2838897705078, 218.97805786132812]]}
      (1 row)