Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Linux:Deploy a private Qwen-7B-Chat model with Intel TDX and Confidential AI

Son Güncelleme:Oct 08, 2026

Qwen-7B-Chat modelini Alibaba Cloud TDX güvenli bilişim örneklerine dağıtın. Uzak kanıtlama yöntemiyle şifre çözme anahtarı alarak AI model varlıklarını ve hassas verileri çıkarım sırasında donanım düzeyinde koruyun.

Kullanım senaryoları

  • Finans ve sağlık sektörleri için uyumlu AI: Kişisel tanımlayıcı bilgiler (PII) veya korunan sağlık bilgileri (PHI) içeren metinleri, çıkarım sırasında verileri açığa çıkarmadan işlemek için güvenli bilişimi kullanın ve yasal uyumluluk gereksinimlerini karşılayın.

  • Özel kurumsal bilgi tabanları: Büyük dil modelini dahili hassas belgelerle (finansal raporlar, Ar-Ge materyalleri) zenginleştirirken verilerin cloud ortamında düz metin olarak açığa çıkmasını önleyin. Bu çözüm, hem bilgi tabanı hem de ince ayar yapılmış model için donanım düzeyinde koruma sağlar.

  • Ticari model varlıklarının korunması: Özel AI modellerinin cloud ortamında yasa dışı kopyalanmasını veya çalınmasını önleyerek AI hizmet sağlayıcılarının temel ticari varlıklarını güvence altına alın.

Çözüm özeti

Confidential AI nedir

Confidential AI, AI görevlerinin güvenilmeyen cloud ortamlarında güvenli bir şekilde çalıştırılmasına yönelik bir Alibaba Cloud çözümüdür. Intel TDX donanımını kullanarak AI modelleriniz ve hassas verileriniz için güvenli bir ortam oluşturur ve uçtan uca gizlilik koruması sağlar.

Temel bileşenler

  • Trustee: AI modelleri için şifre çözme anahtarlarını güvenli bir şekilde saklayan bir anahtar yönetimi hizmetidir. Yalnızca uzak kanıtlamadan geçen istekler Trustee'den anahtar alabilir.

  • Trustiflux: TDX örneği içinde dağıtılan bir aracıdır. Çalışma zamanının gerçek ve değiştirilmemiş bir TDX güvenli ortamı olduğunu Trustee'ye kanıtlamak için uzak kanıtlama yöntemini kullanır. Doğrulama başarılı olduktan sonra Trustiflux, Trustee'den anahtarı alır.

Genel akış

image

  1. Güvenilen ortamınızda: Orijinal AI modelini indirin, modeli şifreleyin ve ardından anahtarı Trustee'de saklayın.

  2. Güvenli bilişim ortamında (TDX örneği):

    1. TDX örneğindeki Trustiflux uzak kanıtlamayı başlatır. Trustee kanıtlamayı doğrular. Doğrulama başarılı olduktan sonra Trustee anahtarı Trustiflux'a gönderir.

    2. Trustiflux şifrelenmiş modeli alır ve alınan anahtarı kullanarak şifresini çözer.

    3. Şifresi çözülmüş modeli yükleyin ve güvenli ortamda AI çıkarım hizmetini başlatın.

Hazırlıklar

  • ECS kaynaklarını hazırlayın: Aşağıdaki yapılandırmalara sahip bir TDX güvenli bilişim örneği oluşturun:

    • Bölge ve Alan: Çin (Pekin) I Alanı.

    • Örnek Türü: Qwen-7B-Chat yaklaşık 30 GiB bellek gerektirir. ecs.g8i.4xlarge (16 vCPU, 64 GiB) veya daha yüksek bir tür seçin.

    • Görüntü: Alibaba Cloud Linux 3.2104 LTS 64-bit seçin ve Confidential VM seçeneğini belirleyin.

    • Genel IP adresi: Assign Public IPv4 Address seçeneğini belirleyin. Model indirmelerini hızlandırmak için 100 Mbps tepe bant genişliği ile Pay-By-Traffic seçeneğini belirleyin.

    • Veri Diski: Model ve ilgili dosyalar için sistem diskini en az 100 GiB olarak ayarlayın.

  • Güvenlik grubunu yapılandırın: Aşağıdaki bağlantı noktalarında gelen trafiğe izin verin. Daha fazla bilgi için bkz. Güvenlik grubu kurallarını yönetin.

    • 22: Secure Shell (SSH) uzaktan oturum açma için.

    • 9090: Şifrelenmiş modeli sunan geçici HTTP hizmeti için.

    • 7860: Qwen Web UI veya API hizmeti için.

    • 50005: (İsteğe bağlı) Çıkarım istemlerinin ve yanıtlarının kanal güvenliğini sağlamak için Trusted Network Gateway (TNG) için.

