gn8v-tee インスタンスにヘテロジニアスコンフィデンシャルコンピューティング環境をセットアップし、サンプルコードで GPU コンフィデンシャルコンピューティングを検証します。
背景
Alibaba Cloud のヘテロジニアス コンフィデンシャル コンピューティング インスタンス (gn8v-tee) は、高信頼実行環境 (TEE) に GPU を組み込むことで、CPU TDX コンフィデンシャル コンピューティング インスタンスを拡張します。これにより、CPU と GPU 間のデータ転送と、GPU によるデータ計算が保護されます。CPU TDX コンフィデンシャル コンピューティング環境を構築し、リモートアテステーションを検証する方法については、「TDX コンフィデンシャル コンピューティング環境の構築」をご参照ください。ヘテロジニアス コンフィデンシャル コンピューティング インスタンスに計測された LLM 推論をデプロイする方法については、「コンフィデンシャルインスタンスにおける計測された LLM 推論」をご参照ください。
ヘテロジニアス コンフィデンシャル コンピューティング インスタンスの GPU は、コンフィデンシャルコンピューティングモードで起動します。次のメカニズムが機密性を確保します:
TDX により、ハイパーバイザー/ホスト OS がインスタンスの機密レジスタまたはメモリデータにアクセスできなくなります。
PCIe ファイアウォールにより、ハイパーバイザー/ホスト OS が GPU の重要なレジスタおよび保護されたビデオメモリにアクセスできなくなります。ハイパーバイザー/ホスト OS が実行できるのは GPU のリセットなどの限定的な操作のみで、機密データにはアクセスできません。
GPU の NVLink ファイアウォールは、他の GPU がそのビデオメモリに直接アクセスすることをブロックします。
初期化中に、CPU TEE 内の GPU ドライバーとライブラリ関数が、SPDM プロトコルを介して GPU との暗号化チャネルを確立します。鍵ネゴシエーション後、CPU と GPU 間で PCIe を介して送信されるのは暗号文のみです。
GPU のリモートアテステーション機能により、GPU がセキュアな状態であることを確認します。
コンフィデンシャル コンピューティング インスタンス内のアプリケーションは、アテステーション SDK を使用して GPU ドライバーを呼び出し、GPU のセキュリティステータスに関する暗号化レポートを取得できます。このレポートには、GPU ハードウェア、VBIOS、およびハードウェアステータスの計測値に関する暗号学的に署名された情報が含まれます。リライングパーティは、これらの計測値を GPU ベンダーの参照計測値と比較することで、GPU がセキュアなコンフィデンシャルコンピューティング状態にあることを検証できます。
使用上の注意
ヘテロジニアス コンフィデンシャルコンピューティングには、Alibaba Cloud Linux 3 イメージが必要です。Alibaba Cloud Linux 3 ベースのカスタムイメージを使用する場合は、カーネルバージョンが 5.10.134-18 以降であることを確認してください。
異種コンフィデンシャルコンピューティングインスタンス (gn8v-tee) の作成
コンソール
異種コンフィデンシャルコンピューティングインスタンスの作成は、スタンダードインスタンスの作成と似ていますが、特定の構成が必要です。一般的な構成については、「ウィザードを使用したインスタンスの作成」をご参照ください。
ECS コンソール - インスタンスに移動します。
上部メニューで、対象リソースのリージョンとリソースグループを選択します。
インスタンスの作成 をクリックし、次の設定でインスタンスを構成します。
設定項目
説明
リージョンとゾーン
中国 (北京) ゾーン L
インスタンスタイプ
ecs.gn8v-tee.4xlarge 以上。
イメージ
カーネルバージョンが 5.10.134-18.al8.x86_64 以降の [Alibaba Cloud Linux 3.2104 LTS 64 ビット] イメージを選択します。
パブリック IP アドレス
[パブリック IPv4 アドレスを割り当てます]。後で NVIDIA ドライバーをダウンロードする際に必要になります。
重要8 つの GPU を持つコンフィデンシャルインスタンスを作成または再起動する場合、追加のセカンダリ ENI やデータディスクをアタッチしないでください。アタッチすると、起動に失敗する可能性があります。
画面の指示に従って、インスタンスの作成を完了します。
API/CLI
RunInstances API を呼び出すか、Alibaba Cloud CLI を使用して、TDX が有効な ECS インスタンスを作成します。主なパラメーターは次のとおりです。
パラメーター | 説明 | 例 |
RegionId | 中国 (北京) | cn-beijing |
ZoneId | ゾーン L | cn-beijing-l |
InstanceType | ecs.gn8v-tee.4xlarge 以上。 | ecs.gn8v-tee.4xlarge |
ImageId | コンフィデンシャルコンピューティングをサポートするイメージの ID。カーネルバージョンが 5.10.134-18.al8.x86_64 以降の 64 ビット Alibaba Cloud Linux 3.2104 LTS イメージのみが対象です。 | aliyun_3_x64_20G_alibase_20250117.vhd |
CLI の例:
<SECURITY_GROUP_ID>:セキュリティグループ ID<VSWITCH_ID>:vSwitch ID<KEY_PAIR_NAME>:SSH キーペア名
aliyun ecs RunInstances \
--RegionId cn-beijing \
--ZoneId cn-beijing-l \
--SystemDisk.Category cloud_essd \
--ImageId 'aliyun_3_x64_20G_alibase_20250117.vhd' \
--InstanceType 'ecs.gn8v-tee.4xlarge' \
--SecurityGroupId '<SECURITY_GROUP_ID>' \
--VSwitchId '<VSWITCH_ID>' \
--KeyPairName <KEY_PAIR_NAME>ヘテロジニアス コンフィデンシャルコンピューティング環境の構築
ステップ 1:NVIDIA ドライバーと CUDA Toolkit のインストール
ヘテロジニアスコンフィデンシャルコンピューティングインスタンスは、初期化に時間がかかります。インスタンスのステータスが 実行中 になり、オペレーティングシステムが完全に起動するまでお待ちください。
インストール手順はインスタンスタイプによって異なります。
シングル GPU コンフィデンシャルインスタンス:ecs.gn8v-tee.4xlarge および ecs.gn8v-tee.6xlarge
8 GPU コンフィデンシャルインスタンス:ecs.gn8v-tee-8x.16xlarge および ecs.gn8v-tee-8x.48xlarge
シングル GPU コンフィデンシャルインスタンス
コンフィデンシャルコンピューティング インスタンスに接続します。「ワークベンチを使用した Linux インスタンスへのログオン」をご参照ください。
SWIOTLB バッファーを 8 GB に設定します。
sudo grubby --update-kernel=ALL --args="swiotlb=4194304,any"インスタンスを再起動します。「インスタンスを再起動する」をご参照ください。
NVIDIA ドライバーと CUDA Toolkit をダウンロードします。
シングル GPU コンフィデンシャルインスタンスには、ドライバーバージョン
550.144.03以降が必要です。この例では550.144.03を使用します。wget --referer=https://www.nvidia.cn/ https://cn.download.nvidia.cn/tesla/550.144.03/NVIDIA-Linux-x86_64-550.144.03.run wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run依存関係をインストールし、CloudMonitor サービスを無効化します。
sudo yum install -y openssl3 sudo systemctl disable cloudmonitor sudo systemctl stop cloudmonitornvidia-persistenced.serviceを作成して構成します。cat > nvidia-persistenced.service << EOF [Unit] Description=NVIDIA Persistence Daemon Wants=syslog.target Before=cloudmonitor.service [Service] Type=forking ExecStart=/usr/bin/nvidia-persistenced --user root ExecStartPost=/usr/bin/nvidia-smi conf-compute -srs 1 ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced [Install] WantedBy=multi-user.target EOF sudo cp nvidia-persistenced.service /usr/lib/systemd/system/nvidia-persistenced.serviceNVIDIA ドライバーと CUDA Toolkit をインストールします。
sudo bash NVIDIA-Linux-x86_64-550.144.03.run --ui=none --no-questions --accept-license --disable-nouveau --no-cc-version-check --install-libglvnd --kernel-module-build-directory=kernel-open --rebuild-initramfs sudo bash cuda_12.4.1_550.54.15_linux.run --silent --toolkitnvidia-persistenced サービスと CloudMonitor サービスを起動します。
sudo systemctl start nvidia-persistenced.service sudo systemctl enable nvidia-persistenced.service sudo systemctl start cloudmonitor sudo systemctl enable cloudmonitor
8 GPU コンフィデンシャルインスタンス
コンフィデンシャルコンピューティング インスタンスに接続します。「ワークベンチを使用した Linux インスタンスへのログオン」をご参照ください。
重要コンフィデンシャルコンピューティング インスタンスの初期化には時間がかかります。プロセスが完了するまで待機してから次に進んでください。
SWIOTLB バッファーを 8 GB に設定します。
sudo grubby --update-kernel=ALL --args="swiotlb=4194304,any"NVIDIA ドライバーの読み込み動作を構成し、initramfs を再生成します。
sudo bash -c 'cat > /etc/modprobe.d/nvidia-lkca.conf << EOF install nvidia /sbin/modprobe ecdsa_generic; /sbin/modprobe ecdh; /sbin/modprobe --ignore-install nvidia options nvidia NVreg_RegistryDwords="RmEnableProtectedPcie=0x1" EOF' sudo dracut --regenerate-all -fインスタンスを再起動します。「インスタンスを再起動する」をご参照ください。
NVIDIA ドライバーと CUDA Toolkit をダウンロードします。
8 GPU コンフィデンシャルコンピューティング インスタンスには、ドライバーバージョン
570.148.08以降と、対応するFabric Managerが必要です。この例では570.148.08を使用します。wget --referer=https://www.nvidia.cn/ https://cn.download.nvidia.cn/tesla/570.148.08/NVIDIA-Linux-x86_64-570.148.08.run wget https://developer.download.nvidia.com/compute/cuda/12.8.1/local_installers/cuda_12.8.1_570.124.06_linux.run wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel8/x86_64/nvidia-fabric-manager-570.148.08-1.x86_64.rpm依存関係をインストールし、CloudMonitor サービスを無効化します。
sudo yum install -y openssl3 sudo systemctl disable cloudmonitor sudo systemctl stop cloudmonitornvidia-persistenced.serviceを作成して構成します。cat > nvidia-persistenced.service << EOF [Unit] Description=NVIDIA Persistence Daemon Wants=syslog.target Before=cloudmonitor.service After=nvidia-fabricmanager.service [Service] Type=forking ExecStart=/usr/bin/nvidia-persistenced --user root --uvm-persistence-mode --verbose ExecStartPost=/usr/bin/nvidia-smi conf-compute -srs 1 ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced TimeoutStartSec=900 TimeoutStopSec=60 [Install] WantedBy=multi-user.target EOF sudo cp nvidia-persistenced.service /usr/lib/systemd/system/nvidia-persistenced.serviceFabric Manager、NVIDIA ドライバー、CUDA Toolkit をインストールします。
sudo rpm -ivh nvidia-fabric-manager-570.148.08-1.x86_64.rpm sudo bash NVIDIA-Linux-x86_64-570.148.08.run --ui=none --no-questions --accept-license --disable-nouveau --no-cc-version-check --install-libglvnd --kernel-module-build-directory=kernel-open --rebuild-initramfs sudo bash cuda_12.8.1_570.124.06_linux.run --silent --toolkitnvidia-fabricmanager、nvidia-persistenced、cloudmonitor の各サービスを起動して有効化します。
sudo systemctl start nvidia-fabricmanager.service sudo systemctl enable nvidia-fabricmanager.service sudo systemctl start nvidia-persistenced.service sudo systemctl enable nvidia-persistenced.service sudo systemctl start cloudmonitor sudo systemctl enable cloudmonitor
ステップ 2:TDX ステータスの確認
この機能は TDX に依存しています。TDX のステータスを確認して、インスタンスが保護されていることを検証します。
TDX が有効になっていることを確認します。
lscpu | grep -i tdx_guestコマンドの出力に
tdx_guestが含まれている場合、TDX は有効になっています。
TDX 関連のドライバーがインストールされているかを確認します。
ls -l /dev/tdx_guest次の出力は、TDX 関連のドライバーがインストールされていることを示します。

