本ガイドでは、Alibaba Cloud の異種混在型機密コンピューティングインスタンス(gn8v-tee)上に異種混在型機密コンピューティング環境を構築する方法について説明します。また、GPU 機密コンピューティング機能の動作確認のためのサンプルコード実行手順も示します。
背景情報
Alibaba Cloud ヘテロジニアスコンフィデンシャルコンピューティングインスタンス (gn8v-tee) は、GPU を高信頼実行環境 (TEE) に組み込むことで、CPU TDX コンフィデンシャルコンピューティングインスタンスを拡張します。これにより、CPU と GPU 間のデータ転送、および GPU 内でのデータ計算が保護されます。CPU TDX コンフィデンシャルコンピューティング環境の構築と、そのリモートアテステーション機能の検証については、「TDX コンフィデンシャルコンピューティング環境を構築する」をご参照ください。ヘテロジニアスコンフィデンシャルコンピューティングインスタンスに大規模言語モデル (LLM) 推論環境をデプロイするには、「ヘテロジニアスコンフィデンシャルコンピューティングインスタンスで計測が有効な LLM 推論環境を構築する」をご参照ください。
上図より、異種混在型機密コンピューティングインスタンス上の GPU は機密コンピューティングモードで起動することがわかります。以下のメカニズムにより、インスタンスの機密性が確保されます。
TDX 機能により、ハイパーバイザー/ホスト OS がインスタンスの機密レジスタやメモリデータにアクセスできなくなります。
PCIe ファイアウォールにより、CPU が GPU の重要レジスタおよび保護されたビデオメモリにアクセスできなくなります。ハイパーバイザー/ホスト OS は GPU に対してリセットなどの限定的な操作のみ実行可能であり、機密データへのアクセスは許可されないため、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 以上のみがサポートされています。
イメージ
Alibaba Cloud Linux 3.2104 LTS 64 ビット イメージを選択します。
パブリック IP アドレス
[パブリック IPv4 アドレスの割り当て] を選択します。これにより、後続で NVIDIA 公式 Web サイトからドライバーをダウンロードできるようになります。
重要8 GPU を搭載した機密インスタンスを作成または再起動する際は、追加のセカンダリ Elastic Network Interface(ENI)またはデータディスクを追加しないでください。これにより、インスタンスの起動に失敗する可能性があります。
画面の指示に従って、インスタンス作成を完了します。
API/CLI
「RunInstances」操作を呼び出すか、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 機密インスタンス
機密コンピューティングインスタンスに接続します。
詳細については、「Workbench を使用した 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 機密インスタンス
機密コンピューティングインスタンスに接続します。
詳細については、「Workbench を使用した 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 が有効化されていることを示します。
TDX 関連ドライバーのインストール状況を確認します。
ls -l /dev/tdx_guest以下の図は、TDX 関連ドライバーがインストールされていることを示します。

ステップ 3:GPU 機密コンピューティング機能のステータス確認
シングル GPU 機密インスタンス
機密コンピューティング機能のステータスを表示します。
nvidia-smi conf-compute -fCC ステータス:ON は、機密コンピューティング機能が有効化されていることを示します。CC ステータス:OFF は、インスタンスエラーにより機能が無効化されていることを示します。このような場合、[チケットを送信] してください。

8 GPU 機密インスタンス
機密コンピューティング属性のステータスを表示します。
nvidia-smi conf-compute -mgmマルチ GPU モード:Protected PCIe は、マルチ GPU 機密コンピューティング機能が有効化されていることを示します。マルチ GPU モード:None は、インスタンスエラーにより機能が無効化されていることを示します。このような場合、[チケットを送信] してください。

8 GPU 機密インスタンスでは、nvidia-smi conf-compute -f コマンドは通常 CC ステータス: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.rpm以下のコマンドを実行して、GPU/NVSwitch の信頼性ステータスを検証します。
python3 -m ppcie.verifier.verification --gpu-attestation-mode=LOCAL --switch-attestation-mode=LOCALサンプルコードは 8 台の GPU および 4 台の NVSwitch を検証します。
SUCCESSの出力は、検証が成功したことを示します。
制限事項
この機能は TDX 上に構築されているため、TDX コンフィデンシャルコンピューティングインスタンスの制限を継承します。 詳細については、「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 の起動後に、GPU を使用する前に
nvidia-persistencedサービスの起動が完了していることをnvidia-smiまたはその他のコマンドで確認する必要があります。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