2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenShift AIで実現できるCI/CDプロセス

Last updated at Posted at 2025-04-06

目的

OpenShift AIは、Openshiftを基盤にしたエンタープライズ向けAI/MLアプリ開発のためのプラットフォームである。具体的にどのようなことができるのかを知るために、Red Hatが提供するFraud Detectionのチュートリアルを使ってみたので、その結果を共有する。
使用したチュートリアルはこちら。

使用した環境

Developer Sandbox:色々なRed Hatのプロダクトを無料で使用できる

アーキテクチャ図

OpenShiftAIFraudDetection.drawio.png
こちらの資料を参考に作成しました。

OpenShift AIで実現できるCI/CDプロセスの範囲

OpenShiftAIFraudDetection-Processes.drawio.png
こちらの資料を参考に作成しました。

チュートリアルの進め方

プロジェクト内の各種リソース

  • Workbenches
    開発環境および実験環境のインスタンスです。通常、これらには、JupyterLabなどの IDE が含まれています。
  • Pipelines
    プロジェクト内で実行されるデータサイエンスパイプラインが含まれています。
  • Models
    リアルタイム推論用にトレーニング済みモデルを迅速に提供できます。データサイエンスプロジェクトごとに複数のモデルサーバーを使用できます。1 つのモデルサーバーで複数のモデルをホストできます。
  • Clustre Storage
    ワークベンチ内で作業中のファイルとデータを保持する永続ボリュームです。ワークベンチは 1 つ以上のクラスターストレージインスタンスにアクセスできます。
  • Connections
    S3 オブジェクトバケットなどのデータソースに接続するために必要な設定パラメーターが含まれています。

各種リソースの説明については、以下の記事から引用しました。

1. S3 object storageとConnectionsの作成

2つのS3バケットとConnecdtionsをOpenShift Consoleから作成できます。

oc apply -n <your-project-name/> -f https://github.com/rh-aiservices-bu/fraud-detection/raw/main/setup/setup-s3.yaml
  • My Storage
    このバケットをモデルとデータの保存に使用します。このバケットとその接続をノートブックおよびモデルサーバーに再利用できます。
  • Pipelines Artifacts
    このバケットをパイプラインアーティファクトのストレージとして使用します。パイプラインサーバーを作成する場合は、パイプラインアーティファクトバケットが必要です。このチュートリアルでは、わかりやすくするために、このバケットを最初のストレージバケットから分離して作成します。

各種リソースの説明については、以下の記事から引用しました。

Troubleshooting/Tips

  • 既にあるリソースは作成されずにエラーとなるため、oc apply commandを複数回実行できる。

2. Pipeline Serverの設定

Elyra を使用した、OpenShift AI で実行できる視覚的なエンドツーエンドのパイプラインワークフローを作成するために、Pipeline Serverの設定を行います。

Troubleshooting/Tips

  • Pineline Serverの設定がエラーとなった場合、チュートリアルにある通り設定を削除する。それをやって再設定してもエラーになる場合、これまでに作成したすべてのリソースを削除して最初からやり直す。私は必ずそうする必要がありました。

3. Workbenchの作成

ワークベンチは、開発および実験環境のインスタンスです。ワークベンチを作成するときは、モデルの開発に必要なツールとライブラリーで最適化されたワークベンチイメージ (ノートブックイメージと呼ばれることもあります) を選択します。こちらのページを参照しながら作成できます。
チュートリアルで使用するJupyterLabのソースコードを、以下のPathからImportする。Current Branchをv2.18にすること。

https://github.com/rh-aiservices-bu/fraud-detection.git

Troubleshooting/Tips

  • Sandboxの場合は、何回もWorkbenchを作成するとCPU等のリソース不足でエラーとなった。その場合は30日間の無料期間が過ぎてプロジェクトごと削除されるのを待って再度やるしかなかった。

4. パイプラインによるワークフローの自動化

JupyterNoteBookを利用したModelのビルド、トレーニング、保存、デプロイメントのフローをElysaを利用して自動化できます。

Troubleshooting/Tips

実行するとエラーとなってしまう。

Could not find a version that satisfies the requirement onnxruntime==1.20.1 (from versions: 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.12.0, 1.12.1, 1.13.1, 1.14.0, 1.14.1, 1.15.0, 1.15.1, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.17.0, 1.17.1, 1.17.3, 1.18.0, 1.18.1, 1.19.0, 1.19.2)

JupyterLabのTerminalからonnx versionを見ると1.17.0であり、公式サイトによると1.16.1は1.20.0のRuntimeをサポートしているので、問題なさそうであるが。。解決できず。。

(app-root) pip list | grep 'onnx'
onnx                         1.17.0
onnxconverter-common         1.13.0
skl2onnx                     1.17.0
tf2onnx                      1.16.1

5. パイプラインのIaC化

こちらの資料に沿って、パイプラインをIaC化できる。

Troubleshooting/Tips

手順に沿ってやってみたが、2つ目のタスクである"train-model"でエラーになった。パイプラインによるワークフローの自動化で起きたエラーと同じである。

ERROR: Could not find a version that satisfies the requirement onnxruntime==1.20.1 (from versions: 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.12.0, 1.12.1, 1.13.1, 1.14.0, 1.14.1, 1.15.0, 1.15.1, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.17.0, 1.17.1, 1.17.3, 1.18.0, 1.18.1, 1.19.0, 1.19.2)
ERROR: No matching distribution found for onnxruntime==1.20.1

6. モデルのトレーニングを複数の CPU に分散する

ここは具体的なユースケースが出てきた時に、テストしてみる。

参考文献

参考にした記事のリンクを、全て記事内に添付しました。
BostonのRed Hat Summit 2025に参加しますので、帰ってきたら投稿しようと思います!

当サイトに掲載している記事は個人の見解であり、所属する組織の公式見解ではありません。

2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?