ステップ 3:GPU コンフィデンシャルコンピューティング機能のステータス確認
シングル GPU コンフィデンシャルインスタンス
コンフィデンシャルコンピューティングのステータスを確認します。
nvidia-smi conf-compute -fCC status: ON は、コンフィデンシャルコンピューティングが有効になっていることを示します。CC status: OFF は、インスタンスエラーにより機能が無効になっていることを示します。この場合は、してください。

8 GPU コンフィデンシャルインスタンス
コンフィデンシャルコンピューティングのステータスを確認します。
nvidia-smi conf-compute -mgmMulti-GPU Mode: Protected PCIe は、マルチ GPU コンフィデンシャルコンピューティングが有効になっていることを示します。Multi-GPU Mode: None は、インスタンスエラーにより機能が無効になっていることを示します。この場合は、してください。

8 GPU コンフィデンシャルインスタンスの場合、nvidia-smi conf-compute -f は通常 CC status: OFF を返します。
ステップ 4:ローカルアテステーションを使用した GPU および NVSwitch トラストの検証
シングル GPU コンフィデンシャルインスタンス
GPU トラストの依存関係をインストールします。
sudo yum install -y python3.11 python3.11-devel python3.11-pip sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 60 sudo alternatives --set python3 /usr/bin/python3.11 sudo python3 -m ensurepip --upgrade sudo python3 -m pip install --upgrade pip sudo python3 -m pip install nv_attestation_sdk==2.5.0.post6914366 nv_local_gpu_verifier==2.5.0.post6914366 nv_ppcie_verifier==1.5.0.post6914366 -f https://attest-public-cn-beijing.oss-cn-beijing.aliyuncs.com/repo/pip/attest.htmlGPU のトラストステータスを検証します。
python3 -m verifier.cc_admin --user_mode出力は、GPU がコンフィデンシャルコンピューティングモードであり、ドライバーや VBIOS などの測定値が期待値と一致していることを示します。

