※ 本記事は、Doug Hoodによる”Getting Started with the Vector Index Service – Part 1“を翻訳したものです。

2026年7月23日


はじめに

このブログ・シリーズでは、GPUを使用して、Oracle AI Database 26aiでのベクトル索引の作成をオフロードする方法について説明します。ベクトル索引の作成は、CPUを使用したリソース集約的で時間がかかるため、このタスクをリモート・マシン上のGPUにオフロードして、Oracle AI Database 26aiのCPUリソースを解放できます。ボーナスとして、GPUでのベクトル索引の作成を大幅に高速化できます。

このシリーズには二つのブログがあります:

  • パート1では、Private AI Services Containerのインストールと構成について説明します
  • パート2では、Oracle AI Database 23.26.2でのVector Index Serviceの構成について説明します

Oracle AI Database 26aiの既存のHNSWベクトル索引は、SIMD技術を使用してすでに高度に最適化されているため、GPUのオフロードには、ベクトルをコンテナに送信して結果のグラフを返すのに要した時間を含める必要があります。Vector Index Serviceによるスピードアップは、このブログのパート3で取り上げられている多くの要因に依存します。

Private AI Services ContainerVector Index Serviceには、NVIDIA GPU (7.5以降の機能)が必要です。つまり、GeForce RTX 3060のようなローエンドゲームGPUから、NVIDIA Blackwellのようなデータ・センター・グレードのGPUまで、さまざまなGPUを使用できます。

Private AI Services Containerは、お客様のデータ・センターで実行するように設計されていますが、Linux x86-64コンテナを使用してパブリック・クラウドで実行することもできます。

コンテンツ

このブログは以下の分野をカバーしています

  • 前提条件
  • OCIでのGPUの準備
    • GPU VMの作成
    • ブート・ボリュームのサイズ変更
    • nvidia-smiユーティリティの確認
    • NVIDIA Container Toolkitのインストール
    • CDIデバイスの確認
  • OCIでのPodmanの使用
    • Podmanのインストール
    • 使用可能なコンテナ・イメージの確認
  • OCIでのPrivate AI Services Containerの使用
    • Private AI Services Containerのインストール
    • Private AI Services Containerの構成

前提条件

このブログの例では、Oracle Cloud Infrastructure (OCI)で2つの仮想マシンを使用しました:

  • Oracle AI Database 23.26.2.0.0.0用のVM
  • Private AI Services Container GPU-index-26.1.0.0.0用のGPU VM

データベースVMにはホスト名dbfreeが含まれ、GPU VMにはホスト名gpuvmが含まれます。

ディスク領域の問題を回避するために、両方のVMでブート・ボリュームが100 GBに拡張されています。Private AI Services Containerは、Oracle AI Databaseと同じマシンで実行できますが、リソース・オフロードのポイント全体は、別のマシンで実行することです。GPU駆動コンテナが別のマシンで実行されると、次の利点があります:

  • ベクトル索引作成の高速化
  • ベクトル索引作成をオフロードしたため、類似性検索レイテンシが低くなる可能性があります
  • ベクトル索引作成をオフロードしたため、CPU使用率が低下

Oracle AI Database 26ai 23.26.2およびハイエンドNVIDIA GPUのEnterprise Editionを使用できましたが、使用開始のコストを最小限に抑えるために、データベースVMにOracle AI Database 26ai Freeを使用し、Private AI Services Containerに最小限のサポートOCI GPU VM (VM.GPU.A10.1)を使用しました。GPU VMとデータベースVMの両方がOracle Linux 9.7を使用していますが、Oracle Linux 8.10を使用することはできました。

Oracle Private AI Services Containerをインストールするための詳細な前提条件は、公式ドキュメントに記載されています。

OCIでのGPUの準備

GPU VMの作成

GPU用のVMをOCI上に作成する必要があります。VMコンピュート・インスタンスを作成する場合は、「Specialty and previous generation」オプションを使用します。

VM.GPU.A10.1」オプションを選択します。これは、24 GBのVRAMと240 GBのCPUメモリを備えた単一のA10 GPUです。VM.GPU2.xおよびVM.GPU3.xコンピュート・シェイプは、Private AI Services Containerと連携するには古すぎるNVIDIA P100およびV100 GPU用です。OCIベアメタルGPUシェイプ(BM.GPU*)は、A10 GPUよりも大幅に高速ですが、1時間当たりのコストも高くなります。

VM.GPU.A10.1コンピュート・シェイプを選択すると、デフォルトのOracle Linux 9オペレーティング・システムが、NVIDIAドライバが事前インストールされたGPUイメージに自動的に更新されました。GPU用の正しいNVIDIA Linuxドライバを事前にインストールしておくと、プロセスに慣れていない場合に多くの時間を節約できます。

ディスク領域の不足に関する問題を回避するには、100GBのカスタム・ブート・ボリューム・サイズを選択します。Vector Embedding Serviceは、コンテナ内のVRAMおよびメモリーでのGPUおよびCPU処理に関するものであるため、ディスクを高速化する必要はありません。

