目的
OpenShift AIは、Openshiftを基盤にしたエンタープライズ向けAI/MLアプリ開発のためのプラットフォームである。具体的にどのようなことができるのかを知るために、Red Hatが提供するFraud Detectionのチュートリアルを使ってみたので、その結果を共有する。
使用したチュートリアルはこちら。
使用した環境
Developer Sandbox:色々なRed Hatのプロダクトを無料で使用できる
アーキテクチャ図
OpenShift AIで実現できるCI/CDプロセスの範囲
チュートリアルの進め方
プロジェクト内の各種リソース
- 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に参加しますので、帰ってきたら投稿しようと思います!
当サイトに掲載している記事は個人の見解であり、所属する組織の公式見解ではありません。