OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

作成したモデルを別の環境に移行する(モデルのエクスポート/インポート)

公開日:
更新日:
基本操作
機械学習
#機械学習
#エクスポート
#インポート

はじめに

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        | 1400

1)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_faithful

3)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.json

2)サーバ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
・
・
・

参考情報

EXPORT_MODELS
https://www.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/MachineLearning/EXPORT_MODELS.htm

IMPORT_MODELS
https://www.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/MachineLearning/IMPORT_MODELS.htm

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。