Adım 1: Güvenilen bir ortamda şifrelenmiş modeli ve anahtarı hazırlayın

Modeli indirip şifreleyin, ardından anahtarı Trustee'de saklayın. Bu demo için bu adımlar aynı TDX örneğinde çalıştırılır. Üretim ortamında bunları yerel bilgisayarınızda veya başka bir güvenilen ortamda çalıştırın.

  1. Temel araçları yükleyin

    Örneğe root kullanıcı olarak oturum açın ve Trustee, gocryptfs ile diğer bağımlılıkları yükleyin.

    yum install -y trustee gocryptfs tmux git git-lfs wget && git lfs install
    
    # Start the trustee service
    systemctl start trustee
  1. Qwen-7B-Chat modelini indirin

    İndirme işlemi yaklaşık 15-20 dakika sürer. SSH bağlantısının kesilmesinin indirmeyi kesintiye uğratmasını önlemek için bunu bir tmux oturumunda çalıştırın.

    # Create a working directory
    mkdir -p /cai/trustee && cd /cai/trustee
    
    # Create and enter a tmux session named qwen_clone
    # Note: Using tmux prevents the download from being interrupted by network issues or a closed SSH client.
    tmux new-session -d -s qwen_clone "git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git qwen-7b-chat --depth=1"
    
    # Monitor the download progress
    # Note: After the download is complete, the process will exit and show [exited].
    tmux attach -t qwen_clone
  1. Model dosyası şifreleme

    gocryptfs ile şifrelenmiş bir dizin oluşturun, ardından otomatik şifreleme için model dosyalarını bu dizine taşıyın.

    # Prepare directories for the encrypted data (cipher) and the plaintext mount target (plain)
    mkdir -p /cai/trustee/mount/{cipher,plain}
    
    # Create a password file for encryption. In a production environment, use a more secure, random password.
    printf '123456' > /cai/trustee/sample_password
    
    # Use the password file to initialize the gocryptfs encrypted directory
    cat /cai/trustee/sample_password | gocryptfs -init /cai/trustee/mount/cipher
    
    # Mount the encrypted directory to the plaintext mount target as a background process
    (cat /cai/trustee/sample_password | gocryptfs /cai/trustee/mount/cipher /cai/trustee/mount/plain &) && sleep 2
    
    # Move model files to plaintext mount target for encryption
    mv /cai/trustee/qwen-7b-chat/ /cai/trustee/mount/plain
    
    # After the operation is complete, unmount the plaintext mount target
    fusermount -u /cai/trustee/mount/plain

    Beklenen sonuç

    qwen-7b-chat yerine şifrelenmiş dosya adlarının göründüğünü doğrulamak için ls /cai/trustee/mount/cipher komutunu çalıştırın. qwen-7b-chat dizininin artık mevcut olmadığını onaylamak için ls /cai/trustee komutunu çalıştırın.

  1. Anahtarı Trustee'ye kaydedin

    Parola dosyasını Trustee anahtar deposunda saklayın.

    mkdir -p /opt/trustee/kbs/repository/cai/sample/
    mv /cai/trustee/sample_password /opt/trustee/kbs/repository/cai/sample/password
  1. Yerel HTTP hizmetini başlatın

    Şifrelenmiş model dosyalarını sunmak için geçici bir web sunucusu başlatın.

    # This command starts a service listening on 127.0.0.1:9090. Keep this terminal window running.
    cd /cai/trustee/mount/cipher && python3 -m http.server 9090 --bind 127.0.0.1

Adım 2: Modeli güvenli cloud ortamında şifresini çözün ve bağlayın

