はじめに
こんにちはサイオステクノロジーの小野です。今回は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の構築は以前の記事を参考にしてください
- DataScienceClusterを作成する際に、modelregistryコンポーネントをManagedにします。
OpenShift AIの管理者権限を持つ
- OpenShift AI Operatorインストール時に作成されるグループにOpenShift AIにログインするユーザーを追加してください。
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というDeploymentsによりpodがrhoai-model-registries内に作成されます。
モデルレジストリ設定
DBの作成が完了したら、モデルレジストリの設定を行います。OpenShift AIに管理者権限を持っているアカウントでOpenShift AIにログインします。
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に設定したデータベース名
- Host:mysqlのホスト名(yamlと同じ設定の場合mysql)
モデルレジストリのStatusがAvailableになれば作成完了です。
モデルの登録
モデルレジストリの作成が完了すると、左のメニューのModel Registryからモデルの登録ができるようになります。
Registry modelを押下するとモデルの登録ができます。各パラメータは以下のように設定します:
- Model details:モデル名
- Version details:登録するモデルのバージョンとモデルの形式情報
- Model location:モデルが保存されているS3オブジェクトストレージの接続情報
登録が完了するとモデル名とVersionsの欄に登録したモデルのバージョンが表示されます。
登録したバージョンを開くと登録した際に入力したメタデータが閲覧できます。
Description、Labels、Propertiesもここで編集できます。
新しいバージョンの登録
レジストリにモデルの新しいバージョンを登録するには、登録したモデルの画面からRegister new versionを押下します。
モデルの登録したときと同じように新しいバージョン名と新しいモデルのS3の接続情報を入力します。
入力すると、モデルの新しいバージョンの登録ができます。
モデルのデプロイ
モデルレジストリを利用することで、登録したモデルのデプロイを行うことができます。
登録したモデルのバージョンの詳細画面のActionsからDeployを選択します。
モデルをデプロイするデータサイエンスプロジェクトを選択して、デプロイ設定を行います。設定方法は以前の記事を参考にしてください。
バージョンのDeplymentsの欄にデプロイしたモデル名が表示され、Statusに✅がつけばデプロイ完了です。
モデルのアーカイブ
モデルをアーカイブするには、バージョンの詳細画面のActionsからArchive model versionを選択します。
バージョン名を入力すればアーカイブできます。
モデルの復元
アーカイブしたモデルを復元することが可能です。モデルのVersionsの三点メニューを開いて、View archived versionsを選択します。
アーカイブしたモデルバージョンの一覧が表示されるので、復元したいバージョンのモデルを開いて、Restore model versionを選択することでモデルの復元が実行されます。
バージョン単位ではなくモデル自体のアーカイブと復元も同様に行えます。
おわりに
以上により、モデルレジストリのDB作成、モデルレジストリの登録、モデルメタデータの登録、モデルのデプロイ、モデルのアーカイブ・復元について解説しました。
MLOpsにおいてAIモデルの更新が行われるため、その管理というのは非常に重要になってきます。ぜひモデルレジストリを活用することで、モデルの管理に役立ててください。