ブート・ボリュームのサイズ変更

gpuvmが作成されたら、sshでブート・ボリュームを拡張して、割り当てられたディスク領域全体を有効にします。

sudo /usr/libexec/oci-growfs -y
df -h

/マウント・ポイントには、約63 GBの使用可能なディスク領域があります。

nvidia-smiユーティリティの確認

NVIDIAドライバが正しくインストールされている場合は、nvidia-smiユーティリティを実行すると、インストールされているGPUに基づいて出力されます。例:

nvidia-smi

この例では、CUDA 13.1をサポートするNVIDIAドライバの590.48.01リリースがインストールされています。単一のA10 GPUが使用可能であり、現在使用されていません。

nvidia-smiユーティリティから意味のある出力が得られない場合、NVIDIAドライバがインストールされていないか、正しくインストールされていません。Private AI Services ContainerのVector Index Serviceが機能するには、NVIDIAドライバを稼働させる必要があります。

NVIDIA Container Toolkitのインストール

コンテナ・ランタイムがGPUと通信できるようにするには、NVIDIA Container Toolkitが必要です。次のNVIDIA Container Toolkitから、Oracle Linux 8、9または10にNVIDIA-ctkユーティリティをインストールします。

curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
  sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.19.0-1
  sudo dnf install -y \
      nvidia-container-toolkit-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      nvidia-container-toolkit-base-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container-tools-${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
      libnvidia-container1-${NVIDIA_CONTAINER_TOOLKIT_VERSION}

これにより、nvidia-ctkユーティリティの最新バージョン(現在は1.19)がインストールされます。

次の操作を実行して、コンテナ・ツールが正しくインストールされていることを確認します。

nvidia-ctk

CDIデバイスの確認

nvidia-ctkユーティリティは、Container Device Interface (CDI)をサポートしています。CDIにより、コンテナ・ランタイムはサード・パーティ・デバイス(GPUなど)と対話できます。CDIを使用すると、使用可能なGPUのリストを提供できます。次のコマンドを使用して、nvidia-ctkユーティリティを使用して使用可能なGPUをリストします:

nvidia-ctk --debug cdi list

Private AI Services ContainerのVector Index Serviceが機能するには、出力に少なくとも1つの有効なNVIDIA GPUが必要です。

複数のGPUがリストされている場合は、containerSetup.shスクリプトの–gpuパラメータを使用して、使用するGPUを選択できます。

OCIでのPodmanの使用

Podmanのインストール

Private AI Services ContainerのVector Index Serviceは、Podmanをコンテナ・ランタイムとして使用します。podmanユーティリティは、デフォルトでインストールされていないため、Oracle Linux 8、9または10にインストールする必要があります。

sudo dnf install -y container-tools

コンテナ・イメージの確認

次に、Podmanが正しくインストールされ、イメージがロードされているかどうかを確認します:

podman version
podman images

OCIでのPrivate AI Services Containerの使用

Oracle Container Registryへのサインイン

Oracle Container RegistryのWebサイトの「Private AI Services Container」ページに移動し、サインインします。サインイン・リンクは、ページの右上にあります。

無料のOracleアカウントを取得(または作成)する必要があります。Oracle Single Sign-On (SSO)のユーザー名とパスワードの入力を求められます。container-registry.oracle.comにまだ登録されていない場合は、登録するよう求められます。登録すると、SSOユーザー名がOracle Container RegistryにSSO許可ユーザーとして関連付けられます。

このワンタイム登録を完了した後、今後の訪問で「Sign In」をクリックすると、SSOユーザー名とパスワードの入力のみが必要になります。

注意 必ずOracle Accountに独自のSSOユーザー名およびパスワードを使用してください。私のものは使用しないでください。

ライセンス契約の確認

Oracle Private AI Services Containerのライセンス契約に同意する場合は、ライセンス契約を読み、「Continue」をクリックします。ライセンスは無料で使用でき、クレジットカードは不要で、一度だけ受け付けられます。お客様の承諾は、今後のアクセスのために記憶されます。

Oracle Private AI Services Containerライセンスの開始は次のとおりです:

Oracle Private AI Services Containerライセンスの終了は次のとおりです:

ライセンスに同意すると、このステータスはOracle Container Registryの「Private AI Services Container」ページの右側に表示されます。

コンテナ・イメージをプルするための認証トークンを生成

Oracle Container Registryにログインするには、認証トークン(パスワードとして使用)が必要です。認証トークンを生成するには、ページの右上にあるOracle Accountプロファイル名をクリックし、プロファイル・メニューから「Auth Token」オプションを選択します。

「Auth Token」ページで、「Generate Secret Key」リンクをクリックします。

生成されたAuth Tokenは1回のみ表示されるため、必ずコピーしてください。

注意 古いAuth Tokenを忘れた場合は、いつでも新しいAuth Tokenを生成できます。

コンテナ・イメージのダウンロード


Private AI Services Containerイメージを仮想マシンにダウンロードします。

コマンドラインからOracle Container Registryにログインします

  • usernameは、Oracleアカウントのシングル・サインオン/プロファイル・ユーザー名になります
  • passwordは、Oracle Container RegistryのWebサイトから生成した認証トークンになります
podman login container-registry.oracle.com

OCRからイメージをプルします

コンテナ・イメージのダウンロードに必要な時間は、ネットワークの速度と仮想マシンのストレージ・パフォーマンスによって異なります。以前のリリースがVector Embedding Service用だったため、次のコンテナ・イメージを使用してください。

podman pull container-registry.oracle.com/database/private-ai:gpu-index-26.1.0.0.0

コンテナ・イメージがダウンロードされたことを確認

podman images

Private AI Services Containerの構成

Private AI Services Containerのインストール・スクリプトは、コンテナのインストールおよび構成に推奨される方法です。ベスト・プラクティスを可能にし、SELinuxに対する最小権限の有効化、デジタル証明書とAPIキーの作成、TLS 1.3の構成などの複雑なタスクを処理します。

インストール・スクリプトはコンテナ内にパッケージ化されているため、コンテナを作成し、それらのインストール・スクリプトをLinuxホスト・マシンにコピーする必要があります。

インストール・スクリプトのZIPファイルの取得

IMAGEID=`podman create container-registry.oracle.com/database/private-ai:gpu-index-26.1.0.0.0`

podman cp $IMAGEID:/privateai/scripts/privateai-setup-gpu-index-26.1.0.0.0.zip .

インストール・スクリプトのUnzip

unzip privateai-setup-gpu-index-26.1.0.0.0.zip

これで、インストール・プロセスの最も困難な部分が完了しました。提供されているスクリプトを使用した実際のインストールと構成は、はるかに簡単です。

完全修飾ホスト名の取得

export HOST=$(hostname -f); echo $HOST

このホスト名は、後でVector Index Serviceのヘルスを確認するために使用されます。

インストール用のディレクトリと環境変数を作成

mkdir -p /home/opc/privateai
mkdir -p /home/opc/secrets
export PRIVATE_DIR=/home/opc/privateai
export SECRETS_DIR=/home/opc/secrets

Private AI Services Containerソフトウェアは、$PRIVATE_DIRディレクトリにインストールされます。

secretSetup.shスクリプトの実行

cd /home/opc/setup
./secretsSetup.sh -s $SECRETS_DIR

API_KEY、自己署名デジタル証明書およびPKCS12キーストアがsecretsSetup.shスクリプトから生成されました。

ls -la $SECRETS_DIR

API_KEYの値(api-keyファイルの内容)およびデジタル証明書(cert.pemファイル)は、Private AI Services ContainerのVector Index ServiceとのOracle AI Database 26ai for SSL (TLS 1.3)通信で必要になります。

configSetup.shスクリプトを実行

./configSetup.sh -d $PRIVATE_DIR -s $SECRETS_DIR

configSetup.shスクリプトは、コンテナをインストールするためのLinuxホストを準備します。

containerSetup.shスクリプトを実行

./containerSetup.sh -d $PRIVATE_DIR

環境の準備が整ったので、コンテナを簡単に起動できます。コンテナは、SSL (TLS 1.3)を使用し、TCPポート8443でリスニングするRESTサーバーです。

コンテナが実行中かどうかを確認

podmanユーティリティを使用して、コンテナが実行中かどうかを判別できます。

podman ps

コンテナが正常かどうかを確認

Vector Index ServiceはSSLリクエストをリスニングするため、/healthエンドポイントはセキュアな通信のためにデジタル証明書を必要とします。

curl  --http2-prior-knowledge -i --cacert $SECRETS_DIR/cert.pem https://$HOST:8443/health

$HOSTおよび$SECRETS_DIR環境変数は、インストール・プロセスの一部として定義されました。前述のcurlコマンドは、Private AI Services Containerの/healthエンドポイントでHTTP/2 GETを実行しています。

コンテナは実行できますが、HTTP/2リクエストには応答しません。/healthエンドポイントを使用したこのヘルス・チェックでは、コンテナがHTTP/2 GETリクエストに応答していることが検証されました。

データベースのメタデータの取得

echo "offload_url: https://$(hostname -f):8443/v1/index"
echo "API key : $(cat $SECRETS_DIR/api-key)"
echo "certificate: $SECRETS_DIR/cert.pem"
cat $SECRETS_DIR/cert.pem

GPU VMでSSLポートを開きます

OCI上のOracle Linuxでは、firewalldをファイアウォールとして使用します。Oracle AI Databaseマシンからの通信を有効にするには、デフォルトのSSLポートを開く必要があります。

sudo firewall-cmd --permanent --add-port=8443/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports

Vector Index ServicesがPrivate AI Services Containerにインストールされたので、次のステップは、Vector Index Serviceで使用するOracle AI Database 26aiを構成することです。

関連ブログ