投稿者:Nihito Kawahara

Tech

EC2でopenscoring-serverを使ったモデルデプロイの仕組みを構築する

blog-details

コラビットの川原です。

今回は、PMMLがあればモデルのデプロイができるopenscoringの運用方法について紹介します。

openscoringの概要については以前記事を書きましたので、気になる方は一読頂ければと思います。

https://collab-it.net/tech/how-to-deoploy-machine-larning-model-by-openscoring/

linuxのserviceとして登録する

起動および終了、再起動を簡単に行うために、serviceとしての登録を行います。

設定はAWSで行うものとして書いてあります。(そのほかの環境の場合はpathなどを適宜調整してみてください。)

まず、openscoringを実行するshスクリプトファイルを用意します。

vim ~/startup.sh
#!/bin/bash
 
echo '### start server'
# サーバの起動
java -jar /home/ec2-user/openscoring/openscoring-server/target/server-executable-1.4-SNAPSHOT.jar
 
echo '### register model'

そして、serviceとして登録するため、新しくopenscoring.serviceというファイルを作成・編集します。

sudo vim /etc/systemd/system/openscoring.service

内容は下記のように記します。

[Unit]
Description = openscoring server
After = network.target
 
[Service]
ExecStart = /home/ec2-user/startup.sh
Restart = always
 
[Install]
WantedBy = multi-user.target

Unitはサービスの単位のことで、[Unit]セクションでは、Unitの依存関係および順序関係、詳細などが定義できます。

上記では、Descriptionで処理の詳細、Afterで依存関係を定義しています。

Serviceは今回定義する「linux上で起動および再起動、終了などを管理する仕組み」のことで、[Service]セクションでは、処理の実態を記載しています。

ExecStartでは処理対象のshスクリプト、Restartではサービス停止時の再起動条件を定義しています。alwaysは常に再起動を試みる設定です。

[Install]とはServiceを常時稼働させる際の依存関係を定義することができます。

WantedByではどのUnitの前提として常時稼働させるかを定義しています。

次に、指定ディレクトリのPMMLファイルを自動読み込みするDirectoryDeployerもserviceとして登録します。

こちらはserverの起動とは別に定義する必要があります。

先ほどと同じように、shスクリプトファイルを作成します。

vim register.sh
#!/bin/bash
 
echo '### register model'
 
# モデルの登録
java -cp /home/ec2-user/openscoring/openscoring-client/target/client-executable-1.4-SNAPSHOT.jar org.openscoring.client.DirectoryDeployer --model-collection http://localhost:8080/openscoring/model --dir /home/ec2-user/pmml
~                                          

serviceとして登録するためopenscoring-register.serviceというファイルを作成・編集します。

sudo vim /etc/systemd/system/openscoring-register.service

内容は下記の通り。

[Unit]
Description = openscoring server model registration watcher
Requires = openscoring.service
After = openscoring.service
 
[Service]
ExecStart = /home/ec2-user/register.sh
Restart = always
 
[Install]
WantedBy = openscoring.service

設定をみると、事前に作成したopenscoring.serviceとの依存関係を定義していることがわかります。

これでserviceの設定は完了です。

Serviceを常時稼働させる

あとは、自動起動設定を有効にするだけです。

sudo systemctl enable openscoring.service
sudo systemctl enable openscoring-register.service

モデルが登録されているか確認する

これで、http://localhost:8080/openscoring/model にアクセスすれば、

/home/ec2-user/pmml内にあるPMMLファイルを読み込んだ状態になっているので、モデル一覧が表示されるはずです。

以上で構築は完了です。