#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发 原创

忆往事_随风
发布于 2022-10-30 21:31
浏览
1收藏

@[toc]

一、openGauss 与 DB4AI

一直以来,数据库给人的感觉就像是一个盒子,用来装着各种数据,只有借助“外力”才能够存取数据,对数据来进行操作。DB4AI,当我听到这个概念的时候有些震惊,因为它将数据库与 AI 这两个看似不沾边的东西结合了起来,组合成了一个更为强大的技术。

一方面,AI 可以让数据库更加智能(AI4DB),例如传统的经验数据库优化技术无法满足大规模数据库实例、多样化应用以及多样化用户的高性能需求,但是基于学习的技术可以解决可以解决这个问题;另一方面,数据库技术可以优化人工智能模型(DB4AI),比如 AI 的部署问题,需要开发人员进行复杂的代码编写以及训练才能完成模型的训练,如果将 AI 的相关能力(比如数据挖掘、数据清洗、数据标记等等)集成到数据库上,就能降低人工智能使用的复杂度。

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

目前具有这一功能的数据库似乎还很少,而国内似乎只有华为所开源的数据库 openGauss 具备这一功能。通过在数据库内集成 AI 算法,使得 openGauss 具备原生 AI 计算引擎、模型管理、AI 算子、AI 原生执行计划的能力。当前版本的 DB4AI 支持基于SGD 算子的逻辑回归(目前支持二分类任务)、线性回归和支持向量机算法(分类任务),以及基于K-Means算子的Kmeans聚类算法。

二、DB4AI 能力简单上手

1、openGauss 的部署与安装

openGauss 的安装方式有很多种,我这里就选择最简单快捷的方法,使用 Docker 来进行安装,来简化安装过程:

① 镜像搜索

使用 docker search 命令搜索 openGauss 镜像,可以看到第一个,也就是 NAME 为 enmotech/opengauss 的镜像 STARS 最多,这里我就选择这个,这个好像也是官方推荐的 Docker 镜像。

# 镜像搜索
docker search opengauss

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

② 镜像拉取

接下来使用 docker pull 对刚刚我们选择的镜像进行拉取,我这里拉取 3.0.0 版本的 openGauss(目前似乎没有 3.1.0 版本的 openGauss Docker 镜像)

# 镜像拉取
docker pull enmotech/opengauss:3.0.0

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

输入 docker images 可以看到我们的镜像

# 镜像查看
docker images

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

如果你使用 Docker Desktop,也可以在其中看到

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

③ 运行镜像

之后使用 docker run 命令就可以来创建并运行一个容器

# 运行镜像
docker run --name opengauss -p 26000:26000 --privileged=true -d -e GS_PASSWORD=Enmo@123 enmotech/opengauss:latest

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

使用 Docker Desktop 的同学也可以直接点击右边的 RUN 来运行镜像。

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

④ 进入容器

使用 docker ps 命令查看容器 ID

# 查看镜像 ID
docker ps

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

使用 docker exec 命令进入容器

# 进入容器
docker exec -it 6b4745abb1a2 /bin/bash

也可以在 Docker Desktop 中来运行。

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

之后进入 omm 用户,并输入 gsql 命令进入 openGauss 数据库

root@6b4745abb1a2:/# su - omm

omm@6b4745abb1a2:~$ gsql

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

2、简单案例入门 openGauss DB4AI 开发

Ⅰ、DB4AI 语法及关键字

使用 openGauss 的 DB4AI 能力进行 AI 开发主要所经历的大致流程以及使用的语句在下面的图中展现的活灵活现,下面就大致讲解一下 DB4AI 语法及关键字。
#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

① 模型创建基本语法与关键字
名称 描述
语句 CREATE MODEL 创建模型并进行训练,同时保存模型。
USING 用来指定算法的名称
WITH 用于指定训练模型时的超参数
PREDICT BY 利用已有模型进行推断。
关键字 TARGET 训练/推断任务的目标列名。
FEATURES 训练/推断任务的数据特征列名。
MODEL 训练任务的模型名称。
② 算子支持的超参

可以使用 WITH 指定训练模型时的超参,支持的超参如下

