全部产品
Search
文档中心

Alibaba Cloud Linux:Menyebarkan Model Qwen-7B-Chat Pribadi yang Dilindungi Intel TDX dengan Solusi AI Rahasia

更新时间:Nov 10, 2025

Untuk melindungi aset model AI dan data sensitif, seperti catatan keuangan atau medis, Anda dapat menggunakan instans komputasi rahasia Alibaba Cloud TDX. Instans ini memanfaatkan atestasi jarak jauh untuk memperoleh kunci dekripsi, sehingga memungkinkan Anda men-deploy model Qwen secara aman. Proses ini memberikan perlindungan data tingkat perangkat keras selama Inferensi AI guna mengamankan aset inti Anda.

Kasus penggunaan

  • AI untuk Keuangan dan Perawatan Kesehatan: Saat memproses teks yang berisi informasi yang dapat diidentifikasi secara pribadi atau informasi kesehatan yang dilindungi, Anda dapat menggunakan komputasi rahasia untuk memastikan bahwa data tidak terpapar selama inferensi. Hal ini membantu memenuhi persyaratan kepatuhan.

  • Basis Pengetahuan Perusahaan Privat: Sebuah perusahaan ingin meningkatkan model bahasa besar dengan dokumen internal sensitif, seperti laporan keuangan atau materi R&D. Namun, perusahaan tersebut tidak ingin data inti ini terekspos sebagai teks biasa di cloud. Solusi ini memastikan bahwa baik data basis pengetahuan maupun model yang telah dilatih ulang dilindungi oleh perangkat keras.

  • Melindungi Aset Model Komersial: Bagi penyedia layanan AI (SP), model proprietary yang telah dilatih dengan cermat merupakan aset komersial inti. Solusi ini mencegah model dicopy atau dicuri secara ilegal di cloud.

Ikhtisar Solusi

Pengenalan Solusi Confidential AI

Confidential AI adalah solusi dari Alibaba Cloud yang memungkinkan Anda menjalankan tugas AI secara aman di lingkungan cloud yang tidak terpercaya. Solusi ini menggunakan perangkat keras komputasi rahasia, seperti Intel TDX, untuk menciptakan "kotak aman perangkat keras" (lingkungan rahasia) bagi model AI dan data sensitif Anda, memberikan keamanan ujung ke ujung serta perlindungan privasi.

Penjelasan Komponen Inti

  • Trustee: Anggaplah ini sebagai "kotak aman kunci". Tugas utamanya adalah menyimpan dan mengelola kunci yang digunakan untuk mendekripsi model AI secara aman. Hanya permintaan tepercaya yang lolos validasi jarak jauh ketat yang dapat memperoleh kunci dari Trustee.

  • Trustiflux: Anggaplah ini sebagai "penjaga gerbang tepercaya di cloud". Komponen ini ditempatkan di dalam instans TDX. Tugas intinya adalah menggunakan proses validasi jarak jauh untuk membuktikan kepada Trustee bahwa runtime saat ini adalah lingkungan rahasia TDX asli dan tidak dimodifikasi. Setelah membuktikan integritas tersebut, Trustiflux dapat memperoleh kunci dari Trustee.

Alur Keseluruhan

image

  1. Di lingkungan tepercaya Anda: Unduh model AI asli, enkripsi model tersebut, lalu simpan kuncinya di Trustee.

  2. Di lingkungan komputasi rahasia (instans TDX):

    1. Trustiflux di instans TDX memulai validasi jarak jauh. Trustee memverifikasi validasi tersebut. Setelah verifikasi berhasil, Trustee mengirimkan kunci ke Trustiflux.

    2. Trustiflux mengambil model terenkripsi dan menggunakan kunci yang diterima untuk mendekripsinya.

    3. Muat model yang telah didekripsi dan mulai layanan inferensi AI di lingkungan rahasia.

