OCI 準拠のモデルコンテナーの推論サービング言語モデル
Red Hat AI Inference Server における OCI 準拠モデルの推論
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AI Inference Server で OCI 準拠モデルの推論を実行できます。言語モデルの S3 または URI ベースのストレージの代替手段として、OCI 準拠のモデルコンテナー (modelcars) にモデルを保存します。
modelcar コンテナーを使用すると、繰り返しダウンロードを回避することで起動時間が短縮され、ディスク使用量が削減され、事前に取得したイメージを使用することでパフォーマンスが向上します。クラスター内の modelcar に言語モデルをデプロイする前に、モデルを OCI コンテナーイメージにパッケージ化し、そのコンテナーイメージをクラスターにデプロイする必要があります。
第1章 modelcar イメージを作成し、コンテナーイメージレジストリーにプッシュする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AI Inference Server でデプロイできる言語モデルを含む modelcar イメージを作成できます。
modelcar イメージを作成するには、Hugging Face からモデルをダウンロードしてコンテナーイメージにパッケージ化して、modelcar コンテナーをイメージレジストリーにプッシュします。
前提条件
- Python 3.11 以降がインストールされている。
- Podman または Docker がインストールされている。
- Hugging Face からモデルをダウンロードするには、インターネットにアクセスできる。
- イメージをプッシュできるコンテナーイメージレジストリーを設定してログインした。
手順
Python 仮想環境を作成し、
huggingface_hubPython ライブラリーをインストールします。python3 -m venv venv && \ source venv/bin/activate && \ pip install --upgrade pip && \ pip install huggingface_hub
python3 -m venv venv && \ source venv/bin/activate && \ pip install --upgrade pip && \ pip install huggingface_hubCopy to Clipboard Copied! Toggle word wrap Toggle overflow モデルダウンローダーの Python スクリプトを作成します。
vi download_model.py
vi download_model.pyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて
model_repoの値を調整し、download_model.pyファイルに次のコンテンツを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow modelcar 用の
Dockerfileを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow modelcar イメージをビルドします。
podman build . -t modelcar-example:latest --platform linux/amd64
podman build . -t modelcar-example:latest --platform linux/amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Successfully tagged localhost/modelcar-example:latest
Successfully tagged localhost/modelcar-example:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow modelcar イメージをコンテナーレジストリーにプッシュします。以下に例を示します。
podman push modelcar-example:latest quay.io/<your_model_registry>/modelcar-example:latest
$ podman push modelcar-example:latest quay.io/<your_model_registry>/modelcar-example:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Getting image source signatures Copying blob b2ed7134f853 done Copying config 4afd393610 done Writing manifest to image destination Storing signatures
Getting image source signatures Copying blob b2ed7134f853 done Copying config 4afd393610 done Writing manifest to image destination Storing signaturesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第2章 OpenShift Container Platform の AI Inference Server を使用した推論サービング modelcar イメージ リンクのコピーリンクがクリップボードにコピーされました!
シークレット、永続ストレージ、および Red Hat AI Inference Server を使用して modelcar コンテナーイメージを推論するデプロイメントカスタムリソース (CR) を設定して、OpenShift Container Platform を使用して modelcar コンテナーに言語モデルをデプロイします。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。 - 基盤となる AI アクセラレーターハードウェアに NFD と必要な GPU Operator がインストールされている。
- 言語モデル用の modelcar コンテナーイメージを作成し、コンテナーイメージレジストリーにプッシュした。
手順
Red Hat AI Inference Server イメージをデプロイした場所と一致するようにクラスター namespace を設定します。以下に例を示します。
NAMESPACE=rhaiis-namespace
$ NAMESPACE=rhaiis-namespaceCopy to Clipboard Copied! Toggle word wrap Toggle overflow PersistentVolumeClaim(PVC) カスタムリソース (CR) を作成し、クラスターに適用します。次のPVCCR の例では、デフォルトの IBM VPC ブロック永続ボリュームを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記要件を満たすようにクラスターストレージを設定することは、この手順の範囲外です。詳細は、永続ストレージの設定 を参照してください。
modelcar イメージをプルし、Red Hat AI Inference Server コンテナーをデプロイする
Deploymentカスタムリソース (CR) を作成します。AI Inference Server を使用して modelcar イメージをサービングする次のDeploymentCR 例を参照してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.template.spec.volumes.persistentVolumeClaim.claimNameは、作成したPVCの名前と一致する必要があります。- 2
- このサンプルデプロイメントでは、メインのアプリケーションコンテナーの前に実行され、必要な modelcar イメージをダウンロードする単純な
initContainers設定を使用します。たとえば、以前のデプロイメントからモデルディレクトリーがすでに設定されている場合は、モデルプルのステップはスキップされます。 - 3
- 推論する modelcar イメージのイメージレジストリー URL。
- 4
- デプロイするモデルに合わせて
--served-model-nameの値を更新します。 - 5
- NVIDIA Collective Communications Library (NCCL) では、
/dev/shmボリュームマウントが必要です。/dev/shmボリュームマウントが設定されていない場合、Tensor 並列 vLLM デプロイメントは失敗します。デプロイメントのレプリカ数を必要な数まで増やします。たとえば、以下のコマンドを実行します。
oc scale deployment granite -n rhaiis-namespace --replicas=1
oc scale deployment granite -n rhaiis-namespace --replicas=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: デプロイメントを監視し、成功したことを確認します。
oc get deployment -n rhaiis-namespace --watch
$ oc get deployment -n rhaiis-namespace --watchCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY UP-TO-DATE AVAILABLE AGE rhaiis-oci-deploy 0/1 1 0 2s rhaiis-oci-deploy 1/1 1 1 14s
NAME READY UP-TO-DATE AVAILABLE AGE rhaiis-oci-deploy 0/1 1 0 2s rhaiis-oci-deploy 1/1 1 1 14sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
モデル推論用の
ServiceCR を作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: モデルへのパブリックアクセスを有効にするには、
RouteCR を作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 公開されたルートの URL を取得します。以下のコマンドを実行します。
oc get route granite -n rhaiis-namespace -o jsonpath='{.spec.host}'$ oc get route granite -n rhaiis-namespace -o jsonpath='{.spec.host}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
rhaiis-oci-deploy-rhaiis-namespace.apps.example.com
rhaiis-oci-deploy-rhaiis-namespace.apps.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
モデルをクエリーして、デプロイメントが成功したことを確認します。以下のコマンドを実行します。
curl -v -k http://rhaiis-oci-deploy-rhaiis-namespace.apps.modelsibm.ibmmodel.rh-ods.com/v1/chat/completions -H "Content-Type: application/json" -d '{
"model":"ibm-granite/granite-3.1-2b-instruct",
"messages":[{"role":"user","content":"Hello?"}],
"temperature":0.1
}'| jq
curl -v -k http://rhaiis-oci-deploy-rhaiis-namespace.apps.modelsibm.ibmmodel.rh-ods.com/v1/chat/completions -H "Content-Type: application/json" -d '{
"model":"ibm-granite/granite-3.1-2b-instruct",
"messages":[{"role":"user","content":"Hello?"}],
"temperature":0.1
}'| jq
出力例