Large language models (LLMs) kini menjadi bagian integral di berbagai domain teknologi, dengan sebagian besar produk kini memasukkan fitur berbasis LLM. Namun, menerapkan model ini pada perangkat pribadi seperti laptop, desktop, atau ponsel pintar menghadapi hambatan besar karena keterbatasan perangkat keras.
Sebagai respons, tim PyTorch memperkenalkan Torchchat, sebuah kerangka kerja yang fleksibel untuk meningkatkan efisiensi LLM di berbagai platform perangkat keras. Pendekatan terobosan ini memudahkan pemrosesan lokal yang efektif pada beragam perangkat, sehingga berpotensi membuat model AI canggih lebih mudah diakses.
PyTorch adalah kerangka kerja pembelajaran mesin sumber terbuka terkemuka yang dikembangkan oleh Facebook's AI Research Lab (FAIR). PyTorch mendukung berbagai aplikasi, termasuk visi komputer dan pemrosesan bahasa alami.
Dalam artikel ini, kami akan memberikan gambaran kemampuan Torchchat dan mempelajari cara menyiapkannya secara lokal.
Kemampuan Torchchat
Torchchat menawarkan empat fungsi utama:
- Menjalankan LLM menggunakan Python dengan PyTorch.
- Menjalankan model mandiri pada aplikasi desktop atau server tanpa Python.
- Menjalankan model pada perangkat seluler.
- Mengevaluasi kinerja model.
Menjalankan LLM menggunakan Python dengan PyTorch
Mode ini memungkinkan menjalankan LLM pada mesin yang telah terpasang Python dan PyTorch. Kita dapat berinteraksi dengan model langsung di terminal atau dengan menyiapkan server menggunakan REST API. Inilah yang akan menjadi fokus penyiapan dalam artikel ini.
Menjalankan model mandiri
Torchchat menggunakan AOT Inductor (Ahead-of-Time Inductor) untuk membuat executable yang mandiri dan dapat didistribusikan bagi program inferensi PyTorch, khususnya dalam bentuk pustaka dinamis tanpa ketergantungan pada Python dan PyTorch.
Pendekatan ini memenuhi kebutuhan penerapan model di lingkungan produksi yang menuntut stabilitas runtime model di tengah pembaruan dan perubahan pada lingkungan penyajian, memastikan model tetap beroperasi tanpa perlu kompilasi ulang.
AOT Inductor berfokus pada optimalisasi penerapan model dengan memungkinkan format distribusi biner yang efisien, cepat dimuat, dan siap dijalankan, mengatasi keterbatasan dan overhead yang terkait dengan format teks seperti TorchScript. Teknologi ini memanfaatkan teknik generasi kode dan optimalisasi untuk kinerja CPU dan GPU, dengan tujuan mengurangi overhead dan meningkatkan kecepatan eksekusi.
Menjalankan di perangkat seluler
Untuk eksekusi pada perangkat seluler, Torchchat memanfaatkan ExecuTorch. Serupa dengan AOT Inductor, ExecuTorch mengoptimalkan model untuk dijalankan pada perangkat seluler atau tertanam. Ia menghasilkan artefak PTE yang nantinya dapat digunakan untuk mengeksekusi model.
Mengevaluasi model
Mode evaluasi Torchchat dapat digunakan untuk menilai kinerja LLM pada berbagai tugas yang tersedia di lm_eval. Ini merupakan fitur penting bagi peneliti yang ingin mengevaluasi model baru mereka pada tolok ukur yang umum digunakan.
Mengapa Menggunakan Torchchat
Menjalankan LLM secara lokal alih-alih mengandalkan API cloud pihak ketiga seperti API OpenAI menghadirkan beragam kasus penggunaan dan manfaat, sesuai berbagai kebutuhan dan skenario.
- Aplikasi yang sensitif terhadap privasi: Untuk industri yang menangani data sensitif, seperti kesehatan, keuangan, dan hukum, menjalankan LLM secara lokal memastikan informasi rahasia tidak keluar dari infrastruktur organisasi, sejalan dengan regulasi perlindungan data.
- Aplikasi waktu nyata: Aplikasi yang memerlukan respons berlatensi rendah, seperti chatbot interaktif, pembuatan konten waktu nyata, dan sistem pemantauan langsung, dapat memperoleh manfaat dari menjalankan LLM secara lokal, menghilangkan latensi yang ditimbulkan oleh transmisi jaringan ke dan dari API cloud.
- Skenario luring atau konektivitas rendah: Di lingkungan dengan konektivitas internet buruk atau tidak ada, penerapan lokal memungkinkan penggunaan aplikasi LLM, seperti untuk riset lapangan, pendidikan jarak jauh, dan sistem hiburan dalam penerbangan.
- Pengendalian dan optimalisasi biaya: Untuk kasus volume tinggi atau penggunaan berkelanjutan, penerapan lokal bisa lebih hemat biaya, menghindari model harga per permintaan dari API cloud dan berpotensi memanfaatkan sumber daya komputasi yang sudah ada.
Jika Anda tertarik mempelajari lebih lanjut tentang menjalankan model AI secara lokal pada perangkat alih-alih di cloud, saya merekomendasikan tulisan blog tentang Edge AI ini.
Penyiapan Lokal dengan Python
Mari menyiapkan Torchchat secara lokal langkah demi langkah. Kita mulai dengan mengkloning repositori Torcchat.
Kloning atau unduh kodenya
Langkah pertama dalam menyiapkan Torchchat secara lokal adalah mengkloning repositori Torchchat. Dengan Git terpasang, kita dapat mengkloning repositori dengan membuka terminal dan menjalankan perintah:
git clone git@github.com:pytorch/torchchat.git
Sebagai alternatif, kita dapat mengunduh repositori menggunakan antarmuka Github.