Önemli
  • Bu bölümdeki işlemleri ikinci bir SSH terminal penceresinde gerçekleştirin.

  • Başlamadan önce, Adım 1'deki python3 -m http.server komutuyla başlatılan hizmetin ilk terminal penceresinde hala çalıştığından emin olun. Aksi takdirde, bu bölümdeki wget komutu indirme kaynağını bulamadığı için başarısız olur.

  1. Trustiflux'u yükleyin

    İkinci terminal penceresinde attestation-agent, confidential-data-hub ve bağımlılıkları yükleyin.

    yum install -y attestation-agent confidential-data-hub gocryptfs wget
  1. Uzak kanıtlama gerçekleştirin ve anahtarı alın

    Yerel Trustee (127.0.0.1) ile iletişim kuran kanıtlama hizmetini yapılandırın ve başlatın. Doğrulama başarılı olduktan sonra model anahtarını alır ve kaydeder.

    Anahtar aktarımının güvenliği, Trustiflux ve Trustee arasında Trusted Execution Environment (TEE) tabanlı bir uygulama katmanı şifreleme protokolü olan KBS Attestation Protocol tarafından garanti edilir.
    # Configure attestation-agent and confidential-data-hub to communicate with the local Trustee
    sed -i "/^\[token_configs\.kbs\]$/,/^$/ s|^url = .*|url = \"http://127.0.0.1:8080\"|" \
      /etc/trustiflux/attestation-agent.toml
    sed -i "/^\[token_configs\.coco_as\]$/,/^$/ s|^url = .*|url = \"http://127.0.0.1:50004\"|" \
      /etc/trustiflux/attestation-agent.toml
    sed -i 's|\(url\s*=\s*"\)[^"]*|\1http://127.0.0.1:8080|' \
      /etc/trustiflux/confidential-data-hub.toml
    
    # Start the attestation agent, then request the key resource
    attestation-agent -c /etc/trustiflux/attestation-agent.toml > /dev/null 2>&1 & PID=$! && sleep 1
    password=$(confidential-data-hub \
      -c /etc/trustiflux/confidential-data-hub.toml \
      get-resource \
      --resource-uri kbs:///cai/sample/password)
    mkdir -p /cai/trustiflux && echo "$password" | base64 -d > "/cai/trustiflux/sample_password"

    Beklenen sonuç

    İçeriği 123456 olan parola dosyası /cai/trustiflux/sample_password konumuna kaydedilir.

    Dosya bulunamazsa, Adım 1 'deki yerel HTTP hizmetini doğrulayın
  1. Modeli alın ve şifresini çözün

    # Use wget to recursively download the encrypted model files exposed in Step 1.5
    wget -c --tries=30 --timeout=30 --waitretry=15 \
      -r -np -nH --cut-dirs=0 -R "index.html*" \
      --progress=dot:giga --show-progress \
      -P /cai/trustiflux/mount/cipher \
      http://127.0.0.1:9090
    
    # Create a plaintext mount target
    mkdir -p /cai/trustiflux/mount/plain
    
    # Use the key obtained through remote attestation to mount the downloaded encrypted model directory to the plaintext mount target
    gocryptfs -debug -passfile /cai/trustiflux/sample_password /cai/trustiflux/mount/cipher /cai/trustiflux/mount/plain

    Beklenen sonuç

    Terminal Filesystem mounted and ready çıktısını verir. Şifresi çözülmüş qwen-7b-chat dizinini görmek için ls /cai/trustiflux/mount/plain komutunu çalıştırın.

    Şifrelenmiş modeli indirirken wget "Connection refused" hatası döndürürse, Adım 1 'deki yerel HTTP hizmetini doğrulayın

Adım 3: Qwen çıkarım hizmetini başlatın ve erişin

Not

Bu bölümdeki işlemleri üçüncü bir SSH terminal penceresinde gerçekleştirin.

  1. Python ortamını ve bağımlılıkları hazırlayın

    Üçüncü terminal penceresinde bir Conda Python ortamı oluşturun ve etkinleştirin.

    # Download and install Miniconda
    wget https://repo.anaconda.com/miniconda/Miniconda3-py39_23.11.0-2-Linux-x86_64.sh
    bash Miniconda3-py39_23.11.0-2-Linux-x86_64.sh -b -p $HOME/miniconda
    
    # Activate the Conda environment
    source $HOME/miniconda/bin/activate
    
    # Create and activate a dedicated Python 3.10 environment
    conda create -n pytorch_env python=3.10 -y
    conda activate pytorch_env

    Beklenen sonuç

    Terminal isteminin önünde (pytorch_env) metni görünür.

  1. Aşağıdaki yöntemlerden birini kullanarak hizmeti başlatın

    • Modeli programlı olarak bir API aracılığıyla çağırmak için OpenAI uyumlu API hizmetini başlatın seçeneğini belirleyin.

    • Modelle grafiksel bir arayüz üzerinden etkileşim kurmak için Web UI hizmetini başlatın seçeneğini belirleyin.

    • Modelle sunucu terminalinde doğrudan sohbet etmek için komut satırı etkileşimli sohbeti başlatın seçeneğini belirleyin.

    OpenAI uyumlu API hizmetini başlatın

    # Activate the dedicated Python 3.10 environment
    source $HOME/miniconda/bin/activate
    conda activate pytorch_env
    
    cd /cai/trustiflux
    git clone https://github.com/QwenLM/Qwen.git
    cd Qwen
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
    pip3 install -r requirements.txt && pip3 install fastapi uvicorn "openai<1.0" pydantic sse_starlette
    python openai_api.py -c ../mount/plain/qwen-7b-chat --cpu-only --server-name 0.0.0.0 --server-port 7860

    Nasıl erişilir: ECS örneğinin genel IP adresine erişebilen herhangi bir terminalde, çağrı yapmak için curl komutunu kullanın.

    Bu konuda örnek olarak yerel bir terminal kullanılmıştır.
    curl -X POST http://<Public IP address of the TDX instance>:7860/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user", 
                "content": "Who are you?"
            }
        ]
    }'

    Çıktı aşağıdaki şekilde gösterilmektedir.

    image

    Web UI hizmetini başlatın

    # Activate the dedicated Python 3.10 environment
    source $HOME/miniconda/bin/activate
    conda activate pytorch_env
    
    cd /cai/trustiflux
    git clone https://github.com/QwenLM/Qwen.git
    cd Qwen
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
    pip3 install -r requirements.txt && pip3 install -r requirements_web_demo.txt
    python3 web_demo.py -c ../mount/plain/qwen-7b-chat --cpu-only --server-name 0.0.0.0 --server-port 7860

    Nasıl erişilir: Yerel tarayıcınızın adres çubuğuna http://<ECS örneğinin Genel IP adresi>:7860 girin.

    Komut satırı etkileşimli sohbeti başlatın

    # Activate the dedicated Python 3.10 environment
    source $HOME/miniconda/bin/activate
    conda activate pytorch_env
    
    cd /cai/trustiflux
    git clone https://github.com/QwenLM/Qwen.git
    cd Qwen
    pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
    pip3 install -r requirements.txt
    python3 cli_demo.py -c ../mount/plain/qwen-7b-chat --cpu-only

    Nasıl erişilir: Başlatmadan sonra terminaldeki User> isteminde sorunuzu doğrudan girin. Aşağıdaki şekilde bir örnek gösterilmektedir.

    image

