目次
はじめに
Verticaの機械学習機能を使用して作成したモデルはEXPORT_MODELS/IMPORT_MODELS関数を利用することで、別の環境に移行することができます。例えば、開発環境で学習を行い出来上がったモデルを本番環境に移行することで、本番環境に負荷をかけることなくモデルの作成(学習)が行えます。

EXPORT_MODELS
コマンド構文
| 1 | SELECT EXPORT_MODELS ( 'エクスポート先のファイルパス', 'エクスポート対象'); | 
IMPORT_MODELS
コマンド構文
| 1 | SELECT IMPORT_MODELS ('インポート対象のファイルパス' USING PARAMETERS new_schema='インポート先のスキーマ') | 
利用例
本例では、サーバAで学習したモデルをサーバBに移行します。
サーバAでモデルをエクスポート
※サーバAでの操作サーバAのVertica上に存在するsvm_faithfulモデルをエクスポートします。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | 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/配下にモデルをエクスポートします。
| 1 2 3 4 5 | dbadmin=> SELECT EXPORT_MODELS ('/tmp/', 'public.svm_faithful');  EXPORT_MODELS ---------------  Success (1 row) | 
2)モデル名の同名のディレクトリが作成されていることが確認できます。
| 1 2 | $ ls -l /tmp/ -rw-r--r--  1 dbadmin  verticadba   849 12月  5 17:21 svm_faithful | 
3)svm_faithfulディレクトリを圧縮し、サーバBに転送します。
| 1 2 3 4 5 6 7 8 9 10 11 12 | $ 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)転送されたファイルを解凍します。
| 1 2 3 4 5 6 | $ 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スキーマ上にモデルをインポートします。
| 1 2 3 4 5 | dbadmin=> SELECT IMPORT_MODELS ('/tmp/svm_faithful' USING PARAMETERS new_schema='public');  IMPORT_MODELS ---------------  Success (1 row) | 
3)モデル一覧を確認するとsvm_faithfulモデルが存在することが確認できます。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | 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で行えるようになります。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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_MODELShttps://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で確認しています。- 投稿タグ
- 機械学習, Machine Learning, ml


