openGauss源码解析(182)

openGauss源码解析:AI技术(29)

3. 预测流程

内核侧的模型预测过程主要通过ModelPredictInternal函数实现。树状模型预测过程通过TreeModelPredict函数实现。内核侧的树状模型预测过程会占用一些与AI Engine进行通信的信令,该通信过程如下:

char* TreeModelPredict(const char* modelName, char* filepath, const char* ip, int port)

{

if (!TryConnectRemoteServer(conninfo, &buf)) {

DestroyConnInfo(conninfo);

ParseResBuf(buf, filepath, "AI engine connection failed.");

return buf;

}

switch (buf[0]) {

case '0': {

ereport(NOTICE, (errmodule(MOD_OPT_AI), errmsg("Model setup successfully.")));

break;

}

case 'M': {

ParseResBuf(buf, filepath, "Internal error: missing compulsory key.");

break;

}

}

/* Predict阶段 */

if (!TryConnectRemoteServer(conninfo, &buf)) {

ParseResBuf(buf, filepath, "AI engine connection failed.");

return buf;

}

switch (buf[0]) {

case 'M': {

ParseResBuf(buf, filepath, "Internal error: fail to load the file to predict.");

break;

}

case 'S': {

ParseResBuf(buf, filepath, "Internal error: session is not loaded, model setup required.");

break;

}

default: {

break;

}

}

return buf;

}

AI Engine侧的Setup过程的Web接口是/model_setup,预测阶段的Web接口是/predict,他们的协议都是Post。

4. 数据编码

数据编码分为以下两个维度。

(1) 算子维度:包括每个执行计划算子的属性,如表8-15所示。

表8-15 算子维度

属性名

含义

编码策略

Optname

算子类型

One-hot

Orientation

返回元组存储格式

One-hot

Strategy

逻辑属性

One-hot

Options

物理属性

One-hot

Quals

谓词

hash

Projection

返回投影列

hash

(2) 计划维度。

对于每个算子,在其固有属性之外,openGauss还对query id,plan node id和parent node id进行了记录,在训练/预测阶段,使用这些信息将算子信息重建为树状计划结构,且可以递归构建子计划树来进行数据增强,从而提升模型泛化能力。树状数据结构如图8-21所示。

D:\2021年\源码解析书籍\图片\第8章\图8-21  树状数据结构示意图-去色.png

图8-21 树状数据结构示意图

内核侧的树状数据编码通过GetOPTEncoding函数实现。

posted @ 2024-05-06 10:35  openGauss-bot  阅读(1)  评论(0编辑  收藏  举报