Oleh JV Roig
Ada tiga cara umum untuk menyebarkan dan menggunakan layanan AI generatif di Alibaba Cloud:
• IaaS (Infrastruktur sebagai Layanan)
• PaaS (Platform sebagai Layanan)
• MaaS (Model sebagai Layanan)
Di bagian 1 ini, kita akan membahas tentang pendekatan pertama: IaaS
Dalam penyebaran IaaS, keuntungan utamanya adalah memberikan Anda kontrol 100% terhadap seluruh tumpukan. Ini termasuk:
• Sistem Operasi
• Jenis dan Ukuran Instans
• Perangkat lunak server LLM (misalnya, Hugging Face, vLLM, llama.cpp, dll)
• Pilihan model (boleh model apa pun)
Anda juga dapat dengan mudah mengontrol aplikasi atau perangkat lunak lainnya yang Anda inginkan berada dalam VM yang sama dengan tumpukan GenAI Anda.
Ini mungkin terdengar luar biasa (dan memang), tetapi seperti kata pepatah: "Kekuatan besar selalu diiringi dengan tanggung jawab besar!"
Ada beban manajemen yang besar terlibat dalam penyebaran IaaS. Kini Anda bertanggung jawab atas sejumlah besar hal, termasuk:
• Keamanan, penambalan, dan pemeliharaan OS
• Keamanan, penambalan, dan pemeliharaan perangkat lunak server LLM
• Infrastruktur penskalaan performa dan penyeimbangan beban
Jika Anda sudah berinvestasi dalam pendekatan khusus untuk AI generatif (misalnya, jika Anda dan tim Anda sudah ahli dalam menyebarkan fitur AI generatif menggunakan llama.cpp), penyebaran IaaS GenAI sangat cocok untuk kasus penggunaan Anda. Anda akan mendapatkan 100% fleksibilitas yang Anda butuhkan, dengan konsekuensinya harus mengelola seluruh tumpukan.
Sekarang, mari kita mulai menyebarkan AI generatif melalui pendekatan IaaS.
Layanan utama di sini tentu saja adalah penawaran IaaS unggulan dari Alibaba Cloud – Elastic Compute Service (ECS).
Secara khusus, kami akan menggunakan instans yang didukung GPU untuk meng-hosting platform OS dan AI generatif pilihan kami.
Dalam tutorial ini, pilihan teknologi utama adalah:
• Ubuntu 22.04 LTS untuk sistem operasi (sangat kompatibel dengan NVIDIA CUDA)
• llama.cpp sebagai perangkat lunak server LLM (lihat halaman github komunitas: https://github.com/ggerganov/llama.cpp)
• Jenis instans ECS dengan T4 GPU (P100, V100 atau A10 juga bisa; T4 memang murah dan tersedia, tetapi cukup bagus untuk keperluan kita dalam tutorial ini)
Baiklah, mari kita mulai!
Pada gambaran umum konsol ECS, buat instans baru dengan mengklik Buat Instans. Ini tempat kita akan membuat instans yang didukung GPU dengan Ubuntu 22.04 LTS sebagai sistem operasinya.
Berikut adalah langkah-langkah umumnya:
• Pilih Bayar sesuai penggunaan sebagai Metode Penagihan
• Pilih wilayah yang Anda inginkan. Dalam contoh ini, saya menggunakan Singapura.
• Untuk jaringan dan Zona, pilih VPC default, Zona apa pun yang tersedia, dan vSwitch default dalam zona tersebut.
• Di bawah Instans & Gambar, klik Semua Jenis Instans.
• Untuk Arsitektur, klik kotak GPU/FPGA/ASIC, untuk memfilter instans agar hanya menampilkan instans dengan akselerator yang diiginkan
• Anda akan melihat daftar yang sama dengan tangkapan layar di atas. Pilih instance murah yang memiliki satu T4 (dengan 16 GB GPU RAM), atau apa pun yang tersedia dalam zona yang Anda pilih. Untuk memastikan demo kita berfungsi, dapatkan GPU yang memiliki setidaknya 16 GB RAM GPU.
• Core CPU bisa 8 atau lebih, dan RAM sistem bisa 16 GB atau lebih.
• Untuk Gambar, pilih Gambar Publik, lalu Ubuntu. Pilih Ubuntu 22.04 64-bit dalam daftar versi, dan biarkan Pengerasan Keamanan Gratis tercentang.
• Di bawah Penyimpanan, Anda mungkin perlu Disk Sistem dengan kapasitas 1 TB atau lebih – bagaimanapun juga, LLM itu sangat besar. Atur ukurannya dengan tepat. Jika Anda tidak yakin, cukup masukkan 1024 GiB (1 TB).
• Untuk Bandwidth dan Grup Keamanan, pastikan untuk mencentang Tetapkan Alamat IPv4 Publik.
• Pilih Bayar sesuai lalu lintas, dan pilih 100 Mbps sebagai bandwidth maksimum. Kita akan mengunduh beberapa file besar (LLM sangat besar), sehingga kita akan memanfaatkan bandwidth 100 Mbps tersebut.
• Agar nantinya kita dapat melakukan SSH ke dalam instans, kita harus menyiapkan Pasangan Kunci. Pilih ecs-user sebagai nama pengguna masuk (agar tidak masuk sebagai root).
• Jika Anda belum memiliki pasangan kunci yang tersedia, klik Buat Pasangan Kunci, lalu refresh daftar setelah membuat pasangan kunci.
• Terakhir, terima ketentuan layanan ECS di sebelah kanan, dan klik Buat Pesanan.
Karena kita telah instans yang sudah aktif, waktunya untuk terhubung ke instans tersebut sehingga kita dapat menyiapkan perangkat lunak yang diperlukan.
Di sini, kita akan menggunakan koneksi jarak jauh Workbench, fitur default di ECS yang memungkinkan kita melakukan SSH ke instans menggunakan Pasangan kunci yang kita masukkan. Kemudian, kita akan memperbarui OS, memverifikasi bahwa Python telah diinstal, lalu menginstal driver NVIDIA dan CUDA.
• Untuk terhubung ke instans, buka daftar instans (Konsol ECS -> Instans & Gambar -> Instans).
• Anda seharusnya melihat instans yang baru diluncurkan dalam daftar ini. Di bawah kolom Tindakan, klik opsi Terhubung, dan pilih Masuk sekarang*.
• Pilih IP Publik untuk koneksi, Autentikasi Kunci SSH, dan gunakan ecs-user sebagai nama pengguna.
• Untuk kunci privat, klik kotak untuk memilih kunci privat tersimpan. (Anda harus menyimpan ini saat membuat pasangan kunci Anda)
Selamat! Anda akan mendapati diri Anda dalam jendela SSH yang bagus di browser, dan Anda dapat mulai mengonfigurasikan perangkat lunak.
Pertama, mari kita perbarui OS dengan perintah berikut:
• sudo apt update
• sudo apt upgrade
Mari kita verifikasi Python sudah terinstal. Periksa versi Python dengan perintah berikut:
• python3 --version
Anda harus melihat Python 3.10.12 atau serupa
Bagian yang paling menantang adalah: menginstal driver NVIDIA dan CUDA.
1. Pertama, kita membutuhkan header Linux untuk dapat membangun driver:
sudo apt-get install linux-headers-$(uname -r)
2. Kemudian ikuti langkahnya di sini: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local
Mulai dengan perintah Base Installer (satu per satu), kemudian perintah Driver Installer (gunakan legacy kernel modul flavor)
Jika Anda tidak memilih opsi bandwidth maksimum saat konfigurasi peluncuran instans ECS, waktu yang diperlukan lebih lama dari seharusnya (mengunduh beberapa GB NV)
3. Setelah Penginstalan Driver, jalankan:
echo export PATH=/usr/local/cuda-12.5/bin${PATH:+:${PATH}} >> .bashrc
4. Boot ulang instans Anda (perintah: sudo reboot) dan hubungkan ulang.
5. Periksa keberadaan CUDA:
nvcc –version
Anda akan melihat yang seperti ini:
6. Periksa keberadaan driver NV:
nvidia-smi
Anda akan melihat yang seperti ini:
Selamat untuk Anda jika telah melakukannya sejauh ini! Anda telah berhasil menginstal driver NVIDIA dan CUDA –Anda kini siap untuk menggunakan kekuatan penuh instans untuk AI generatif!
Untuk tutorial ini, mari kita gunakan proyek komunitas yang sangat populer – llama.cpp.
1. Instal llama.cpp
Perintah penginstalan:
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make -j 8 GGML_CUDA=1
(make -j 8 berarti menggunakan 8 thread untuk kompilasi. Jika instans Anda memiliki lebih dari 8 vcore, naikkan jumlah ini untuk menggunakan sebanyak mungkin vcore yang dimiliki instans Anda)
(Proses ini perlu waktu beberapa saat, tunggu saja)
2. Unduh sebuah LLM untuk menguji penginstalan kita:
cd models
wget https://huggingface.co/Qwen/Qwen1.5-7B-Chat-GGUF/resolve/main/qwen1_5-7b-chat-q4_k_m.gguf
3. Uji inferensi menggunakan model yang kita unduh:
cd ..
./main -m models/qwen1_5-7b-chat-q4_k_m.gguf -p "Pertanyaan: Jelaskan kepada saya tentang Alibaba Cloud. Saya adalah eksekutif bisnis non-teknis. Jawaban:" -ngl 999 -c 1000 -n 2000
Output seharusnya seperti ini.
Di sini, kita mengunduh versi terkuantisasi (yaitu terkompresi) dari LLM kecil, Qwen1.5 7B-chat, dalam format GGUF.
Jika Anda telah menggunakan model GGUF tertentu, ini saatnya untuk mengunduh model tersebut ke dalam instans Anda untuk menggunakannya.
Tentu saja, tujuan sebenarnya dari penyebaran GenAI adalah memiliki server LLM yang menyediakan akses API sehingga aplikasi kita dapat menggunakan fitur AI generatif.
Pada Langkah 3, kita menginstal llama.cpp, mengunduh satu atau beberapa model, kemudian melakukan beberapa inferensi lokal.
Sekarang, kita akan menggunakan llama.cpp dalam mode server:
./llama-server -m [model_path/model_name.gguf] -ngl 999 --host 0.0.0.0 --port 8080 --api-key [your-desired-api-key]
Catatan: --port 8080 menjelaskan bahwa port 8080 VM akan digunakan oleh server. Untuk memastikan aplikasi Anda dapat mengakses server llama.cpp, Anda harus menambahkan akses 8080 dalam grup keamanan VM Anda, atau menentukan nomor port berbeda yang telah Anda masukkan dalam daftar putih di grup keamanan Anda.
Opsi lainnya:
-cb
= mengaktifkan proses batch kontinu (disarankan)-fa
= mengaktifkan flash attention (diperlukan untuk Qwen2, misalnya)-np N
= mengaktifkan slot secara paralel, memisahkan ukuran konteks maksimum berdasar N sebagai hasil (tidak disarankan untuk model berukuran konteks kecil); will meningkatkan pengalaman pengguna untuk beberapa permintaan.
Pengingat:
Untuk server llama.cpp, terapkan templat obrolan yang benar, jika tidak, LLM akan "melihat" pembatas obrolan yang tidak diketahui dan berpikir itu adalah bagian dari konten, sehingga LLM melakukan percakapan sendiri, membuang siklus GPU. Contoh:
• Untuk llama2, --chat-template llama2
harus ditambahkan ke pemanggilan server.
• Untuk llama3 menggunakan llama3
, openai-like adalah chatml
• Lihat: https://github.com/ggerganov/llama.cpp/wiki/Templates-supported-by-llama_chat_apply_template
Berikut adalah contoh pemanggilan server yang tepat menggunakan instruksi Llama 3 8B:
llama.cpp/llama-server -m LLMs/gguf/Meta-Llama-3-8B-Instruct-v2.Q5_K_M.gguf -ngl 999 -cb -np 3 --host 0.0.0.0 --port 8080 --api-key myapikey --chat-template llama3
Dalam contoh di atas, kita menetapkan templat obrolan yang benar, dan menggunakan -ngl 999 untuk meminta server melepas untuk memindahkan semua lapisan ke GPU, demi mendapatkan performa maksimum.
Berikut adalah contoh menggunakan Qwen2:
llama.cpp/llama-server -m LLMs/gguf/qwen2-7b-instruct-q5_k_m.gguf -ngl 999 -fa -cb -np 3 --host 0.0.0.0 --port 8080 --api-key myapikey
Dalam contoh di atas menggunakan Qwen2 di llama.cpp, kita menggunakan flash attention melalui bendera -fa (diperlukan untuk Qwen2). Tidak perlu menentukan templat obrolan, karena ini menggunakan default yang didukung oleh llama.cpp
Setelah server llama.cpp telah aktif (perlu beberapa saat untuk memulai pemuatan model pertama kalinya, jadi harap bersabar). Hal terakhir yang harus dilakukan adalah mengakses server API melalui kode!
Kita memerlukan pustaka Python klien OpenAI, jadi kita instal itu terlebih dahulu menggunakan pip:
pip install openai
Berikut adalah contoh kode Python untuk terhubung ke instans Anda:
Keunggulan server llama.cpp adalah bahwa server ini menyediakan server API yang kompatibel dengan OpenAI. Artinya, jika Anda atau tim Anda sudah memiliki banyak kode yang menggunakan gaya API OpenAI, menggunakan instans Alibaba Cloud yang didukung llama.cpp. akan menjadi mudah. Selain mengonfigurasi host, port, dan kunci API yang benar, setiap kode yang sudah ada sebagian besar tidak berubah dan langsung berfungsi.
Di atas, Anda dapat melihat output sampel ketika saya menjalankan kode. Ini mengikuti perintah sistem, sehingga jawabannya seperti bajak laut, yang memberi saran apa yang bisa saya lakukan ketika saya berlibur dan berlayar.
Bagian 1 memang perjalanan yang menyenangkan! Kita membuat instans ECS, menginstal driver NVIDIA dan CUDA sehingga kita dapat menggunakan GPU dalam instans kita, dan kemudian kita menginstal dan mengonfigurasi server llama.cpp milik kita.
Pada akhirnya, kita memiliki instans privat khusus yang menyediakan server API yang kompatibel dengan OpenAI yang memungkinkan kita mengintegrasikan kemampuan AI generatif dengan mudah ke aplikasi kita.
Berikutnya di bagian 2: Cara yang lebih mudah dan cepat untuk menyebarkan AI generatif, dengan lebih sedikit langkah dan lebih sedikit beban manajemen!
TENTANG PENULIS: JV adalah seorang Arsitek Solusi Senior di Alibaba Cloud PH, dan memimpin strategi data dan AI generatif tim. Jika Anda merasa sesuatu dalam artikel ini relevan dengan beberapa masalah bisnis Anda saat ini, silakan hubungi JV di jv.roig@alibaba-inc.com.
Artikel ini diterjemahkan dari bahasa Inggris. Lihat artikel aslinya di sini.
72 posts | 3 followers
FollowRegional Content Hub - September 2, 2024
Regional Content Hub - September 2, 2024
Regional Content Hub - May 6, 2024
Regional Content Hub - April 1, 2024
Regional Content Hub - June 24, 2024
Regional Content Hub - August 19, 2024
72 posts | 3 followers
FollowElastic and secure virtual cloud servers to cater all your cloud hosting needs.
Learn MorePowerful parallel computing capabilities based on GPU technology.
Learn MoreTop-performance foundation models from Alibaba Cloud
Learn MoreApply the latest Reinforcement Learning AI technology to your Field Service Management (FSM) to obtain real-time AI-informed decision support.
Learn MoreMore Posts by Regional Content Hub