Persiapan

  • Siapkan Sumber Daya ECS: Buat instans komputasi rahasia TDX dengan konfigurasi kunci berikut:

    • Wilayah dan Zona: China (Beijing) Zona I.

    • Tipe Instans: Model Qwen-7B-Chat memerlukan sekitar 30 GiB memori untuk dijalankan. Untuk stabilitas, pilih ecs.g8i.4xlarge (16 vCPU, 64 GiB memori) atau tipe instans yang lebih tinggi.

    • Image: Pilih Alibaba Cloud Linux 3.2104 LTS 64-bit dan aktifkan opsi Confidential VM.

    • Alamat IP Publik: Aktifkan Assign Public IPv4 Address. Untuk bandwidth, pilih Pay-By-Traffic dan atur bandwidth maksimum menjadi 100 Mbps untuk mempercepat unduhan model.

    • Disk Data: Model dan file terkait memerlukan ruang penyimpanan yang besar. Disk sistem harus memiliki kapasitas minimal 100 GiB.

  • Konfigurasikan grup keamanan: Atur grup keamanan untuk mengizinkan lalu lintas masuk pada port berikut. Untuk detail lebih lanjut, lihat Kelola aturan grup keamanan.

    • 22: Untuk logon jarak jauh melalui Secure Shell (SSH).

    • 9090: Untuk layanan HTTP sementara guna mengambil model terenkripsi dari cloud di langkah berikutnya.

    • 7860: Untuk mengakses antarmuka Web Qwen yang diterapkan atau layanan API.

    • 50005: (Opsional) Untuk Trusted Network Gateway (TNG) guna memastikan keamanan saluran prompt inferensi dan tanggapan.

Langkah 1: Persiapkan model terenkripsi dan kunci dalam lingkungan tepercaya

Pertama, unduh dan enkripsi model, lalu konfigurasikan Trustee untuk menyimpan kunci. Untuk demo ini, langkah-langkah berikut dilakukan pada instans TDX yang sama. Dalam penerapan nyata, Anda harus menjalankan langkah-langkah ini di lingkungan lokal atau lingkungan tepercaya lainnya.

  1. Instal alat dasar

    Masuk ke instans sebagai pengguna root dan instal Trustee, gocryptfs, serta dependensi lainnya.

    yum install -y trustee gocryptfs tmux git git-lfs wget && git lfs install
    
    # Mulai layanan trustee
    systemctl start trustee
  1. Unduh Qwen-7B-Chat model.

    File model sangat besar, sehingga proses unduhan memakan waktu lama (sekitar 15 hingga 20 menit). Jalankan unduhan dalam sesi tmux untuk mencegah koneksi SSH terputus dan mengganggu proses unduhan.

    # Buat direktori kerja
    mkdir -p /cai/trustee && cd /cai/trustee
    
    # Buat dan masuk ke sesi tmux bernama qwen_clone
    # Catatan: Menggunakan tmux mencegah unduhan terganggu oleh masalah jaringan atau klien SSH yang ditutup.
    tmux new-session -d -s qwen_clone "git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat.git qwen-7b-chat --depth=1"
    
    # Pantau kemajuan unduhan
    # Catatan: Setelah unduhan selesai, proses akan keluar dan menampilkan [exited].
    tmux attach -t qwen_clone
  1. Enkripsi file model

    Gunakan alat gocryptfs untuk membuat direktori terenkripsi. Kemudian, pindahkan file model ke direktori tersebut agar secara otomatis terenkripsi.

    # Siapkan direktori untuk data terenkripsi (cipher) dan titik pemasangan teks biasa (plain)
    mkdir -p /cai/trustee/mount/{cipher,plain}
    
    # Buat file kata sandi untuk enkripsi. Dalam lingkungan produksi, gunakan kata sandi acak yang lebih aman.
    printf '123456' > /cai/trustee/sample_password
    
    # Gunakan file kata sandi untuk menginisialisasi direktori terenkripsi gocryptfs
    cat /cai/trustee/sample_password | gocryptfs -init /cai/trustee/mount/cipher
    
    # Pasang direktori terenkripsi ke titik pemasangan teks biasa sebagai proses latar belakang
    (cat /cai/trustee/sample_password | gocryptfs /cai/trustee/mount/cipher /cai/trustee/mount/plain &) && sleep 2
    
    # Pindahkan file model ke titik pemasangan teks biasa. gocryptfs secara otomatis menangani enkripsi dan menulis data terenkripsi ke direktori cipher. Proses ini memakan waktu sekitar 5 menit karena ukuran file yang besar.
    mv /cai/trustee/qwen-7b-chat/ /cai/trustee/mount/plain
    
    # Setelah operasi selesai, lepaskan titik pemasangan teks biasa
    fusermount -u /cai/trustee/mount/plain

    Hasil yang diharapkan

    Setelah menjalankan perintah, jalankan ls /cai/trustee/mount/cipher. Anda seharusnya melihat beberapa nama file terenkripsi alih-alih qwen-7b-chat. Kemudian, jalankan ls /cai/trustee untuk memastikan bahwa direktori qwen-7b-chat tidak ada lagi.

  1. Simpan kunci ke Trustee

    Simpan file kata sandi dari langkah sebelumnya dengan aman di repositori kunci Trustee.

    mkdir -p /opt/trustee/kbs/repository/cai/sample/
    mv /cai/trustee/sample_password /opt/trustee/kbs/repository/cai/sample/password
  1. Mulai layanan HTTP lokal

    Mulai server web sementara untuk menyediakan file model terenkripsi ke lingkungan cloud.

    # Perintah ini memulai layanan yang mendengarkan di 127.0.0.1:9090. Biarkan jendela terminal ini tetap berjalan.
    cd /cai/trustee/mount/cipher && python3 -m http.server 9090 --bind 127.0.0.1

