pg4ml
PG4ML是一个机器学习框架
仓库
https://gitee.com/guotiecheng/plpgsql_pg4ml
https://gitee.com/guotiecheng/plpgsql_pg4ml
源码
pg4ml-2.0.tar.gz
pg4ml-2.0.tar.gz
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 1930 | pg4ml | 否 | 否 | 否 | 是 | 是 | 是 | - |
| 相关扩展 | plpgsql tablefunc cube plpython3u vectorize pgml pgcontext pgmnemo vector pg_summarize pg_ai_query |
|---|
require python3
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.0 | 1817161514 | pg4ml | plpgsql, tablefunc, cube, plpython3u |
| RPM | PIGSTY | 2.0 | 1817161514 | pg4ml_$v | - |
| DEB | PIGSTY | 2.0 | 1817161514 | postgresql-$v-pg4ml | - |
构建
您可以使用 pig build 命令构建 pg4ml 扩展的 RPM / DEB 包:
BASH
安装
您可以直接安装 pg4ml 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
pg4ml 是一个 PostgreSQL 扩展,完全在数据库内使用 PL/pgSQL 和 PL/Python 实现机器学习框架。它通过 SQL 提供矩阵运算、神经网络构建与训练、聚类算法和科学计算功能。
前置条件
- PostgreSQL >= 14,支持 Python3
- 依赖扩展:
plpgsql、tablefunc、cube、plpython3u
快速开始
SQL
功能特性
矩阵运算
框架在 sm_sc schema 下提供了全面的矩阵运算库:
- 逐元素运算:算术、比较、取整、拼接、布尔、位运算、复数和广播运算
- 矩阵运算:乘法、转置、翻转、旋转、拼接
- 构造:采样、替换、填充、字符匹配、随机生成
- 三角函数:矩阵上的广播运算
- 聚合:切片级聚合、矩阵级聚合、按切片值排序、定位极值位置
切片聚合示例
按垂直切片求平均(每组 2 行):
SQL
2x3 块上的最大池化:
SQL
神经网络
框架支持深度神经网络的构建和训练:
- 节点和路径表:
sm_sc.tb_nn_node/sm_sc.tb_nn_path用于定义网络结构 - 训练输入缓冲区:
sm_sc.tb_nn_train_input_buff用于接收训练数据 - 任务管理:
sm_sc.tb_classify_task用于部署和管理训练任务 - 激活函数、卷积、池化、Lambda 运算
- 损失函数、导数计算、反向传播
- 推理:
sm_sc.ft_nn_in_out用于将测试/验证数据通过训练好的模型运行
聚类
- K-means++:通过
sm_sc.prc_kmeans_pp过程 - DBSCAN:通过
sm_sc.prc_dbscan_pp过程
两者都使用 sm_sc.tb_cluster_task 进行任务部署和管理。
科学计算
- 波形处理
- 计算图 JSON 序列化/反序列化
- 复数运算
- 线性代数
性能提示
- 启用调试模式:
SET session pg4ml._v_is_debug_check = '1'; - 矩阵乘法使用
plpython3u调用 numpy 进行优化 - 调整 PostgreSQL 并行参数以支持多线程训练:
max_parallel_workers_per_gatherforce_parallel_modeparallel_setup_cost,parallel_tuple_cost
- 考虑使用
pg_strom扩展进行 GPU 加速