Adım 4: (İsteğe bağlı) TNG ile kanal güvenliğini artırın

İstemci ile güvenli cloud ortamı arasında uçtan uca şifreleme sağlamak için Trusted Network Gateway (TNG) kullanın; böylece çıkarım istemlerinin ve yanıtlarının iletim sırasında ele geçirilmesi önlenir.

Not

Bu örnek, modelle bir API aracılığıyla nasıl etkileşim kurulacağını gösterir. Başlamadan önce, Adım 3'teki OpenAI uyumlu API hizmetinin çalıştığından emin olun.

  1. Sunucuda (TDX örneği) TNG'yi dağıtın

    TDX örneğinde dördüncü bir terminal penceresi açın ve şu komutu çalıştırın:

    yum install -y trusted-network-gateway
    tng launch --config-content '{
      "add_egress": [{
        "netfilter": { "capture_dst": { "port": 7860 }, "capture_local_traffic": true, "listen_port": 40001 },
        "attest": { "aa_addr": "unix:///run/confidential-containers/attestation-agent/attestation-agent.sock" }
      }]
    }'
  1. İstemcide (yerel makine) TNG'yi dağıtın

    TNG'yi yerel makinenize indirin ve çalıştırın:

    Daha fazla TNG sürümü

    Yerel makine x86_64 mimarisine sahip

    # x86_64
    wget https://github.com/inclavare-containers/TNG/releases/download/v2.2.4/tng-v2.2.4.x86_64-unknown-linux-gnu.tar.gz
    tar -zxvf tng-v2.2.4.x86_64-unknown-linux-gnu.tar.gz && chmod +x tng
    
    ./tng launch --config-content '{
      "add_ingress": [{
        "http_proxy": { "proxy_listen": { "host": "127.0.0.1", "port": 41000 } },
        "verify": { "as_addr": "http://<Public IP address of the TDX instance>:50005", "policy_ids": [ "default" ] }
      }]
    }'

    Yerel makine aarch64 mimarisine sahip

    # aarch64
    wget https://github.com/inclavare-containers/TNG/releases/download/v2.2.4/tng-v2.2.4.aarch64-unknown-linux-gnu.tar.gz
    tar -zxvf tng-v2.2.4.aarch64-unknown-linux-gnu.tar.gz && chmod +x tng
    
    ./tng launch --config-content '{
      "add_ingress": [{
        "http_proxy": { "proxy_listen": { "host": "127.0.0.1", "port": 41000 } },
        "verify": { "as_addr": "http://<Public IP address of the TDX instance>:50005", "policy_ids": [ "default" ] }
      }]
    }'
  1. TNG proxy'si üzerinden hizmete erişin

    Yeni bir yerel terminal açın, HTTP proxy'sini yapılandırın ve şifrelenmiş kanal üzerinden modelle etkileşim kurun:

    # Temporarily set an environment variable to configure the HTTP proxy
    export http_proxy=http://127.0.0.1:41000
    
    # Interact with the model through the API
    curl -X POST http://<Public IP address of the TDX instance>:7860/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen",
        "messages": [
            {
                "role": "system",
                "content": "You are a helpful assistant."
            },
            {
                "role": "user", 
                "content": "Who are you?"
            }
        ]
    }'

