このトピックでは、Alibaba Cloud ヘテロジニアスコンフィデンシャルコンピューティングインスタンス (gn8v-tee) 上にヘテロジニアスコンフィデンシャルコンピューティング環境を構築する方法について説明します。また、このトピックでは、サンプルコードを実行して GPU ベースのコンフィデンシャルコンピューティング機能を検証する方法も示します。
背景情報
Alibaba Cloud ヘテロジニアスコンフィデンシャルコンピューティングインスタンス (gn8v-tee) は、CPU TDX コンフィデンシャルコンピューティングインスタンス上に構築され、GPU を Trusted Execution Environment (TEE) に統合します。この統合により、CPU と GPU 間のデータ転送、および GPU 内でのデータ計算が保護されます。このトピックでは、GPU ベースのコンフィデンシャルコンピューティング機能の検証に焦点を当てます。CPU TDX コンフィデンシャルコンピューティング環境の構築方法とリモートアテステーション機能の検証方法の詳細については、「TDX コンフィデンシャルコンピューティング環境の構築」をご参照ください。ヘテロジニアスコンフィデンシャルコンピューティングインスタンスに大規模言語モデルの推論環境をデプロイする場合は、「ヘテロジニアスコンフィデンシャルコンピューティングインスタンス上でのセキュリティ計測をサポートする LLM 推論環境の構築」をご参照ください。
上の図に示すように、ヘテロジニアスコンフィデンシャルコンピューティングインスタンス上の GPU は、コンフィデンシャルコンピューティングモードで起動します。インスタンスの機密性は、以下のメカニズムによって保証されます:
TDX 機能により、ハイパーバイザー/ホスト OS はインスタンスの機密性の高いレジスタやメモリデータにアクセスできなくなります。
PCIe ファイアウォールは、CPU が GPU の重大なレジスタや保護されたビデオメモリにアクセスするのを防ぎます。ハイパーバイザー/ホスト OS のアクセスは制限されており、GPU のリセットなどの特定の操作のみを実行できますが、機密データにはアクセスできません。これにより、GPU 内のデータの機密性が保証されます。
GPU の NVLink ファイアウォールは、他の GPU がそのビデオメモリに直接アクセスするのを防ぎます。
初期化中に、CPU TEE 内の GPU ドライバーとライブラリ関数は、Security Protocol and Data Model (SPDM) を使用して GPU との暗号化チャネルを確立します。鍵ネゴシエーションの後、CPU と GPU は PCIe 経由で暗号文データのみを送信します。これにより、CPU と GPU 間のデータ転送リンクの機密性が保証されます。
GPU のリモートアテステーション機能は、GPU が安全な状態にあるかどうかを確認します。
具体的には、コンフィデンシャルコンピューティングインスタンス内のアプリケーションは、Attestation SDK を使用して GPU ドライバーを呼び出し、ハードウェアから GPU のセキュリティステータスに関する暗号化レポートを取得できます。このレポートには、暗号署名された GPU ハードウェア情報、VBIOS、およびハードウェアステータスの計測値が含まれています。依拠当事者は、これらの計測値を GPU ベンダーが提供する参照値と比較して、GPU が安全なコンフィデンシャルコンピューティング状態にあることを確認できます。
注意事項
ヘテロジニアスコンフィデンシャルコンピューティングは、Alibaba Cloud Linux 3 イメージでのみサポートされています。Alibaba Cloud Linux 3 上に構築されたカスタムイメージを使用してインスタンスを作成する場合、カーネルバージョンが 5.10.134-18 以降であることを確認してください。
ヘテロジニアスコンフィデンシャルコンピューティングインスタンス (gn8v-tee) の作成
ECS コンソール
コンソールでヘテロジニアスコンフィデンシャルコンピューティング機能を備えたインスタンスを作成する手順は、通常のインスタンスの作成と似ていますが、特定のオプションを選択する必要があります。このセクションでは、ヘテロジニアスコンフィデンシャルコンピューティングインスタンスの特定の設定についてハイライトします。その他の一般的な設定については、「ウィザードを使用したインスタンスの作成」をご参照ください。
ECS コンソール - インスタンスに移動します。
上部のナビゲーションバーで、管理したいリソースのリージョンとリソースグループを選択します。
[インスタンスの作成] をクリックし、以下の設定でインスタンスを構成します。
設定項目
説明
リージョンとゾーン
中国 (北京) ゾーン L
インスタンスタイプ
ecs.gn8v-tee.4xlarge 以上のインスタンスタイプのみがサポートされています。
イメージ
Alibaba Cloud Linux 3.2104 LTS 64 ビット イメージを選択します。
パブリック IP アドレス
[パブリック IPv4 アドレスの割り当て] を選択します。これにより、後で NVIDIA の公式サイトからドライバーをダウンロードできるようになります。
重要8-GPU コンフィデンシャルインスタンスを作成する際、追加のセカンダリ Elastic Network Interface (ENI) を追加しないでください。追加すると、インスタンスが起動しない可能性があります。
画面の指示に従って、インスタンスの作成を完了します。
OpenAPI または CLI
TDX セキュリティ属性をサポートする ECS インスタンスを作成するには、RunInstances 操作を呼び出すか、Alibaba Cloud CLI を使用します。以下の表に、必須パラメーターを示します。
パラメーター | 説明 | 例 |
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-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 -f戻り値が CC status: ON の場合は、コンフィデンシャルコンピューティング機能が有効になっていることを示します。戻り値が CC status: OFF の場合は、機能が無効であり、インスタンスが異常な状態であることを示します。インスタンスが異常な状態の場合は、チケットを送信してください。

8-GPU コンフィデンシャルインスタンス
コンフィデンシャルコンピューティング属性のステータスを表示します。
nvidia-smi conf-compute -mgm結果が Multi-GPU Mode: Protected PCIe の場合は、マルチ GPU コンフィデンシャルコンピューティング機能が有効になっていることを示します。結果が Multi-GPU Mode: None の場合は、マルチ GPU コンフィデンシャルコンピューティング機能が無効であり、インスタンスの状態が異常であることを示します。この問題が発生した場合は、チケットを送信してください。

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.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 タスクや大規模言語モデルタスクを実行する際にエラーが発生する可能性があります。特定のバージョンの 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
GPU を使用する自動起動サービス (cloudmonitor.service、ollama.service、または nvidia-container-toolkit-base パッケージの nvidia-cdi-refresh.service など) は、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