pg4ml
Overview
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 1930 | pg4ml | No | No | No | Yes | Yes | Yes | - |
| Related | plpgsql tablefunc cube plpython3u vectorize pgml pgcontext pgmnemo vector pg_summarize pg_ai_query |
|---|
require python3
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| 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 | - |
Build
You can build the RPM / DEB packages for pg4ml using pig build:
Install
You can install pg4ml directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:
Install the extension using pig or apt/yum/dnf:
Create Extension:
Usage
pg4ml: Machine learning framework for PostgreSQL. Source: README.md
pg4ml is a PostgreSQL extension that implements a machine learning framework entirely within the database using PL/pgSQL and PL/Python. It provides matrix operations, neural network construction and training, clustering algorithms, and scientific computing – all through SQL.
Prerequisites
- PostgreSQL >= 14 with Python3 support
- Required extensions:
plpgsql,tablefunc,cube,plpython3u
Getting Started
Features
Matrix Operations
The framework provides a comprehensive matrix operation library under the sm_sc schema:
- Element-wise operations: arithmetic, comparison, rounding, concatenation, boolean, bitwise, complex number, and broadcast operations
- Matrix operations: multiplication, transpose, flip, rotate, concatenation
- Construction: sampling, replacement, padding, character matching, random generation
- Trigonometric functions: broadcast operations on matrices
- Aggregation: slice-level aggregation, matrix-level aggregation, sorting by slice values, locating extremum positions
Slice Aggregation Examples
Average over vertical slices (groups of 2):
Max pooling over 2x3 blocks:
Neural Networks
The framework supports deep neural network construction and training:
- Node and Path tables:
sm_sc.tb_nn_node/sm_sc.tb_nn_pathfor defining network structure - Training input buffer:
sm_sc.tb_nn_train_input_bufffor receiving training data - Task management:
sm_sc.tb_classify_taskfor deploying and managing training tasks - Activation functions, convolution, pooling, lambda operations
- Loss functions, derivative computation, backpropagation
- Inference:
sm_sc.ft_nn_in_outfor running test/validation data through a trained model
Clustering
- K-means++: via
sm_sc.prc_kmeans_ppprocedure - DBSCAN: via
sm_sc.prc_dbscan_ppprocedure
Both use sm_sc.tb_cluster_task for task deployment and management.
Scientific Computing
- Waveform processing
- Computational graph JSON serialization/deserialization
- Complex number operations
- Linear algebra
Performance Tips
- Enable debug mode with:
SET session pg4ml._v_is_debug_check = '1'; - Matrix multiplication uses
plpython3uto call numpy for optimization - Adjust PostgreSQL parallel parameters for multi-threaded training:
max_parallel_workers_per_gatherforce_parallel_modeparallel_setup_cost,parallel_tuple_cost
- Consider using
pg_stromextension for GPU acceleration
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)