OpenShift Data Scienceを使ってみよう - その1

こんにちは、Red Hatでソリューションアーキテクトをしている石川です。

昨年末にManaged版のRed Hat OpenShift Data Science(RHODS)のGAが発表されました。
このManaged版のRHODSはAWSで利用可能なManaged OpenShiftであるROSAや、OpenShift Dedicatedにアドオンとしてインストールできるサービスとなっています。 ただし、現在(2023年2月)日本ではAWS Marketplace上でRHODSの購入がサポートされておらず使いたいけど使えないという状態となってしまっていました。

しかしながら実は先月にRHODSのもう一つの提供オプションであるSelf-managed版がGAとなりました。 提供される機能としてはManaged版と同じものが利用可能1ですが、インストール先としてオンプレミスを含めた様々な環境のOpenShiftが選択できる利用オプションとなっています。

今回はこのSelf-managed版のRHODSをOpenShiftにインストールし各種機能の概要を紹介していきたいと思います。

RHODSのインストール

Self-managed版のRHODSは通常のOperatorと同様にOpenShiftのOperatorHubからインストールすることができます。 管理者画面からOperatorHubを開き、data scienceなどで検索すると見つけることができます。

タイルを開くとインストール画面へ。

インストールを開始すると、RHODSのOperator自体はすぐにデプロイされますが、 RHODSのメインダッシュボードが利用可能になるまで少し時間がかかるためしばらく待機しましょう。(大体15分から20分くらいかかります)

RHODSダッシュボードへのアクセス

RHODSのアプリケーションはredhat-ods-applicationsというProjectにデプロイされます。 まずはデプロイされたPodが正常に稼働しているか見てみましょう。

# oc get pod -n redhat-ods-applications
---
NAME                                              READY   STATUS    RESTARTS   AGE
etcd-58c5d57cc9-dg6mg                             1/1     Running   0          122m
modelmesh-controller-58b5d7c5b8-bqxt6             1/1     Running   0          122m
modelmesh-controller-58b5d7c5b8-gbds8             1/1     Running   0          122m
modelmesh-controller-58b5d7c5b8-s6jks             1/1     Running   0          122m
notebook-controller-deployment-6fd6b67b4b-k6lx4   1/1     Running   0          121m
odh-model-controller-6cb4cb8544-7pz6t             1/1     Running   0          122m
odh-model-controller-6cb4cb8544-g9f4d             1/1     Running   0          122m
odh-model-controller-6cb4cb8544-q9hms             1/1     Running   0          122m
odh-notebook-controller-manager-8d5986c9f-f6tfw   1/1     Running   0          121m
rhods-dashboard-74f8bcb97c-59h99                  2/2     Running   0          122m
rhods-dashboard-74f8bcb97c-hrm6r                  2/2     Running   0          122m
rhods-dashboard-74f8bcb97c-lgfpd                  2/2     Running   0          122m
rhods-dashboard-74f8bcb97c-tswmv                  2/2     Running   0          122m
rhods-dashboard-74f8bcb97c-xt8s8                  2/2     Running   0          122m

ダッシュボードや各種のコントローラーがPodとしてデプロイされています。 ダッシュボードにはOCPコンソール右上の四角9つのアイコン2からアクセスすることができます。

アクセスすると認証が求められるので自分のユーザーでログインしましょう。
これで無事RHODSのダッシュボードにアクセスできました。

Jupyter Notebookの起動

ダッシュボードの初期画面でJupyterのタイルをクリックするとJupyter Notebookの起動画面に移ります。

RHODSではデフォルトで5つのコンテナイメージを提供しています。 これらはRHODSのサービスの一部としてRed Hatが管理し、ライブラリのアップデート等を提供するコンテナイメージとなっています。
・Minimal Python
・Standard Data Science
・CUDA
・PyTorch
・TensorFlow

それぞれのイメージにどんなライブラリのどのバージョンが含まれているかを確認するにはイメージ名横の?マークをクリックすると表示されます。

また以下のドキュメントでもライブラリの情報がまとまっているためご参照下さい。 access.redhat.com

こうしたデフォルトイメージが利用可能な一方で、実際の機械学習プロジェクトに取り組む場合、追加のライブラリを利用したいというニーズがあるかと思います。 その場合はRHODSにカスタムイメージを追加することでデフォルトのイメージと同様に利用することができます。 カスタムイメージの追加に関しては次回のブログで書きたいと思います。

今回はStandard Data Scienceのイメージを起動してみたいと思います。 Start serverをクリックし1、2分程度でJupyter Notebookの環境が立ち上がります。(イメージをPullするため初回は少し時間がかかります。)


初期状態ではディレクトリが一つあるだけですが、 画面左のGitアイコンからGitリポジトリをクローンし作業することができます。 また各NotebookのPodにはデフォルトで20GBのボリュームがアタッチされており、そちらに作業内容が保存されます。
そのため一度コンテナを停止し、利用するコンテナイメージを変更して再度立ち上げたとしても過去の作業内容が失われず作業を継続することができます。

Data Science Project

