2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OpenShift Source-to-Image (S2I)を使用してAI推論のCI/CDを試す

Last updated at Posted at 2022-04-04

本記事ではOpenShift Source-to-Image (S2I)を使用してAI推論のCI/CDを試してみた時の手順を紹介します。
今回はAIモデルの学習・検証・モニタリングといったMLOps要素を含まずシンプルな推論アプリのCI/CDをOpenShift S2Iを使用して試してみました。OpenShift S2IはGitHub上などにあるソースコードからDocker形式のコンテナイメージをビルドしてOpenShift上にデプロイが可能なツールで、お手軽に推論アプリをOpenShift上に作成することが可能となっています。
AI推論は学習済みモデルを使用したTensorflow/Kerasによる画像分類をサンプルとして使用し、以下のGitHub上のソースコードからOpenShift上に推論アプリをデプロイします。
https://github.com/mmitsugi/ic-sample

なお、別途OpenShift Pipelinesを使用した同AI推論のCI/CDも試しており、別記事にて記載しています。

OpenShiftはx86サーバー上のCodeReadyContainers(CRC)を使用しています。またIBM PowerサーバーのSingle Node Cluster上でも動作可能です。IBM Powerサーバーの場合はGitHubのブランチにppc64leを指定してS2Iを使用する必要があります。

AI推論アプリの構成

GitHub上にも記載がありますが、今回使用するAI推論アプリの構成は以下となります。

Flaskを使用したPythonアプリとなり、GitHubのレポジトリにFlaskのソースapp.pyとアプリで使用するPythonパッケージをrequirements.txtに追加しておくことでOpenShift S2Iが自動で認識してくれてビルド、デプロイまでを行ってくれます。

プロジェクトの作成およびS2Iビルド

今回はOpenShiftのWeb Consoleからの操作を行いました。
S2Iビルドを行うユーザーでWeb Consoleにログインし、Administratorパースペクティブでホーム->プロジェクトを選択後、"プロジェクトの作成"ボタンをクリックしてプロジェクトを作成します。今回は"ic-s2i"という名前のプロジェクトを作成しました。
project.png
その後パースペクティブをDeveloperに変更して、
perspective_change.png
"+追加"を選択します。この際プロジェクトが対象のプロジェクト"ic-s2i"になっているか確認し、なっていなければ変更します。
add.png
このページから"Gitからのインポート"を選択します。
git.png
GitレポジトリーURLに
https://github.com/mmitsugi/ic-sample.git
を指定すると以下のようにBuilder Image(S2Iビルドのベースとなるイメージ)が自動検出されます。
git repo.png
"一般"の項目にある"アプリケーション"を"ic-sample-app"、"名前"を"ic-sample"に変更して、"作成"ボタンをクリック
general.png
すると自動的にトポロジーページに移り以下の画面が表示されます。
image.png
この"ic-sample-app"の砂時計マークがS2Iビルドがなされていることを表しており、こちらをクリックするとビルド状況が表示されます。(別途ビルドページからも参照可能です)
ビルドが完了すると以下のようにcompleteのステータスとなります。
build complete.png

AI推論アプリの実行

トポロジーページにあるアプリケーションの"URLを開く"をクリックします
topo.png
以下のようにAI推論アプリが立ち上がり、分類したい画像ファイルのアップロードで画像分類が実行できます:smiley_cat:
ai_inference.gif

OpenShift S2Iに関する補足

上記の手順にあげた通り、S2Iを使用すると以下のパイプラインタスクが自動化され、簡単にGitHub上のコードをOpenShiftにデプロイすることが可能です。

今回は初期ビルドのみを試してみましたが、GitHubにてWebHookによるトリガー設定を行うことにより、GitHubの変更をトリガーとしてイメージビルドおよびアプリケーションのデプロイを行うCI/CDを実現することも可能です。WebHook設定のURLは以下のようにOpenShift Web Console上のビルドページから"ic-sample"を確認し、同ページ内のGitHub WebHook設定内の"シークレットの使用によるURLのコピー"にて取得できます。
bc.png
webhook.png
GitHub上でのWebHookの設定などの詳細は下記のOpenShiftのマニュアルに詳細があります。
https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.9/html/cicd/triggering-builds-build-hooks#builds-using-github-webhooks_triggering-builds-build-hooks

以上、OpenShift S2Iを使用してAI推論のCI/CDを試してみました。今回はシンプルな例を試してみましたが、自動テストをビルドに組み入れるなどのカスタマイズも可能となります。また別記事にて、S2IではなくOpenShift Pipelinesを使用した例も紹介しています。より細かい制御を行いたい場合などはこちらを参照していただくのがよいかもしれません。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?