
こんにちは。SB C&S の村上です。
この記事ではNVIDIA社が提供しているNeMo Evaluatorの展開の流れを紹介します。
以下NeMo Evaluatorの紹介の記事をお読みでない方は、ぜひ先にそちらを閲覧ください。
NVIDIA NeMo Evaluatorの紹介
環境準備
本記事で紹介する展開方法では、環境の前提として以下4つの準備が必要です。
- Kubernetes Cluster (GPU無し)
- 作業用Linux (kubectlとhelmをインストール済み)
- Postgre SQL サーバー
- 評価対象とするLLMエンドポイント
Kubernetes Cluster
まずKubernetes Clusterは、NeMo Evaluatorのコンポーネント群の展開先となります。
NeMo EvaluatorはNeMo Microservicesと呼ばれるAI向けマイクロサービス群の一部として提供されています。
NeMo Microservicesは利用したい機能に応じて必要なマイクロサービスが自動で展開されるようになっており、NeMo Evaluatorを利用する場合は以下3つが自動で展開されます。
- NeMo Evaluator
- NeMo Evaluatorの本体
- NeMo Data Store
- 評価用のデータセットや評価の結果などの保存を実施
- NeMo Entity Store
- 登録済みの評価対象やデータセットなどのメタデータ管理
Kubernetes Clusterで必要なリソース要件は以下メーカードキュメントをご確認ください。
https://docs.nvidia.com/nemo/microservices/latest/requirements.html#nemo-evaluator
作業用Linux
作業用LinuxはNeMo Evaluator展開の操作用です。必要な最低限の準備としては、kubectlで前述のKubernetes Clusterへ接続できることと、Helmがインストール済みで実行可能なことです。
※NeMo MicroservicesはEvaluatorに限らずHelmと呼ばれるKubernetesのパッケージマネージャーを用いてインストールします
PostgreSQLサーバー
PostgreSQLサーバーは前述のNeMo Evaluatorの各コンポーネントのデータの保存先として利用されます。名称は任意ですが最低限3つDBを作成しておく必要があります。
本記事では以下3つのDBを作成済みとして進めます。
- nemo-ev
- nemo-data
- nemo-entity
LLMエンドポイント
LLMエンドポイントは、評価対象としたいLLMの推論サーバーのURLです。
本記事ではNVIDIA NIMでGPT OSS 20BとGPT OSS 120Bの2つを事前に展開済みです。
NVIDIA NIMについては以下記事をご参照ください。
NVIDIA NIMを用いた推論サーバーの展開
展開の実行
それでは展開を進めていきます。
まずKubernetes上に展開先の名前空間を作成します。
本記事ではnemo-evという名称で作成します。
kubectl create namespace nemo-ev
続いて、必要な認証情報として以下2つの環境変数を設定します。
- NGC_API_KEY
- POSTGRES_PASS
NGCのAPIキーはNVIDIAのNGCのサイトから発行可能です
https://org.ngc.nvidia.com/setup/api-keys
また、利用するPostgreSQLのユーザーの認証情報も必要となります。権限としては対象の3つのDBに対してのテーブルやインデックスの作成ができる状態であれば問題ないです。
export NGC_API_KEY={NGCのAPIキー}
export POSTGRES_PASS={PostgreSQLのユーザーパスワード}
続いて先ほど用意した環境変数を用いて、以下コマンドでKubernetes上のコンテナが認証情報を扱えるようにSecretの作成を行います。
# NGC API KeyのSecret
kubectl create secret -n nemo-ev docker-registry nvcrimagepullsecret \
--docker-server=nvcr.io \
--docker-username='$oauthtoken' \
--docker-password=$NGC_API_KEY
# PostfreSQLのSecret
kubectl create secret -n nemo-ev generic nemo-ext-pg \
--from-literal=password=$POSTGRES_PASS
続いて、HelmのリポジトリにNeMo Microservicesの登録を行います。ここで用いられる認証情報はNGCのものとなるため、パスワードはNGCのAPIキーを環境変数から利用します。
※usernameは、$oauthtokenで固定となります
helm repo add nmp https://helm.ngc.nvidia.com/nvidia/nemo-microservices \
--username='$oauthtoken' \
--password=$NGC_API_KEY
helm repo update
続いて、インストール用のvalueファイルを作成します。
Helmではvalueというyaml形式のファイル内のパラメータに準拠して各コンポーネントの設定や展開が行われます。固有の設定を入れ込む場合は、helm installコマンドの「-f」オプションでこのファイルを指定する必要があります。
本記事では以下のような構成で、values-evaluator.yamlという名称でファイルを作成して進めます。
※PostgreSQLの情報やNeMo Evaluatorに絞って展開するといった情報を指定しています。
※PostgreSQLのIPアドレスやポート番号、ユーザー名は環境に合わせて記載
なお、注意点としてEvaluatorには外部からのアクセスが必要となります。本記事上ではServiceのタイプをLoadBalancerにしていますがIngressなどをお使いの場合はLoadBalancerの記載は不要となります。
existingSecret: ngc-api
existingImagePullSecret: nvcrimagepullsecret
tags:
platform: false
evaluator: true
evaluator:
postgresql:
enabled: false
externalDatabase:
host: "{PostgreSQLのIPアドレス}"
port: "{PostgreSQLのポート番号}"
user: "{PostgreSQLのユーザー名}"
database: "nemo-ev"
sslMode: "disable"
existingSecret: "nemo-ext-pg"
existingSecretPasswordKey: "password"
service:
type: LoadBalancer
data-store:
postgresql:
enabled: false
externalDatabase:
host: "{PostgreSQLのIPアドレス}"
port: "{PostgreSQLのポート番号}"
user: "{PostgreSQLのユーザー名}"
database: "nemo-data"
sslMode: "disable"
existingSecret: "nemo-ext-pg"
existingSecretPasswordKey: "password"
entity-store:
postgresql:
enabled: false
externalDatabase:
host: "{PostgreSQLのIPアドレス}"
port: "{PostgreSQLのポート番号}"
user: "{PostgreSQLのユーザー名}"
database: "nemo-entity"
sslMode: "disable"
existingSecret: "nemo-ext-pg"
existingSecretPasswordKey: "password"
これにて展開の準備は完了です。 最後に以下コマンドを実行して展開を実施します。 ※versionのパラメータは利用したいNeMo Microservicesのバージョンとなり、本手順では25.10.0を利用しています
helm install evaluator nmp/nemo-microservices-helm-chart \
--version 25.10.0 \
-f values-evaluator.yaml \
-n nemo-ev
実行が完了したら、以下コマンドで無事にPodが展開されていることが確認できれば完了です。
kubectl get pods -n nemo-ev
NAME READY STATUS
evaluator-7f56b59bc7-nlgsw 2/2 Running
evaluator-core-api-7df789b548-gd59c 1/1 Running
evaluator-core-controller-79579c596f-rksnx 1/1 Running
evaluator-core-jobs-logcollector-75c96b5cd9-x29lr 1/1 Running
evaluator-data-store-69964469c6-mqmm2 1/1 Running
evaluator-entity-store-6b7b48cf8f-wncch 1/1 Running
evaluator-jobsdb-0 1/1 Running
以上がNeMo Evaluatorの展開の流れとなります。
まとめ
本記事ではNeMo Evaluatorの展開の流れを紹介しました。 必要な準備物が多く、Kubernetesが出てくる関係上、見慣れないコマンドも多々あったかと思います。ただし事前の環境準備さえしてあれば手順としては少なく、スムーズに展開できます。 次回は展開した後のお話として、NeMo Evaluatorを用いてサンプルでベンチマークを試しに実行する記事を紹介します。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
ICT事業本部 技術本部 技術統括部
第2技術部 1課
村上 正弥 - Seiya.Murakami -
VMware vExpert
