OpenShift AIのモデルレジストリ機能を使ってみた

はじめに

こんにちはサイオステクノロジーの小野です。今回はOpenShift AIのモデルレジストリ機能について解説します。この機能を利用することで、モデルの各種情報を整理することができ、管理がしやすくなります。

モデルレジストリは2025年4月4日現在テクノロジープレビューです。この機能はサポート対象外であることと、製品版では変更される可能性があることに注意してください。

モデルレジストリ

モデルレジストリはMLOpsにおける機械学習モデルの数々のメタデータを保持する機能です。この機能により、モデルのバージョン管理を行うことができるため、実験を再現したり、モデルの追跡を行ったり、簡単にモデルのデプロイを行えたりします。

以下の内容をモデルまたはそのバージョンごとに登録することが可能です

  • モデルのS3ストレージ保管場所
  • モデルソースのフォーマット
  • モデルのバージョン
  • モデルの所有者
  • 最終変更タイムスタンプ
  • 説明文
  • ラベル
  • プロパティ

モデルレジストリ構築方法

前提条件

導入Operator

  • Red Hat Authorino Operator
  • Red Hat OpenShift Serverless Operator
  • Red Hat OpenShift Servicemesh Operator
  • Red Hat OpenShift AI Operator バージョン 2.14以上

S3ストレージにモデルを保存済み

OpenShift AI構築済み

  • OpenShift AIの構築は以前の記事を参考にしてください

OpenShift AI を導入してみた

  • DataScienceClusterを作成する際に、modelregistryコンポーネントをManagedにします。

DataScienceClusterのmodelregistryコンポーネントをManagedにする

OpenShift AIの管理者権限を持つ

  • OpenShift AI Operatorインストール時に作成されるグループにOpenShift AIにログインするユーザーを追加してください。

rhods-adminsグループに管理者権限を持たせるユーザーを追加する

DB作成

モデルレジストリに登録するメタデータはDBに保存されます。そのため、最初にDBを作成します。

以下のyamlでリソースを作成してください。モデルレジストリ用のnamespaceのrhoai-model-registriesにMySQLのコンテナを作成します。MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORDの環境変数は各自設定してください。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
  namespace: rhoai-model-registries
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: mysql-config
  namespace: rhoai-model-registries
data:
  my.cnf: |
    [mysqld]
    default_authentication_plugin=mysql_native_password
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  namespace: rhoai-model-registries
spec:
  selector:
    matchLabels:
      app: mysql
  replicas: 1
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: <MySQLのルートパスワード>
        - name: MYSQL_DATABASE
          value: <MySQLのデータベース>
        - name: MYSQL_USER
          value: <MySQLのユーザー名>
        - name: MYSQL_PASSWORD
          value: <MySQLのパスワード>
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
        - name: mysql-config-volume
          mountPath: /etc/mysql/my.cnf
          subPath: my.cnf
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pvc
      - name: mysql-config-volume
        configMap:
          name: mysql-config
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
  namespace: rhoai-model-registries
spec:
  ports:
  - port: 3306
    targetPort: 3306
  selector:
    app: mysql

mysqlのリソースを作成する

mysqlというDeploymentsによりpodがrhoai-model-registries内に作成されます。

リソースを作成するとmysqlのpodが作成される

モデルレジストリ設定

DBの作成が完了したら、モデルレジストリの設定を行います。OpenShift AIに管理者権限を持っているアカウントでOpenShift AIにログインします。

Setting > Model Registry Settingsを開きます。

Setting > Model Registry Settingsを開く

Create model registryを押下すると設定画面が表示されるので以下のように設定します:

  • Name:モデルレジストリ名
  • Resource Name:モデルレジストリ名と同じ
  • Connect to external MySQL database
    • Host:mysqlのホスト名(yamlと同じ設定の場合mysql)
      • DBが rhoai-model-registries とは異なる namespace で実行されている場合は、ホスト名を <host name>.<namespace>.svc.cluster.local 形式で入力します。
    • Port:mysqlのポート番号(yamlと同じ設定の場合3306)
    • Username:MYSQL_USERに設定したユーザー名
    • Password:MYSQL_PASSWORDに設定したパスワード
    • Database:MYSQL_DATABASEに設定したデータベース名

モデルレジストリを作成する

モデルレジストリのStatusがAvailableになれば作成完了です。

StatusがAvailableになれば作成完了

モデルの登録

モデルレジストリの作成が完了すると、左のメニューのModel Registryからモデルの登録ができるようになります。

メニューのModel Registryからモデルの登録を行う

Registry modelを押下するとモデルの登録ができます。各パラメータは以下のように設定します:

  • Model details:モデル名
  • Version details:登録するモデルのバージョンとモデルの形式情報
  • Model location:モデルが保存されているS3オブジェクトストレージの接続情報

モデルの登録設定

登録が完了するとモデル名とVersionsの欄に登録したモデルのバージョンが表示されます。

登録するとモデルのバージョンが表示される

登録したバージョンを開くと登録した際に入力したメタデータが閲覧できます。

モデルのメタデータの閲覧

Description、Labels、Propertiesもここで編集できます。

Description、Labels、Propertiesも編集可能

新しいバージョンの登録

レジストリにモデルの新しいバージョンを登録するには、登録したモデルの画面からRegister new versionを押下します。

Register new versionから新しいバージョンの登録を行える

モデルの登録したときと同じように新しいバージョン名と新しいモデルのS3の接続情報を入力します。

新しいバージョンのモデル情報を登録する

入力すると、モデルの新しいバージョンの登録ができます。

新しいバージョンが追加される

モデルのデプロイ

モデルレジストリを利用することで、登録したモデルのデプロイを行うことができます。

登録したモデルのバージョンの詳細画面のActionsからDeployを選択します。

ActionsのDeployからモデルデプロイを行える

モデルをデプロイするデータサイエンスプロジェクトを選択して、デプロイ設定を行います。設定方法は以前の記事を参考にしてください。

OpenShift AIにLLMをデプロイしてみた

モデルデプロイ設定

バージョンのDeplymentsの欄にデプロイしたモデル名が表示され、Statusに✅がつけばデプロイ完了です。

Statusに✅がつけばデプロイ完了。ここからモデルAPIのエンドポイントを取得できる。

モデルのアーカイブ

モデルをアーカイブするには、バージョンの詳細画面のActionsからArchive model versionを選択します。

ActionsのArchive model versionからモデルのアーカイブができる

バージョン名を入力すればアーカイブできます。

バージョン名を入力するとモデルをアーカイブできる

アーカイブ完了

モデルの復元

アーカイブしたモデルを復元することが可能です。モデルのVersionsの三点メニューを開いて、View archived versionsを選択します。

三点メニューのView archived versionsからアーカイブしたモデルのバージョン一覧を表示できる

アーカイブしたモデルバージョンの一覧が表示されるので、復元したいバージョンのモデルを開いて、Restore model versionを選択することでモデルの復元が実行されます。

アーカイブされたモデルのバージョン一覧

アーカイブされたモデルバージョンの詳細。Restore model versionにより復元できる。

モデル復元完了

バージョン単位ではなくモデル自体のアーカイブと復元も同様に行えます。

モデル単位でのアーカイブ、復元も可能

おわりに

以上により、モデルレジストリのDB作成、モデルレジストリの登録、モデルメタデータの登録、モデルのデプロイ、モデルのアーカイブ・復元について解説しました。

MLOpsにおいてAIモデルの更新が行われるため、その管理というのは非常に重要になってきます。ぜひモデルレジストリを活用することで、モデルの管理に役立ててください。

参考

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です