SSS

Trustee kurulumu sırasında hata: "Error: Transaction test error"

Neden: Sistemdeki mevcut SGX veya TDX bağımlılıkları Trustee ile çakışıyor.

Çözüm: yum remove libsgx-dcap-default-qpl libsgx-dcap-quote-verify komutunu çalıştırın, ardından kurulumu yeniden deneyin.

wget şifrelenmiş modeli "Connection refused" hatasıyla indiremiyor

Neden: Adım 1'de başlatılan python3 -m http.server hizmeti durdu.

Çözüm: İlk terminal penceresine dönün ve hizmetin çalıştığını doğrulayın. Hizmet durmuşsa /cai/trustee/mount/cipher dizinine gidin ve hizmeti yeniden başlatın.

Tarayıcıda Web UI'a erişilemiyor (http://<ECS örneğinin Genel IP adresi>:7860)

Nedenler ve sorun giderme:

  1. Güvenlik grubu kuralı: Güvenlik grubunun internetten TCP bağlantı noktası 7860'a gelen trafiğe izin verdiğini doğrulayın.

  2. Hizmet dinleme adresi: Başlatma komutunun --server-name 0.0.0.0 içerdiğinden emin olun.

  3. Hizmet durumu: Üçüncü terminal penceresinde web_demo.py işleminin hala doğru şekilde çalıştığını doğrulayın.

Anahtar dosyası alınırken hata: {code: 111, kind: ConnectionRefused, message: "Connection refused"}

Neden 1: Trustee hizmetini kontrol etmek için systemctl status trustee komutunu çalıştırın. Durum inactive ise hizmet çalışmıyor demektir.

Çözüm: Hizmeti başlatmak için systemctl start trustee komutunu çalıştırın.

Neden 2: Varsayılan uzak kanıtlama ilkesi çok katı olduğundan TDX ortamı doğrulaması başarısız oluyor.

Çözüm: (Yalnızca geliştirme ve hazırlık ortamları için) Doğrulamanın başarılı olmasını geçici olarak sağlamak için sed -i 's/^default allow = false$/default allow = true/' /opt/trustee/kbs/policy.rego komutunu çalıştırın.

Referanslar