Configure um ambiente de computação confidencial heterogênea em uma instância gn8v-tee e verifique a computação confidencial da gpu com um código de exemplo.
Contexto
As instâncias de computação confidencial heterogênea do Alibaba Cloud (gn8v-tee) estendem as instâncias de computação confidencial TDX da CPU ao incorporar uma gpu ao Trusted Execution Environment (TEE). Isso protege as transferências de dados entre CPU e gpu e a computação de dados na gpu. Para construir um ambiente de computação confidencial TDX da CPU e verificar o atestado remoto, consulte Construir um ambiente de computação confidencial TDX. Para implantar inferência de LLM em uma instância de computação confidencial heterogênea, consulte Construir um ambiente de inferência de LLM medido em uma instância confidencial heterogênea.
A gpu em uma instância de computação confidencial heterogênea inicia no modo de computação confidencial. Os seguintes mecanismos garantem a confidencialidade:
O TDX impede que o Hypervisor/Sistema Operacional Host acesse registradores sensíveis ou dados de memória da instância.
Um firewall PCIe impede que a CPU acesse registradores críticos da gpu e a memória de vídeo protegida. O Hypervisor/Sistema Operacional Host só pode executar operações limitadas, como redefinir a gpu, mas não consegue acessar dados sensíveis.
O Firewall NVLink da gpu bloqueia o acesso direto de outras gpus à sua memória de vídeo.
Durante a inicialização, o driver da gpu e as funções de biblioteca no TEE da CPU estabelecem um canal criptografado com a gpu por meio do protocolo SPDM. Após a negociação de chaves, apenas texto cifrado é transmitido pelo PCIe entre a CPU e a gpu.
-
A capacidade de atestado remoto da gpu confirma que ela está em um estado seguro.
Aplicativos em uma instância de computação confidencial podem usar o Attestation sdk para chamar o driver da gpu e obter um relatório criptográfico do status de segurança da gpu. Esse relatório contém informações assinadas criptograficamente sobre o hardware da gpu, o VBIOS e as medições de status do hardware. Uma parte confiável pode comparar essas medições com as referências do fornecedor da gpu para verificar se a gpu está em um estado seguro de computação confidencial.
Observações de uso
A computação confidencial heterogênea requer imagens do Alibaba Cloud Linux 3. Se você utilizar uma imagem personalizada baseada no Alibaba Cloud Linux 3, garanta que a versão do kernel seja 5.10.134-18 ou posterior.
Crie uma instância de computação confidencial heterogênea (gn8v-tee)
Console
A criação de uma instância de computação confidencial heterogênea é semelhante à criação de uma instância padrão, mas exige configurações específicas. Para configurações gerais, consulte Criar uma instância usando o assistente.
Acesse ECS console - Instances.
No canto superior esquerdo da página, selecione uma região e um grupo de recursos.
-
Clique em Create Instance e configure a instância com as seguintes definições.
Item de configuração
Descrição
Region and Zone
China (Beijing) Zone L
Instance Type
ecs.gn8v-tee.4xlarge ou superior.
Image
Selecione a imagem Alibaba Cloud Linux 3.2104 LTS 64-bit.
Public IP Address
Assign Public IPv4 Address. Necessário para baixar o driver NVIDIA posteriormente.
ImportanteAo criar ou reiniciar uma instância confidencial com 8 gpus, não anexe ENIs secundárias adicionais ou discos de dados. Essa ação pode causar falha na inicialização.
Conclua a criação da instância seguindo as instruções na tela.
API/CLI
Chame a operação RunInstances ou use a CLI do Alibaba Cloud para criar uma instância ECS com TDX habilitado. Principais parâmetros:
|
Parâmetro |
Descrição |
Exemplo |
|
RegionId |
China (Beijing) |
cn-beijing |
|
ZoneId |
Zone L |
cn-beijing-l |
|
InstanceType |
ecs.gn8v-tee.4xlarge ou superior. |
ecs.gn8v-tee.4xlarge |
|
ImageId |
ID de uma imagem compatível com computação confidencial. Apenas imagens de 64 bits do Alibaba Cloud Linux 3.2104 LTS com versão de kernel 5.10.134-18.al8.x86_64 ou posterior. |
aliyun_3_x64_20G_alibase_20250117.vhd |
Exemplo de CLI:
<SECURITY_GROUP_ID>: ID do grupo de segurança.<VSWITCH_ID>: ID do vSwitch.<KEY_PAIR_NAME>: Nome do par de chaves 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>
Construir o ambiente de computação confidencial heterogênea
Etapa 1: Instale o driver NVIDIA e o CUDA Toolkit
As instâncias de computação confidencial heterogênea demoram bastante para inicializar. Aguarde até que o status da instância seja Running e o sistema operacional tenha iniciado completamente.
Os passos de instalação variam conforme o tipo de instância:
Instâncias confidenciais com gpu única: ecs.gn8v-tee.4xlarge e ecs.gn8v-tee.6xlarge
Instâncias confidenciais com 8 gpus: ecs.gn8v-tee-8x.16xlarge e ecs.gn8v-tee-8x.48xlarge
Instâncias confidenciais com gpu única
Conecte-se à instância de computação confidencial. Consulte Fazer login em uma instância Linux usando o Workbench.
-
Defina o buffer SWIOTLB para 8 GB.
sudo grubby --update-kernel=ALL --args="swiotlb=4194304,any" Reinicie a instância. Consulte Reiniciar uma instância.
-
Baixe o driver NVIDIA e o CUDA Toolkit.
Instâncias confidenciais com gpu única exigem a versão do driver
550.144.03ou posterior. Este exemplo usa a versão550.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 -
Instale as dependências e desative o serviço CloudMonitor.
sudo yum install -y openssl3 sudo systemctl disable cloudmonitor sudo systemctl stop cloudmonitor -
Crie e configure o arquivo
nvidia-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.service -
Instale o driver NVIDIA e o 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 --toolkit -
Inicie os serviços nvidia-persistenced e CloudMonitor.
sudo systemctl start nvidia-persistenced.service sudo systemctl enable nvidia-persistenced.service sudo systemctl start cloudmonitor sudo systemctl enable cloudmonitor
Instâncias confidenciais com 8 gpus
-
Conecte-se à instância de computação confidencial. Consulte Fazer login em uma instância Linux usando o Workbench.
ImportanteAs instâncias de computação confidencial inicializam lentamente. Aguarde a conclusão do processo antes de prosseguir.
-
Defina o buffer SWIOTLB para 8 GB.
sudo grubby --update-kernel=ALL --args="swiotlb=4194304,any" -
Configure o comportamento de carregamento do driver NVIDIA e regenere o 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 Reinicie a instância. Consulte Reiniciar uma instância.
-
Baixe o driver NVIDIA e o CUDA Toolkit.
Instâncias de computação confidencial com 8 gpus exigem a versão do driver
570.148.08ou posterior e oFabric Managercorrespondente. Este exemplo usa a versão570.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 -
Instale as dependências e desative o serviço CloudMonitor.
sudo yum install -y openssl3 sudo systemctl disable cloudmonitor sudo systemctl stop cloudmonitor -
Crie e configure o arquivo
nvidia-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.service -
Instale o Fabric Manager, o driver NVIDIA e o 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 --toolkit -
Inicie e ative os serviços nvidia-fabricmanager, nvidia-persistenced e 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
Etapa 2: Verifique o status do TDX
Este recurso depende do TDX. Verifique o status do TDX para confirmar que a instância está protegida.
-
Verifique se o TDX está habilitado.
lscpu |grep -i tdx_guestSe a saída contiver
tdx_guest, o TDX estará habilitado.
-
Verifique a instalação dos drivers relacionados ao TDX.
ls -l /dev/tdx_guestA seguinte saída indica que os drivers relacionados ao TDX estão instalados.