一度RHODSのダッシュボードに戻り、今度はData Science Projectsというメニューを見ていきましょう。
先ほどNotebookを立ち上げた際はrhods-notebooksというRHODSインストール時に作成されたProjectの中でNotebookのPodが起動していました。 RHODSの画面からData Science Projectを作成すると新たに専用のProjectがOpenShiftクラスタ内に作成され、その中で各種Podが起動する形となります。 今回はakabou engineering blogというData Science Projectを作成しました。

画面を開くと4つの項目が表示されます。
・Workbenches
・Cluster storage
・Data connections
・Models and model servers

それぞれどういったものか確認をしていきましょう。

Workbenches

Workbenchesでは1つのProject内で複数Notebookの作成を行うことができます。 先ほどもRHODSダッシュボードからNotebookの起動を行いましたが、実はあちらのパターンでは一人のユーザーに対して同時に複数のNotebookイメージを起動できないという制限がありました。

Data Science Projectを作成しWorkbenchesからNotebookを作成することで、一人のユーザーが異なるライブラリを含む複数のイメージを使用してコンテナ環境を同時に持つことが可能となります。

また現在はこのData Science Projectは個々のユーザーごと作成するようになっていますが、今後複数人で一つのData Science Projectを共有し、その中で共同作業できるよう機能のエンハンスが計画されています。3

Cluster storage

Cluster storageでは当該のData Science Projectで利用するPersistenVolumeを管理します。 WorkbenchesからNotebookを作成する際に新たなストレージを作成することができましたが、こちらの項目から個別にストレージだけを作成することも可能となっています。


作成したストレージはNotebookにアタッチして利用することができます。

Data connections

Clsuter storageはNotebook Podに直接アタッチするいわゆるブロックストレージを管理するものでしたが、Data connectionsではAWS S3などのオブジェクトストレージへの接続情報を管理します。 機械学習を行う際に、入力データをオブジェクトストレージから取得したり、学習済みモデルをオブジェクトストレージに保存し管理するということはよく行われているかと思います。

一方でオブジェクトストレージ上のデータの入出力に必要な秘密情報(Secret Access Keyなど)を直接コードに記載することはセキュリティ上の懸念となります。 Data connectionsでは特定のオブジェクトストレージへのアクセス情報を設定し、それをアクセスを実施したいWorkbenchに渡すことで安全なデータアクセスを可能とします。[^4]
AWS S3だけでなく、OpenShift Data Foundationなども利用することができ、オンプレミス環境でも同様のデータアクセスが可能となります。

Models and model servers

Models and model serversではNotebook上で学習させた機械学習モデルをAPIとして公開することが可能となります。こちらの機能は2023年2月現在Field Trialとして提供されています。4
RHODSのモデルサービングに関する機能はOSSコミュニティで開発が進められているKServeがベースとなっています。

学習済みモデルをデプロイする際は、まずモデルのデプロイ先となるサーバーを作成します。こちらはKServeにおけるServingRuntimeと呼ばれるカスタムリソースです。
サービング用のPodのサイズやレプリカ数、外部公開するか、認証の有無について設定していきます。

デプロイ先のサーバーを作成したら、そこへ学習済みモデルをデプロイしていきます。 RHODSのモデルサービングでは一つのServingRuntimeに複数の異なる学習済みモデルをデプロイするModelMeshと呼ばれるデプロイ方法を提供しています。ModelMeshについて詳しくはこちらをご参照下さい。

現在RHODSのModelMeshでデプロイ可能なモデル形式には制限があり、ONNXとOpenVINO形式のみが対象となっています。5
そのため学習したモデルをオブジェクトストレージに保存する前に各種ライブラリ(tf2onnx、sklearn-onnx、等)を使用してモデル形式を変換しておきます。


オブジェクトストレージに保存されたモデルがあるディレクトリへのパスを指定しデプロイを行います。Data connectionを既に作成している場合、その認証情報を使ってモデルを取得することができます。


デプロイが完了すると推論エンドポイントとなるURLが表示されます。 あとはこのモデルを利用したいアプリケーションからこちらのURLに対してリクエストを投げることで入力データに応じた推論結果を得ることができます。

まとめ

今回はRHODSについてご紹介しました。 RHODSはコンテナとして機械学習の開発・推論環境を提供するほか、今後のロードマップではKubeflow Pipelinesを利用したパイプライン機能の提供なども計画されており、機械学習のプラットフォームとしてより機能を拡充していく予定です。ご興味ありましたら是非お気軽にレッドハットまでお問い合わせ下さい。

またRed Hatの開発者向けサイトでは一部機能を無償で体験することもできます。こちらも合わせて見てみて下さい。 developers.redhat.com


  1. 厳密にはManaged版の方が新バージョンの提供が早いらしいですが、ほぼ同じです。
  2. このアイコンのことをBento menuと呼ぶらしいです。
  3. 将来的な機能提供を保証する内容ではありません。
  4. 詳しくはRHODSのサービス定義(英語)をご確認下さい。https://access.redhat.com/support/policy/updates/rhods/service
  5. 今後の機能エンハンスでより多くのモデル形式に対応の予定です。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。