Langkah 2: Dekripsi dan pasang model di lingkungan cloud rahasia

Penting
  • Lakukan operasi pada bagian ini di jendela terminal SSH kedua.

  • Sebelum memulai, pastikan layanan yang dimulai dengan perintah python3 -m http.server di Langkah 1 masih berjalan di jendela terminal pertama. Jika tidak, perintah wget pada bagian ini akan gagal karena tidak dapat menemukan sumber unduhan.

  1. Instal Trustiflux

    Di jendela terminal kedua, instal agen validasi (attestation-agent), pusat data rahasia (confidential-data-hub), dan dependensi lingkungan terkait.

    yum install -y attestation-agent confidential-data-hub gocryptfs wget
  1. Lakukan Validasi Jarak Jauh dan Dapatkan Kunci

    Perintah berikut mengonfigurasi dan memulai layanan validasi. Layanan ini berkomunikasi dengan Trustee lokal (di 127.0.0.1 pada mesin yang sama dalam contoh ini). Setelah verifikasi berhasil, layanan mengambil dan menyimpan kunci model.

    Keamanan transfer kunci dijamin oleh Protokol Attestation KBS, sebuah protokol enkripsi lapisan aplikasi berbasis Trusted Execution Environment (TEE) antara Trustiflux dan Trustee.
    # Konfigurasikan attestation-agent dan confidential-data-hub untuk berkomunikasi dengan Trustee lokal
    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
    
    # Mulai agen validasi, lalu minta sumber daya kunci
    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"

    Hasil yang Diharapkan

    Setelah perintah dijalankan dengan sukses, Anda dapat menemukan file kata sandi dengan konten 123456 di jalur /cai/trustiflux/sample_password.

    Jika file tidak ditemukan, verifikasi bahwa layanan HTTP lokal dari Langkah 1
  1. Ambil dan Dekripsi Model

    # Gunakan wget untuk mengunduh secara rekursif file model terenkripsi yang diekspos di Langkah 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
    
    
    # Buat titik pemasangan teks biasa
    mkdir -p /cai/trustiflux/mount/plain
    
    # Gunakan kunci yang diperoleh melalui validasi jarak jauh untuk memasang direktori model terenkripsi yang diunduh ke titik pemasangan teks biasa
    gocryptfs -debug -passfile /cai/trustiflux/sample_password /cai/trustiflux/mount/cipher /cai/trustiflux/mount/plain

    Hasil yang Diharapkan

    Setelah perintah dijalankan, terminal mengeluarkan Filesystem mounted and ready. Jalankan ls /cai/trustiflux/mount/plain. Anda dapat melihat direktori qwen-7b-chat yang telah didekripsi.

    Jika wget mengembalikan kesalahan "Koneksi ditolak" saat mengunduh model terenkripsi, verifikasi bahwa layanan HTTP lokal dari Langkah 1

Langkah 3: Memulai dan mengakses layanan inferensi Qwen

Catatan

