はじめに
Verticaの機械学習機能を使用して作成したモデルはEXPORT_MODELS/IMPORT_MODELS関数を利用することで、別の環境に移行することができます。
例えば、開発環境で学習を行い出来上がったモデルを本番環境に移行することで、本番環境に負荷をかけることなくモデルの作成(学習)が行えます。
EXPORT_MODELS
コマンド構文
SELECT EXPORT_MODELS ( 'エクスポート先のファイルパス', 'エクスポート対象');IMPORT_MODELS
コマンド構文
SELECT IMPORT_MODELS ('インポート対象のファイルパス' USING PARAMETERS new_schema='インポート先のスキーマ')利用例
本例では、サーバAで学習したモデルをサーバBに移行します。
サーバAでモデルをエクスポート
※サーバAでの操作
サーバAのVertica上に存在するsvm_faithfulモデルをエクスポートします。
dbadmin=> SELECT * FROM models WHERE model_name='svm_faithful';
-[ RECORD 1 ]------------------------------
model_id | 45035996274691570
model_name | svm_faithful
schema_id | 45035996273704980
schema_name | public
owner_id | 45035996273704962
owner_name | dbadmin
category | VERTICA_MODELS
model_type | SVM_REGRESSOR
is_complete | t
create_time | 2018-12-05 13:53:19.934934+09
size | 14001)EXPORT_MODELS関数を使用して、/tmp/配下にモデルをエクスポートします。
dbadmin=> SELECT EXPORT_MODELS ('/tmp/', 'public.svm_faithful');
EXPORT_MODELS
---------------
Success
(1 row)2)モデル名の同名のディレクトリが作成されていることが確認できます。
$ ls -l /tmp/
-rw-r--r-- 1 dbadmin verticadba 849 12月 5 17:21 svm_faithful3)svm_faithfulディレクトリを圧縮し、サーバBに転送します。
$ tar -zcvf svm_faithful.tar.gz svm_faithful
svm_faithful/
svm_faithful/crc.json
svm_faithful/metadata.json
svm_faithful/svm_regressor.m
svm_faithful/model.json
$ ls -l /tmp/svm_faithful.tar.gz
-rw-r--r-- 1 dbadmin verticadba 849 12月 5 17:21 svm_faithful.tar.gz
$scp /tmp/svm_faithful.tar.gz dbadmin@serverb:/tmp/
svm_faithful.tar.gz 100% 849 0.8KB/s 00:00サーバBでモデルをインポート
※サーバBでの操作
1)転送されたファイルを解凍します。
$ tar -zxvf /tmp/svm_faithful.tar.gz
svm_faithful/
svm_faithful/crc.json
svm_faithful/metadata.json
svm_faithful/svm_regressor.m
svm_faithful/model.json2)サーバBのVerticaのpublicスキーマ上にモデルをインポートします。
dbadmin=> SELECT IMPORT_MODELS ('/tmp/svm_faithful' USING PARAMETERS new_schema='public');
IMPORT_MODELS
---------------
Success
(1 row)3)モデル一覧を確認するとsvm_faithfulモデルが存在することが確認できます。
dbadmin=> SELECT * FROM models WHERE model_name='svm_faithful';
-[ RECORD 1 ]------------------------------
model_id | 45035996273820578
model_name | svm_faithful
schema_id | 45035996273704980
schema_name | public
owner_id | 45035996273704962
owner_name | dbadmin
category | VERTICA_MODELS
model_type | SVM_REGRESSOR
is_complete | t
create_time | 2018-12-05 17:32:58.153929+09
size | 1400これにより、エクスポートしたモデルを使用した予測がサーバBで行えるようになります。
dbadmin=> SELECT id,
dbadmin-> eruptions,
dbadmin-> PREDICT_SVM_REGRESSOR(waiting USING PARAMETERS model_name='svm_faithful') AS pred
dbadmin-> FROM faithful_testing;
id | eruptions | pred
-----+-----------+------------------
4 | 2.283 | 3.12061841241353
5 | 4.533 | 4.27802238202209
8 | 3.6 | 4.27802238202209
9 | 1.95 | 2.5670773834703
11 | 1.833 | 2.71804311863663
・
・
・参考情報
検証バージョンについて
この記事の内容はVertica 9.1で確認しています。