Etapa 3: Verifique o status do recurso de computação confidencial da gpu
Instâncias confidenciais com gpu única
Verifique o status da computação confidencial.
nvidia-smi conf-compute -f
CC status: ON indica que a computação confidencial está habilitada. CC status: OFF indica que o recurso está desabilitado devido a um erro na instância. Se isso ocorrer, abra um ticket.

Instâncias confidenciais com 8 gpus
Verifique o status da computação confidencial.
nvidia-smi conf-compute -mgm
Multi-GPU Mode: Protected PCIe indica que a computação confidencial multi-gpu está habilitada. Multi-GPU Mode: None indica que o recurso está desabilitado devido a um erro na instância. Se isso ocorrer, abra um ticket.

Para instâncias confidenciais com 8 gpus, o comando nvidia-smi conf-compute -f normalmente retorna CC status: OFF.
Etapa 4: Verifique a confiança da gpu e do NVSwitch usando atestado local
Instâncias confidenciais com gpu única
-
Instale as dependências de confiança da 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.html -
Verifique o status de confiança da gpu.
python3 -m verifier.cc_admin --user_modeA saída indica que a gpu está no modo de computação confidencial e que medições como driver e VBIOS correspondem aos valores esperados:

Instâncias confidenciais com 8 gpus
-
Instale as dependências de confiança da 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.html -
Instale as dependências do NVSwitch.
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 -
Verifique o status de confiança da gpu/NVSwitch.
python3 -m ppcie.verifier.verification --gpu-attestation-mode=LOCAL --switch-attestation-mode=LOCALO código de exemplo verifica oito gpus e quatro NVSwitches.
SUCCESSindica que a verificação foi aprovada:
Limitações
Este recurso herda as limitações das instâncias TDX.
Com a computação confidencial da gpu habilitada, as transferências de dados entre CPU e gpu exigem criptografia e descriptografia. Isso resulta em menor desempenho nas tarefas da gpu em comparação com instâncias heterogêneas não confidenciais.
Observações de uso
-
Instâncias com gpu única usam CUDA 12.4. A biblioteca NVIDIA cuBLAS possui um problema conhecido que pode causar erros ao executar tarefas CUDA ou LLM. Instale uma versão específica do cuBLAS para resolver esse problema.
pip3 install nvidia-cublas-cu12==12.4.5.8 -
Com a computação confidencial da gpu habilitada, a inicialização é lenta, especialmente para instâncias com 8 gpus. Após a inicialização do sistema operacional convidado, verifique se o
nvidia-persistencedterminou de iniciar antes de usar a gpu comnvidia-smiou outros comandos. Verifique o status do serviçonvidia-persistenced:systemctl status nvidia-persistenced | grep "Active: "-
activating (start)— o serviço está iniciando.Active: activating (start) since Wed 2025-02-19 10:07:54 CST; 2min 20s ago -
active (running) — o serviço está em execução.
Active: active (running) since Wed 2025-02-19 10:10:28 CST; 22s ago
-
-
Serviços de início automático dependentes da gpu, como
cloudmonitor.service,nvidia-cdi-refresh.service(do nvidia-container-toolkit-base) ouollama.service, devem iniciar após onvidia-persistenced.service.Exemplo de configuração para
/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