Lakukan operasi di bagian ini di dalam third SSH terminal window.

  1. Siapkan Lingkungan Python dan Dependensinya

    Di jendela terminal ketiga, gunakan Conda untuk membuat dan mengaktifkan lingkungan Python baru.

    # Unduh dan instal 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
    
    # Aktifkan lingkungan Conda
    source $HOME/miniconda/bin/activate
    
    # Buat dan aktifkan lingkungan Python 3.10 khusus
    conda create -n pytorch_env python=3.10 -y
    conda activate pytorch_env

    Hasil yang Diharapkan

    Teks (pytorch_env) muncul sebelum prompt terminal.

  1. Mulai Layanan Menggunakan Salah Satu Metode Berikut

    • Untuk memanggil model secara terprogram melalui API, pilih Mulai Layanan API yang Kompatibel dengan OpenAI.

    • Untuk berinteraksi dengan model melalui antarmuka grafis, pilih Mulai Layanan Web UI.

    • Untuk mengobrol dengan model langsung di terminal server, pilih Mulai Obrolan Interaktif Baris Perintah.

    Mulai Layanan API yang Kompatibel dengan OpenAI

    # Aktifkan lingkungan Python 3.10 khusus
    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

    Cara Mengakses: Di terminal mana pun yang dapat mengakses Alamat IP publik dari Instance ECS, gunakan perintah curl untuk melakukan panggilan.

    Topik ini menggunakan terminal lokal sebagai contoh.
    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?"
            }
        ]
    }'

    Output ditampilkan pada gambar berikut.

    image

    Mulai Layanan Web UI

    # Aktifkan lingkungan Python 3.10 khusus
    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

    Cara Mengakses: Di bilah alamat browser lokal Anda, masukkan http://<Public IP address of the ECS instance>:7860.

    Mulai Obrolan Interaktif Baris Perintah

    # Aktifkan lingkungan Python 3.10 khusus
    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

    Cara Mengakses: Setelah startup, masukkan pertanyaan Anda langsung di prompt User> di terminal. Gambar berikut menunjukkan sebuah contoh.

    image

Langkah 4: (Opsional) Tingkatkan keamanan saluran dengan TNG

Untuk mencapai enkripsi ujung-ke-ujung dari Klien ke lingkungan cloud rahasia, Anda dapat menggunakan Trusted Network Gateway (TNG) untuk melindungi saluran komunikasi. Ini mencegah prompt inferensi dan tanggapan disadap selama transmisi.

Catatan

Contoh ini menunjukkan cara berinteraksi dengan model melalui API. Sebelum memulai, pastikan layanan API yang kompatibel dengan OpenAI dari Langkah 3 sedang Berjalan.

  1. Deploy TNG di Server (Instans TDX)

    Buka jendela terminal keempat pada Instans TDX dan jalankan perintah berikut:

    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. Deploy TNG di Klien (Mesin Lokal)

    Unduh dan jalankan TNG di mesin lokal Anda.

    Versi TNG Lainnya

    Mesin lokal adalah x86_64

    # 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" ] }
      }]
    }'

    Mesin lokal adalah aarch64

    # 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. Akses Layanan melalui Proxy TNG

    Buka jendela baris perintah lokal baru, jalankan perintah berikut untuk mengonfigurasi proxy HTTP, lalu berinteraksilah dengan model melalui saluran terenkripsi:

    # Secara sementara atur variabel lingkungan untuk mengonfigurasi proxy HTTP
    export http_proxy=http://127.0.0.1:41000
    
    # Berinteraksi dengan model melalui 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?"
            }
        ]
    }'

FAQ

  • Kesalahan selama instalasi trustee: "Error: Transaction test error"

    Penyebab: Ketergantungan Intel Software Guard Extensions (SGX) atau TDX yang sudah ada pada sistem bertentangan dengan Trustee.

    Solusi: Jalankan yum remove libsgx-dcap-default-qpl libsgx-dcap-quote-verify, lalu coba lagi instalasinya.

  • wget gagal mengunduh model terenkripsi dengan kesalahan "Connection refused"

    Penyebab: Layanan python3 -m http.server yang dimulai di Langkah 1 telah berhenti.

    Solusi: Kembali ke jendela terminal tempat Anda menjalankan perintah tersebut (jendela terminal pertama) dan pastikan layanan masih berjalan. Jika telah berhenti, kembali ke direktori /cai/trustee/mount/cipher dan jalankan kembali.

  • Tidak dapat mengakses Web UI di browser (http://<Public IP address of the ECS instance>:7860)

    Penyebab dan pemecahan masalah:

    1. Aturan grup keamanan: Verifikasi bahwa grup keamanan mengizinkan lalu lintas masuk pada Port TCP 7860 dari internet.

    2. Alamat mendengarkan layanan: Pastikan perintah startup mencakup --server-name 0.0.0.0.

    3. Status layanan: Di jendela terminal ketiga, verifikasi bahwa proses web_demo.py masih berjalan dengan benar.

  • Kesalahan saat mendapatkan file kunci: {code: 111, kind: ConnectionRefused, message: "Connection refused"}

    Penyebab: Gunakan perintah systemctl status trustee untuk memeriksa status layanan Trustee pada instans. Jika statusnya adalah inactive, layanan tidak berjalan.

    Solusi: Jalankan perintah systemctl start trustee untuk memulai layanan Trustee.

Referensi