Instalasi
Kami mengasumsikan Python 3.10 sudah terpasang. Untuk panduan cara memasang Python, lihat artikel ini.
Untuk memasang Torchchat, buka terminal di folder Torchchat. Kita mulai dengan membuat lingkungan virtual:
python -m venv .venv
Singkatnya, lingkungan virtual adalah direktori mandiri untuk sebuah proyek, yang berisi direktori instalasi untuk pustaka dan paket Python, dan terkadang bahkan versi Python tertentu. Ini memastikan setiap proyek memiliki versi perangkat lunak yang tepat untuk dijalankan, tanpa gangguan dari proyek lain beserta kebutuhannya.
Setelah lingkungan virtual dibuat, kita perlu mengaktifkannya. Kita dapat melakukannya dengan perintah:
source .venv/bin/activate
Terakhir, kita perlu menyiapkan lingkungan dengan memasang semua dependensi yang diperlukan agar Torchchat dapat berjalan. Torchchat menyediakan skrip instalasi, install_requirements.sh, yang dapat kita jalankan dengan perintah:
./install_requirements.sh
Kini Torchchat seharusnya sudah terpasang dan siap digunakan. Kita dapat memverifikasi instalasi dengan mencantumkan perintah Torchchat yang tersedia, seperti ini:
python torchchat.py --help
Menggunakan Torchchat Secara Lokal dengan Python
Dengan Torchchat terpasang, kita dapat mulai menjalankan LLM di mesin lokal.
Mencantumkan semua model yang didukung
TorchChat mendukung beragam LLM. Kita dapat mencantumkan model yang didukung menggunakan perintah list:
python torchchat.py list
Daftar lengkap model dapat ditemukan di repositori GitHub mereka.

Bagian “Notes” memberikan informasi berguna tentang model, seperti kasus penggunaan terbaik dan alias model yang digunakan untuk menentukan model saat memakai perintah Torchchat.
Mengunduh model
Torchchat menggunakan Hugging Face sebagai saluran distribusi model. Hugging Face adalah platform kolaboratif dengan alat yang memberdayakan siapa pun untuk membuat, melatih, dan menerapkan model NLP dan ML menggunakan kode sumber terbuka. Untuk mempelajarinya lebih lanjut, lihat tulisan blog tentang Apa itu Hugging Face.
Sebelum mengunduh model, kita perlu:
- Memasang antarmuka baris perintah Hugging Face
- Membuat akun di Hugging Face
- Membuat token akses
- Masuk menggunakan antarmuka baris perintah Hugging Face
Untuk memasang antarmuka baris perintah Hugging Face, kita gunakan pip:
pip install huggingface_hub
Selanjutnya, kita dapat membuka situs Hugging Face untuk membuat akun. Setelah membuat akun, kita dapat membuat token akses dengan membuka pengaturan profil:

Di profil, kita dapat membuka menu “Access Tokens” untuk membuat token baru:

Terkait izin token, izin baca sudah cukup untuk artikel ini. Perhatikan bahwa saat token dibuat, kita harus menyalinnya ke papan klip karena nanti tidak akan bisa melihatnya lagi.
Dengan menggunakan token, kita dapat masuk menggunakan perintah berikut:
huggingface-cli login
Setelah masuk, kita dapat mengunduh model menggunakan perintah download. Perlu diingat beberapa model bisa sangat besar, jadi pastikan ruang disk Anda cukup. Untuk tujuan ilustrasi, kita akan menggunakan model stories15M, sebuah model kecil untuk pembuatan cerita. Ini adalah model yang baik untuk memulai karena cepat diunduh dan tidak memerlukan izin khusus.
Untuk mengunduhnya, lakukan:
python torchchat.py download stories15M
Menjalankan model
Setelah mengunduh model, kita dapat menggunakan perintah chat atau generate. Untuk menghasilkan teks, kita perlu memberikan prompt menggunakan argumen --prompt. Berikut contohnya:
python torchchat.py generate stories15M --prompt “Once upon a time”
Perintah di atas akan menginstruksikan Torchchat untuk menghasilkan teks menggunakan model stories15M dengan prompt ”Once upon a time”.
Untuk menjalankan model dalam mode chat, gunakan perintah chat tanpa prompt.
python torchchat.py chat stories15M
Perintah chat akan memulai obrolan interaktif di terminal tempat kita dapat berbincang bolak-balik dengan LLM. Perhatikan bahwa beberapa model lebih cocok digunakan dengan mode generate, sementara yang lain lebih cocok untuk mode chat. Informasi ini tersedia di bagian “Notes” pada dokumentasi model.
Meminta akses ke model
Beberapa model seperti llama3 memerlukan akses khusus untuk diunduh. Jika kita mencoba mengunduh model seperti itu, kita akan mendapatkan pesan kesalahan:
Access to model meta-llama/Meta-Llama-3-8B-Instruct is restricted and you are not in the authorized list. Visit https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct to ask for access.
Kita dapat meminta akses dengan mengikuti URL yang disediakan dalam pesan kesalahan. Kita perlu mengisi formulir singkat dengan informasi pribadi dan menyetujui ketentuan layanan. Anda akan menerima email setelah akses diberikan.