算子 超参
GD<br>(logistic_regression、linear_regression、svm_classification) optimizer(char); verbose(bool); max_iterations(int); max_seconds(double); batch_size(int); learning_rate(double); decay(double); tolerance(double)<br>其中,SVM限定超参lambda(double)
Kmeans max_iterations(int); num_centroids(int); tolerance(double); batch_size(int); num_features(int); distance_function(char); seeding_function(char*); verbose(int);seed(int)
③ 查看执行计划

可以使用 EXPLAIN 语句对“CREATE MODEL”和“PREDICT BY”的模型训练或预测过程中的执行计划进行分析,EXPLAIN 支持的参数如下:

参数名 描述
ANALYZE 布尔型变量,追加运行时间、循环次数等描述信息
VERBOSE 布尔型变量,控制训练的运行信息是否输出到客户端
COSTS 布尔型变量
CPU 布尔型变量
DETAIL 布尔型变量,不可用。
NODES 布尔型变量,不可用
NUM_NODES 布尔型变量,不可用
BUFFERS 布尔型变量
TIMING 布尔型变量
PLAN 布尔型变量
FORMAT 可选格式类型:TEXT / XML / JSON / YAML

Ⅱ、DB4AI 上手房价预测案例

① 准备数据

训练 AI 模型主要还是通过创建表并导入数据的方式来准备数据,以下面简单的房价预测案例入门,首先创建 houses 表,具体如下:

CREATE TABLE houses (
id INTEGER,
tax INTEGER,
bedroom INTEGER,
bath DOUBLE PRECISION,
price INTEGER,
size INTEGER,
lot INTEGER,
mark text
);

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

接下来向 house 表中插入数据

insert into houses(id, tax, bedroom, bath, price, size, lot, mark) VALUES
(1,590,2,1,50000,770,22100,'a+'),
(2,1050,3,2,85000,1410,12000,'a+'),
(3,20,2,1,22500,1060,3500,'a-'),
(4,870,2,2,90000,1300,17500,'a+'),
(5,1320,3,2,133000,1500,30000,'a+'),
(6,1350,2,1,90500,850,25700,'a-'),
(7,2790,3,2.5,260000,2130,25000,'a+'),
(8,680,2,1,142500,1170,22000,'a-'),
(9,1840,3,2,160000,1500,19000,'a+'),
(10,3680,4,2,240000,2790,20000,'a-'),
(11,1660,3,1,87000,1030,17500,'a+'),
(12,1620,3,2,118500,1250,20000,'a-'),
(13,3100,3,2,140000,1760,38000,'a+'),
(14,2090,2,3,148000,1550,14000,'a-'),
(15,650,3,1.5,65000,1450,12000,'a-');

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

② 创建模型

openGauss 创建模型与创建数据表类似,创建表一般是 CREATE TABLE TABLE_NAME,而创建模型就是 CREATE MODEL MODEL_NAME,以此来区分两种表与模型的区别,创建模型的语法如下:

CREATE MODEL model_name USING algorithm_name 
[FEATURES { {expression [ [ AS ] output_name ]} [, ...] }]
[TARGET { {expression [ [ AS ] output_name ]} [, ...] }]
FROM { table_name | select_query }
WITH hyperparameter_name = { hyperparameter_value | DEFAULT } [, ...] }

这里我们创建房价预测模型:

CREATE MODEL price_model USING logistic_regression
 FEATURES size, lot
 TARGET mark
 FROM HOUSES
 WITH learning_rate=0.88, max_iterations=default;

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

③ 预测房价

之后使用我们创建的 price_model 模型进行房价的预测:

SELECT id, PREDICT BY price_model (FEATURES size,lot), price 
FROM houses;

#冲刺创作新星# openGauss 高级特性 DB4AI 进行 AI 开发-鸿蒙开发者社区

参考

[1] Li G, Zhou X, Cao L. AI meets database: AI4DB and DB4AI[C]//Proceedings of the 2021 International Conference on Management of Data. 2021: 2859-2866.
[2] https://opengauss.org/zh/

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
已于2022-10-30 21:32:14修改
2
收藏 1
回复
举报
回复
    相关推荐