AnalyticDB PostgreSQL 7.0 は、インデータベース AI/ML 機能をサポートしており、データベース内で直接データ処理とモデル計算を行うことができるため、データ転送コストを大幅に削減できます。この機能は pgml 拡張機能を通じて実装されており、PostgresML オープンソースコミュニティのインターフェイスと互換性があり、パフォーマンス、機能、使いやすさの点で深く最適化されています。GPU/CPU アクセラレーションによるモデルのトレーニング、ファインチューニング、デプロイメント、推論をサポートしています。この拡張機能は、XGBoost、LightGBM、SciKit-Learn などの主流の機械学習アルゴリズムを統合し、企業がインテリジェントな分析アプリケーションを効率的に構築するのに役立ちます。
前提条件
カーネルバージョンが V7.1.1.0 以降の AnalyticDB PostgreSQL 7.0 インスタンス。
説明AnalyticDB for PostgreSQL コンソールのインスタンスの[基本情報] ページでマイナーバージョンを確認できます。 インスタンスが必要なバージョンを満たしていない場合は、インスタンスのマイナーバージョンを更新してください。
エラスティックストレージモードのインスタンスが作成されていること。
インスタンスに pgml 拡張機能がインストールされていること。
説明pgml 拡張機能はコンソールからのインストールをサポートしていません。インストールする必要がある場合は、チケットを送信してテクニカルサポートに連絡し、支援を依頼してください。pgml 拡張機能をアンインストールするには、チケットを送信してください。
pgml 拡張機能は AnalyticDB for PostgreSQL 7.0 Basic Edition ではサポートされていません。
メタデータの概要
AnalyticDB PostgreSQL 7.0 のインデータベース AI/ML フレームワークは、pgml 拡張機能に基づいて実装されています。AnalyticDB for PostgreSQL インスタンスに pgml 拡張機能をインストールすると、システムは自動的に pgml という名前のスキーマを作成します。次の表に、pgml スキーマに含まれるメタデータテーブルを示します。
メタデータテーブル名 | 説明 |
projects | トレーニングタスクのプロジェクトに関する情報を記録します。 |
models | モデルトレーニングに関する情報を記録します。 |
files | 保存されたモデルファイルに関する情報を記録します。 |
snapshots | トレーニングデータセットのスナップショットに関する情報を記録します。 |
logs | トレーニングログに関する情報を記録します。 |
deployments | モデルのデプロイメントに関する情報を記録します。 |
モデルトレーニングタスクが開始されると、トレーニング情報がこれらのメタデータテーブルに自動的に書き込まれます。
pgml メタデータテーブルのカスタムタイプ (task、runtime、sampling など) の詳細については、「機械学習」をご参照ください。
projects
projects テーブルには、トレーニングタスクのプロジェクト ID、プロジェクト名、タスクタイプ、作成時間、更新時間が記録されます。テーブルスキーマとインデックス:
Table "pgml.projects"
Column | Type | Collation | Nullable | Default
------------+-----------------------------+-----------+----------+--------------------------------------
id | bigint | | not null | nextval('projects_id_seq'::regclass)
name | text | | not null |
task | task | | not null |
created_at | timestamp without time zone | | not null | clock_timestamp()
updated_at | timestamp without time zone | | not null | clock_timestamp()
Indexes:
"projects_pkey" PRIMARY KEY, btree (id)
"projects_name_idx" btree (name)
Triggers:
projects_auto_updated_at BEFORE UPDATE ON projects FOR EACH ROW EXECUTE FUNCTION set_updated_at()
trigger_before_insert_pgml_projects BEFORE INSERT ON projects FOR EACH ROW EXECUTE FUNCTION trigger_check_pgml_projects()
Distributed Replicatedmodels
models テーブルには、モデルトレーニングに指定されたパラメーターや、プロジェクト ID やスナップショット ID などのその他の関連情報が記録されます。テーブルスキーマとインデックス:
Table "pgml.models"
Column | Type | Collation | Nullable | Default
---------------+-----------------------------+-----------+----------+------------------------------------
id | bigint | | not null | nextval('models_id_seq'::regclass)
project_id | bigint | | not null |
snapshot_id | bigint | | |
num_features | integer | | not null |
algorithm | text | | not null |
runtime | runtime | | | 'python'::runtime
hyperparams | jsonb | | not null |
status | text | | not null |
metrics | jsonb | | |
search | text | | |
search_params | jsonb | | not null |
search_args | jsonb | | not null |
created_at | timestamp without time zone | | not null | clock_timestamp()
updated_at | timestamp without time zone | | not null | clock_timestamp()
Indexes:
"models_pkey" PRIMARY KEY, btree (id)
"models_project_id_idx" btree (project_id)
"models_snapshot_id_idx" btree (snapshot_id)
Triggers:
models_auto_updated_at BEFORE UPDATE ON models FOR EACH ROW EXECUTE FUNCTION set_updated_at()
trigger_before_insert_pgml_models BEFORE INSERT ON models FOR EACH ROW EXECUTE FUNCTION trigger_check_pgml_models_fk()
Distributed Replicatedfiles
files テーブルには、トレーニング後のモデルファイルが data 列にバイナリ形式で記録されます。各ファイルは、それぞれ 100 MB の複数のスプリットに分割されます。テーブルスキーマとインデックス:
Table "pgml.files"
Column | Type | Collation | Nullable | Default
------------+-----------------------------+-----------+----------+-----------------------------------
id | bigint | | not null | nextval('files_id_seq'::regclass)
model_id | bigint | | not null |
path | text | | not null |
part | integer | | not null |
created_at | timestamp without time zone | | not null | clock_timestamp()
updated_at | timestamp without time zone | | not null | clock_timestamp()
data | bytea | | not null |
Indexes:
"files_pkey" PRIMARY KEY, btree (id)
"files_model_id_path_part_idx" btree (model_id, path, part)
Triggers:
files_auto_updated_at BEFORE UPDATE ON files FOR EACH ROW EXECUTE FUNCTION set_updated_at()
trigger_before_insert_pgml_files BEFORE INSERT ON files FOR EACH ROW EXECUTE FUNCTION trigger_check_pgml_files()
Distributed Replicatedsnapshots
snapshots テーブルには、テーブル名やテストセットの分割情報など、トレーニングデータセットのスナップショットに関する情報が記録されます。テーブルスキーマとインデックス:
Table "pgml.snapshots"
Column | Type | Collation | Nullable | Default
---------------+-----------------------------+-----------+----------+---------------------------------------
id | bigint | | not null | nextval('snapshots_id_seq'::regclass)
relation_name | text | | not null |
y_column_name | text[] | | |
test_size | real | | not null |
test_sampling | sampling | | not null |
status | text | | not null |
columns | jsonb | | |
analysis | jsonb | | |
created_at | timestamp without time zone | | not null | clock_timestamp()
updated_at | timestamp without time zone | | not null | clock_timestamp()
materialized | boolean | | | false
Indexes:
"snapshots_pkey" PRIMARY KEY, btree (id)
Triggers:
snapshots_auto_updated_at BEFORE UPDATE ON snapshots FOR EACH ROW EXECUTE FUNCTION set_updated_at()
Distributed Replicatedlogs
logs テーブルには、トレーニングログに関する情報が記録されます。1 つのトレーニングタスクに複数のトレーニングログが含まれる場合があります。created_at 列の値を昇順で並べ替えることで、ログを表示できます。テーブルスキーマとインデックス:
Table "pgml.logs"
Column | Type | Collation | Nullable | Default
------------+-----------------------------+-----------+----------+----------------------------------
id | integer | | not null | nextval('logs_id_seq'::regclass)
model_id | bigint | | |
project_id | bigint | | |
created_at | timestamp without time zone | | | CURRENT_TIMESTAMP
logs | jsonb | | |
Indexes:
"logs_pkey" PRIMARY KEY, btree (id)
Distributed Replicateddeployments
deployments テーブルには、プロジェクト ID、デプロイメント ID、モデル ID など、モデルのデプロイメントに関する情報が記録されます。テーブルスキーマとインデックス:
Table "pgml.deployments"
Column | Type | Collation | Nullable | Default
------------+-----------------------------+-----------+----------+-----------------------------------------
id | bigint | | not null | nextval('deployments_id_seq'::regclass)
project_id | bigint | | not null |
model_id | bigint | | not null |
strategy | strategy | | not null |
created_at | timestamp without time zone | | not null | clock_timestamp()
Indexes:
"deployments_pkey" PRIMARY KEY, btree (id)
"deployments_model_id_created_at_idx" btree (model_id)
"deployments_project_id_created_at_idx" btree (project_id)
Triggers:
deployments_auto_updated_at BEFORE UPDATE ON deployments FOR EACH ROW EXECUTE FUNCTION set_updated_at()
trigger_before_insert_pgml_deployments BEFORE INSERT ON deployments FOR EACH ROW EXECUTE FUNCTION trigger_check_pgml_deployments_fk()
Distributed Replicated