Penggunaan Lanjutan
Torchchat menyediakan beberapa opsi tambahan saat menjalankan LLM secara lokal, sehingga memungkinkan penyesuaian dengan kebutuhan dan perangkat keras kita. Mari jelajahi beberapa opsi ini.
Mengendalikan presisi
LLM sangat bergantung pada perkalian matriks, yang melibatkan perkalian banyak bilangan floating point. Terdapat beberapa tipe data untuk merepresentasikan bilangan floating point di komputer dengan presisi yang berbeda-beda.
Presisi yang lebih tinggi dapat memastikan nuansa yang ditangkap selama pelatihan tetap tercermin dengan baik saat inferensi, terutama untuk tugas kompleks atau pemahaman bahasa yang bernuansa. Namun, menggunakan angka berpresisi tinggi dapat memperlambat inferensi secara signifikan. Tipe data yang tepat bergantung pada kompromi antara kecepatan dan akurasi.
Untuk menetapkan tipe data saat menjalankan LLM, kita dapat menggunakan parameter --dtype, misalnya:
python torchchat.py chat --dtype fast stories15M
Kompilasi Just-In-Time
Flag --compile mengaktifkan kompilasi Just-In-Time (JIT) pada model. JIT mengacu pada teknik untuk mengoptimalkan kinerja inferensi dengan mengompilasi secara dinamis bagian-bagian model ke kode tingkat mesin saat runtime, alih-alih menafsirkannya setiap kali dieksekusi. Pendekatan ini dapat meningkatkan efisiensi dan kecepatan secara signifikan untuk model yang berjalan di berbagai platform perangkat keras.
Menggunakan JIT akan menyebabkan waktu mulai lebih lama karena langkah kompilasi tambahan, tetapi inferensi akan berjalan lebih cepat. Begini cara menggunakan chat bersama JIT:
python torchchat.py chat --compile stories15M
Perhatikan bahwa opsi ini mungkin tidak didukung pada semua jenis perangkat keras. Dalam kasus tersebut, Torchchat akan mengabaikan langkah kompilasi dan menjalankan LLM tanpanya.
Kuantisasi
Kuantisasi adalah teknik untuk mengurangi ukuran model dan meningkatkan kecepatan inferensi tanpa secara signifikan mengorbankan performa atau akurasi. Ini sangat penting untuk menerapkan LLM di perangkat edge atau di lingkungan dengan sumber daya komputasi, memori, dan bandwidth terbatas.
Singkatnya, kuantisasi melibatkan konversi bobot dan aktivasi jaringan saraf dari representasi floating point (biasanya float 32-bit) ke representasi bit yang lebih rendah, seperti integer 16-bit, integer 8-bit, atau bahkan representasi biner pada beberapa kasus.
Ini berbeda dengan menetapkan presisi menggunakan --dtype. Kuantisasi bekerja langsung pada bobot model, menciptakan model yang lebih kecil, sementara tipe data menentukan jenis data yang digunakan dalam perhitungan inferensi.
Menggunakan kuantisasi di Torchchat memerlukan berkas konfigurasi JSON dan dapat digunakan seperti ini:
python torchchat.py chat --quantize config.json stories15M
Untuk detail lebih lanjut tentang format berkas konfigurasi config.json atau cara kerja kuantisasi di Torchchat, lihat halaman dokumentasi kuantisasi mereka.
Spesifikasi perangkat
Kita dapat menentukan perangkat yang digunakan untuk mengeksekusi LLM dengan opsi --device. Misalnya, untuk menjalankannya di CUDA, kita gunakan:
python torchchat.py chat --device cuda stories15M
Kesimpulan
Torchchat adalah langkah besar dalam demokratisasi inferensi LLM. Alat ini memudahkan siapa pun untuk menjalankan LLM secara efisien di berbagai perangkat.
Torchchat menawarkan jauh lebih banyak kemampuan daripada yang kami perkenalkan dalam artikel ini. Kami telah memberikan penjelasan yang diperlukan agar siapa pun dapat mulai menjalankan LLM secara lokal di komputer mereka menggunakan Python dan PyTorch. Saya sangat mendorong Anda untuk mengeksplorasi Torchchat lebih lanjut.

