AINode 是 IoTDB 在 ConfigNode、DataNode 后提供的第三种内生节点,该节点通过与 IoTDB 集群的 DataNode、ConfigNode 交互,扩展了对时间序列进行机器学习分析的能力。AINode 将模型的管理、训练及推理融合在数据库引擎中,支持使用注册的模型在指定时序数据上通过简单 SQL 语句完成时序分析任务,还支持注册并使用自定义机器学习模型。AINode 目前已集成常见时序分析场景(例如预测)的机器学习算法和自研模型。
AINode 是 IoTDB 集群外的额外套件,采用独立安装包部署。
AINode 安装包(apache-iotdb-<version>-ainode-bin.zip)解压后关键目录结构如下:
| 目录 | 类型 | 说明 |
|---|---|---|
| lib | 文件夹 | AINode 的可执行程序及依赖 |
| sbin | 文件夹 | AINode 的运行脚本,用于启动或停止 AINode |
| conf | 文件夹 | AINode 的配置文件和版本声明文件 |
说明:AINode 支持通过源码编译的方式构建安装包,具体操作步骤可参考AINode 构建小节。
为确保您获取的 AINode 安装包完整且正确,在执行安装部署前建议您进行 SHA512 校验。
准备工作:
校验步骤(以 linux 为例):
/data/ainode):cd /data/ainode
sha512sum apache-iotdb-<version>-ainode-bin.zip
(base) root@hadoop@1:/data/ainode (0.664s) sha512sum apache-iotdb-2.0.5-ainode-bin.zip b39039a1235a86bc3ce3df0a102efa215e281b5839683ccaf47883b390af4e686f99e6980a24a9d41348325f3518bd55ebb1c61a123495cbdc575dad8c695f28 apache-iotdb-2.0.5-ainode-bin.zip
注意事项:
下载导入 AINode 到专用文件夹,切换到专用文件夹并解压安装包;
unzip apache-iotdb-<version>-ainode-bin.zip
AINode 支持修改一些必要的参数。可以在 /IOTDB_AINODE_HOME/conf/iotdb-ainode.properties 文件中找到下列参数并进行持久化的修改:
| 名称 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| cluster_name | AINode 要加入的集群标识 | string | defaultCluster |
| ain_seed_config_node | AINode 启动时注册的 ConfigNode 地址 | String | 127.0.0.1:10710 |
| ain_cluster_ingress_address | AINode 拉取数据的 DataNode 的 rpc 地址 | String | 127.0.0.1 |
| ain_cluster_ingress_port | AINode 拉取数据的 DataNode 的 rpc 端口 | Integer | 6667 |
| ain_cluster_ingress_username | AINode 拉取数据的 DataNode 的客户端用户名 | String | root |
| ain_cluster_ingress_password | AINode 拉取数据的 DataNode 的客户端密码 | String | root |
| ain_rpc_address | AINode 提供服务与通信的地址 ,内部服务通讯接口 | String | 127.0.0.1 |
| ain_rpc_port | AINode 提供服务与通信的端口 | String | 10810 |
| ain_system_dir | AINode 元数据存储路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | data/AINode/system |
| ain_models_dir | AINode 存储模型文件的路径,相对路径的起始目录与操作系统相关,建议使用绝对路径 | String | data/AINode/models |
| ain_thrift_compression_enabled | AINode 是否启用 thrift 的压缩机制,0-不启动、1-启动 | Boolean | 0 |
若部署环境可联网且能连通 HuggingFace 环境,系统会自动拉取内置模型权重文件,可忽略本步骤。
若为离线环境,联系天谋工作人员获取模型权重文件夹,并放置到/IOTDB_AINODE_HOME/data/ainode/models/builtin 目录下。
NOTE:注意目录层级,最终所有内置模型权重的父目录都是 builtin 。
在完成 ConfigNode 的部署后,可以通过添加 AINode 来支持时序模型的管理和推理功能。在配置项中指定 IoTDB 集群的信息后,可以执行相应的指令来启动 AINode,加入 IoTDB 集群。
# 启动命令 # Linux 和 MacOS 系统 bash sbin/start-ainode.sh # Windows 系统 sbin\start-ainode.bat # 后台启动命令(长期运行推荐) # Linux 和 MacOS 系统 bash sbin/start-ainode.sh -d # Windows 系统 bash sbin\start-ainode.bat -d
AINode 启动过程中会自动将新的 AINode 加入 IoTDB 集群。启动 AINode 后可以在命令行中输入 SQL 来查询,集群中看到 AINode 节点,其运行状态为 Running(如下展示)表示加入成功。
IoTDB> show cluster +------+----------+-------+---------------+------------+-------+-----------+ |NodeID| NodeType| Status|InternalAddress|InternalPort|Version| BuildInfo| +------+----------+-------+---------------+------------+-------+-----------+ | 0|ConfigNode|Running| 127.0.0.1| 10710|UNKNOWN|190e303-dev| | 1| DataNode|Running| 127.0.0.1| 10730|UNKNOWN|190e303-dev| | 2| AINode|Running| 127.0.0.1| 10810|UNKNOWN|190e303-dev| +------+----------+-------+---------------+------------+-------+-----------+
除此之外,还可以通过 show models 命令来查看模型状态。如果模型状态不对,请检查权重文件路径是否正确。
IoTDB> show models +---------------------+---------+--------+--------+ | ModelId|ModelType|Category| State| +---------------------+---------+--------+--------+ | arima| sktime| builtin| active| | holtwinters| sktime| builtin| active| |exponential_smoothing| sktime| builtin| active| | naive_forecaster| sktime| builtin| active| | stl_forecaster| sktime| builtin| active| | gaussian_hmm| sktime| builtin| active| | gmm_hmm| sktime| builtin| active| | stray| sktime| builtin| active| | timer_xl| timer| builtin| active| | sundial| sundial| builtin| active| | chronos2| t5| builtin| active| +---------------------+---------+--------+--------+
如果需要停止正在运行的 AINode 节点,则执行相应的关停脚本,且支持通过参数 -p 指定端口,该端口为配置项中的 ain_rpc_port。
# Linux / MacOS bash sbin/stop-ainode.sh bash sbin/stop-ainode.sh -p <port_id> # 指定端口 #Windows sbin\stop-ainode.bat sbin\stop-ainode.bat -p <port_id> # 指定端口
停止 AINode 后,还可以在集群中看到 AINode 节点,其运行状态为 UNKNOWN(如下展示),此时无法使用 AINode 功能。
IoTDB> show cluster +------+----------+-------+---------------+------------+-------+-----------+ |NodeID| NodeType| Status|InternalAddress|InternalPort|Version| BuildInfo| +------+----------+-------+---------------+------------+-------+-----------+ | 0|ConfigNode|Running| 127.0.0.1| 10710|UNKNOWN|190e303-dev| | 1| DataNode|Running| 127.0.0.1| 10730|UNKNOWN|190e303-dev| | 2| AINode|UNKNOWN| 127.0.0.1| 10790|UNKNOWN|190e303-dev| +------+----------+-------+---------------+------------+-------+-----------+
如果需要重新启动该节点,需重新执行启动脚本。
如果需要对当前 AINode 进行版本升级,可参考如下步骤:
停止当前 AINode 服务
# Linux / MacOS bash sbin/stop-ainode.sh bash sbin/stop-ainode.sh -p <port_id> # 指定端口 #Windows sbin\stop-ainode.bat sbin\stop-ainode.bat -p <port_id> # 指定端口
替换核心文件
lib 和 sbin目录,并将新版本的 lib 和 sbin 复制到对应位置更新内置模型权重(可选)
data/ainode/models/builtin 目录升级完毕后,可启动 AINode 服务,并查看节点状态,具体命令可参考【3.4】和【3.5】小节。
AINode 支持通过如下方式构建安装包。
# 同时构建 IoTDB 和 AINode 的指令 mvn clean package -pl distribution -P with-ainode -am -DskipTests # 只构建 AINode 的指令 mvn clean package -pl iotdb-core/ainode -P with-ainode -am -DskipTests
注意:
. ├── conf │ ├── git.properties │ ├── iotdb-ainode.properties # AINode 配置文件 │ └── pom.properties ├── lib # 采用文件夹形式打包 AINode,有助于提升启动效率 │ ├── _internal # 内含 Python 解释器及全量 python 依赖,解决离线启动问题 │ └── ainode # AINode 可执行程序 ├── LICENSE ├── licenses │ ├── 'CDDL License 1.1' │ ├── 'Eclipse Public License 1.0 (EPL-1.0)' │ ├── 'Eclipse Public License version 2.0 (EPL-2.0)' │ ├── 'The 2-Clause BSD License' │ ├── 'The 3-Clause BSD License' │ ├── 'The MIT License (progressbar)' │ └── 'The MIT License (QOS.ch)' ├── NOTICE ├── README.md ├── README_ZH.md ├── RELEASE_NOTES.md └── sbin # 部署脚本 ├── start-ainode.sh ├── stop-ainode.sh └── windows