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

Di lingkungan tepercaya Anda: Unduh model AI asli, enkripsi model tersebut, lalu simpan kuncinya di Trustee.
Di lingkungan komputasi rahasia (instans TDX):
Trustiflux di instans TDX memulai validasi jarak jauh. Trustee memverifikasi validasi tersebut. Setelah verifikasi berhasil, Trustee mengirimkan kunci ke Trustiflux.
Trustiflux mengambil model terenkripsi dan menggunakan kunci yang diterima untuk mendekripsinya.
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-bitdan 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.
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
Unduh
Qwen-7B-Chatmodel.File model sangat besar, sehingga proses unduhan memakan waktu lama (sekitar 15 hingga 20 menit). Jalankan unduhan dalam sesi
tmuxuntuk 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
Enkripsi file model
Gunakan alat
gocryptfsuntuk 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/plainHasil yang diharapkan
Setelah menjalankan perintah, jalankan
ls /cai/trustee/mount/cipher. Anda seharusnya melihat beberapa nama file terenkripsi alih-alihqwen-7b-chat. Kemudian, jalankanls /cai/trusteeuntuk memastikan bahwa direktoriqwen-7b-chattidak ada lagi.
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
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
Lakukan operasi pada bagian ini di jendela terminal SSH kedua.
Sebelum memulai, pastikan layanan yang dimulai dengan perintah
python3 -m http.serverdi Langkah 1 masih berjalan di jendela terminal pertama. Jika tidak, perintahwgetpada bagian ini akan gagal karena tidak dapat menemukan sumber unduhan.
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
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
123456di jalur/cai/trustiflux/sample_password.Jika file tidak ditemukan, verifikasi bahwa layanan HTTP lokal dari Langkah 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/plainHasil yang Diharapkan
Setelah perintah dijalankan, terminal mengeluarkan
Filesystem mounted and ready. Jalankanls /cai/trustiflux/mount/plain. Anda dapat melihat direktoriqwen-7b-chatyang telah didekripsi.Jika
wgetmengembalikan kesalahan "Koneksi ditolak" saat mengunduh model terenkripsi, verifikasi bahwa layanan HTTP lokal dari Langkah 1
Langkah 3: Memulai dan mengakses layanan inferensi Qwen
Lakukan operasi di bagian ini di dalam third SSH terminal window.
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_envHasil yang Diharapkan
Teks
(pytorch_env)muncul sebelum prompt terminal.
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 7860Cara Mengakses: Di terminal mana pun yang dapat mengakses Alamat IP publik dari Instance ECS, gunakan perintah
curluntuk 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.

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 7860Cara 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-onlyCara Mengakses: Setelah startup, masukkan pertanyaan Anda langsung di prompt
User>di terminal. Gambar berikut menunjukkan sebuah contoh.
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.
Contoh ini menunjukkan cara berinteraksi dengan model melalui API. Sebelum memulai, pastikan layanan API yang kompatibel dengan OpenAI dari Langkah 3 sedang Berjalan.
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" } }] }'
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" ] } }] }'
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.
wgetgagal mengunduh model terenkripsi dengan kesalahan "Connection refused"Penyebab: Layanan
python3 -m http.serveryang 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/cipherdan jalankan kembali.
Tidak dapat mengakses Web UI di browser (
http://<Public IP address of the ECS instance>:7860)Penyebab dan pemecahan masalah:
Aturan grup keamanan: Verifikasi bahwa grup keamanan mengizinkan lalu lintas masuk pada Port TCP 7860 dari internet.
Alamat mendengarkan layanan: Pastikan perintah startup mencakup
--server-name 0.0.0.0.Status layanan: Di jendela terminal ketiga, verifikasi bahwa proses
web_demo.pymasih berjalan dengan benar.
Kesalahan saat mendapatkan file kunci:
{code: 111, kind: ConnectionRefused, message: "Connection refused"}Penyebab: Gunakan perintah
systemctl status trusteeuntuk memeriksa status layanan Trustee pada instans. Jika statusnya adalahinactive, layanan tidak berjalan.Solusi: Jalankan perintah
systemctl start trusteeuntuk memulai layanan Trustee.