EC2でopenscoring-serverを使ったモデルデプロイの仕組みを構築する
コラビットの川原です。
今回は、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/bashecho '### start server'# サーバの起動java -jar /home/ec2-user/openscoring/openscoring-server/target/server-executable-1.4-SNAPSHOT.jarecho '### register model'
そして、serviceとして登録するため、新しくopenscoring.service
というファイルを作成・編集します。
sudo vim /etc/systemd/system/openscoring.service
内容は下記のように記します。
[Unit]Description = openscoring serverAfter = network.target[Service]ExecStart = /home/ec2-user/startup.shRestart = 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/bashecho '### 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 watcherRequires = openscoring.serviceAfter = openscoring.service[Service]ExecStart = /home/ec2-user/register.shRestart = always[Install]WantedBy = openscoring.service
設定をみると、事前に作成したopenscoring.service
との依存関係を定義していることがわかります。
これでserviceの設定は完了です。
Serviceを常時稼働させる
あとは、自動起動設定を有効にするだけです。
sudo systemctl enable openscoring.servicesudo systemctl enable openscoring-register.service
モデルが登録されているか確認する
これで、http://localhost:8080/openscoring/model
にアクセスすれば、
/home/ec2-user/pmml
内にあるPMMLファイルを読み込んだ状態になっているので、モデル一覧が表示されるはずです。
以上で構築は完了です。