8 GPU コンフィデンシャルインスタンス
GPU トラストの依存関係をインストールします。
sudo yum install -y python3.11 python3.11-devel python3.11-pip sudo alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 60 sudo alternatives --set python3 /usr/bin/python3.11 sudo python3 -m ensurepip --upgrade sudo python3 -m pip install --upgrade pip sudo python3 -m pip install nv_attestation_sdk==2.5.0.post6914366 nv_local_gpu_verifier==2.5.0.post6914366 nv_ppcie_verifier==1.5.0.post6914366 -f https://attest-public-cn-beijing.oss-cn-beijing.aliyuncs.com/repo/pip/attest.htmlNVSwitch の依存関係をインストールします。
wget https://developer.download.nvidia.cn/compute/cuda/repos/rhel8/x86_64/libnvidia-nscq-570-570.148.08-1.x86_64.rpm sudo rpm -ivh libnvidia-nscq-570-570.148.08-1.x86_64.rpmGPU/NVSwitch のトラストステータスを検証します。
python3 -m ppcie.verifier.verification --gpu-attestation-mode=LOCAL --switch-attestation-mode=LOCALサンプルコードは 8 個の GPU と 4 個の NVSwitch を検証します。
SUCCESSは検証に成功したことを示します。
制限
この機能は、TDX インスタンスの制限を継承します。
GPU コンフィデンシャルコンピューティングを有効にすると、CPU と GPU 間のデータ転送に暗号化と復号が必要になるため、非コンフィデンシャルのヘテロジニアスインスタンスと比べて GPU タスクのパフォーマンスが低下します。
使用上の注意
シングル GPU インスタンスでは CUDA 12.4 を使用します。NVIDIA cuBLAS ライブラリには既知の問題があるため、CUDA または LLM タスクの実行時にエラーが発生する場合があります。この問題を解決するには、特定の cuBLAS バージョンをインストールしてください。
pip3 install nvidia-cublas-cu12==12.4.5.8GPU コンフィデンシャルコンピューティングを有効にすると、特に 8 GPU インスタンスでは初期化が遅くなります。ゲスト OS が起動した後、
nvidia-smiまたはその他のコマンドで GPU を使用する前に、nvidia-persistencedの起動が完了したことを確認してください。nvidia-persistencedサービスのステータスを確認します。systemctl status nvidia-persistenced | grep "Active: "activating (start):サービスは起動中です。Active: activating (start) since Wed 2025-02-19 10:07:54 CST; 2min 20s agoactive (running):サービスは実行中です。
Active: active (running) since Wed 2025-02-19 10:10:28 CST; 22s ago
cloudmonitor.service、nvidia-cdi-refresh.service(nvidia-container-toolkit-base 由来)、またはollama.serviceなどの GPU に依存する自動起動サービスは、nvidia-persistenced.serviceの後に起動する必要があります。/usr/lib/systemd/system/nvidia-persistenced.serviceの設定例:[Unit] Description=NVIDIA Persistence Daemon Wants=syslog.target Before=cloudmonitor.service nvidia-cdi-refresh.service ollama.service After=nvidia-fabricmanager.service [Service] Type=forking ExecStart=/usr/bin/nvidia-persistenced --user root --uvm-persistence-mode --verbose ExecStartPost=/usr/bin/nvidia-smi conf-compute -srs 1 ExecStopPost=/bin/rm -rf /var/run/nvidia-persistenced TimeoutStartSec=900 TimeoutStopSec=60 [Install] WantedBy=multi-user.target