- Mesin inferensi C++ yang ringan dan dapat dijalankan secara mandiri untuk model Gemma dari Google
- Proyek ini untuk siapa?
- Mesin inferensi model bahasa besar (LLM) modern adalah sistem kompleks dengan fitur khusus yang melampaui runtime jaringan saraf tradisional
- Ada peluang riset dan inovasi melalui ko-desain antara algoritme tingkat tinggi dan komputasi tingkat rendah, tetapi terdapat kesenjangan antara runtime inferensi C++ yang tidak dirancang untuk eksperimen dan framework riset ML yang berpusat pada Python yang mengabstraksikan komputasi tingkat rendah
- gemma.cpp menyediakan implementasi minimal untuk model Gemma 2B dan 7B, dengan fokus pada kesederhanaan dan keterusterangan alih-alih generalitas
- gemma.cpp ditujukan untuk eksperimen dan kasus penggunaan riset, dapat dengan mudah diintegrasikan ke proyek lain dengan dependensi minimal, dan mudah dimodifikasi dengan sekitar 2K LoC implementasi inti serta 4K LoC utilitas pendukung
- Memanfaatkan SIMD portabel dari Google Highway Library untuk inferensi CPU
- Untuk deployment produksi, disarankan menggunakan jalur deployment standar dengan framework Python seperti JAX, Keras, PyTorch, dan Transformers
Mulai cepat
Persyaratan sistem
- Sebelum memulai, CMake, kompiler Clang C++ (mendukung C++17 atau lebih tinggi), dan
tar untuk mengekstrak arsip dari Kaggle harus sudah terpasang
Langkah 1: Dapatkan bobot model dan tokenizer dari Kaggle
- Kunjungi halaman model Gemma di Kaggle lalu pilih
Model Variations |> Gemma C++
- Dropdown
Variation mencakup opsi bobot bfloat16 (fidelitas lebih tinggi) dan bobot floating point yang dikonversi ke 8-bit (inferensi lebih cepat)
- Umumnya disarankan memulai dengan checkpoint
-sfp
Langkah 2: Ekstrak file
- Setelah mengisi formulir persetujuan, unduh file
archive.tar.gz lalu ekstrak
- File hasil ekstraksi mencakup bobot model (misalnya
2b-it-sfp.sbs) dan file tokenizer (tokenizer.spm)
- File-file ini dapat dipindahkan ke lokasi direktori yang nyaman, misalnya direktori
build/ di repositori ini
Langkah 3: Build
- Sistem build menggunakan CMake
- Untuk membangun runtime inferensi gemma, buat direktori build lalu gunakan
cmake dari direktori proyek tingkat atas untuk menghasilkan file build
- Untuk bobot floating point yang dikonversi ke 8-bit (sfp), jalankan cmake tanpa opsi
- Jika Anda mengunduh bobot bfloat16, alih-alih menjalankan cmake tanpa opsi seperti di atas, jalankan cmake dengan mengatur WEIGHT_TYPE ke tipe
hwy::bfloat16_t milik highway
- Setelah menjalankan perintah
cmake yang sesuai, pindah ke direktori build/ lalu jalankan make untuk membangun executable ./gemma
Langkah 4: Jalankan
- Di dalam direktori
build/, Anda dapat menjalankan gemma
gemma memiliki argumen wajib, dan sebagai contoh dapat dijalankan dengan file bobot 2b-it-sfp.sbs serta file tokenizer tokenizer.spm
Cara penggunaan
gemma memiliki berbagai mode penggunaan yang dikendalikan oleh flag verbosity
- Semua mode penggunaan saat ini bersifat interaktif, dan input baris baru akan memicu pembuatan teks
Aplikasi terminal interaktif
- Secara default, verbosity diatur ke 1, dan saat
gemma dipanggil, ia menyediakan antarmuka interaktif berbasis terminal
Digunakan sebagai alat command line
- Untuk menggunakan executable
gemma sebagai alat command line, dapat berguna untuk membuat alias dengan argumen yang sudah sepenuhnya ditentukan untuk gemma.cpp
Menyertakan library gemma.cpp dalam proyek
- Cara termudah untuk menyertakan gemma.cpp dalam proyek Anda sendiri adalah menggunakan
FetchContent untuk mengambil gemma.cpp beserta dependensinya
- Anda dapat menambahkan yang berikut ke CMakeLists.txt
Build gemma.cpp sebagai library
- gemma.cpp dapat digunakan sebagai dependensi library dalam proyeknya sendiri, dan Anda dapat membangun target
libgemma untuk menghasilkan artefak shared library
Ucapan terima kasih dan kontak
- gemma.cpp dimulai pada musim gugur 2023 oleh Austin Huang dan Jan Wassenberg, dan dirilis pada Februari 2024 dengan kontribusi dari Phil Culliton, Paul Chang, dan Dan Zheng
- Ini bukan produk Google yang didukung secara resmi.
Opini GN⁺:
- gemma.cpp adalah alat yang berguna untuk bereksperimen dan melakukan riset pada model bahasa besar, serta membantu menjembatani kesenjangan dengan framework yang berpusat pada Python dengan menyediakan mesin inferensi ringan berbasis C++
- Proyek ini memberikan peluang untuk berkontribusi pada komunitas open source, sekaligus menekankan pentingnya mengikuti pedoman open source Google
- gemma.cpp dirancang agar dapat dengan mudah diintegrasikan dan digunakan oleh pengembang serta peneliti dalam proyek mereka melalui berbagai mode penggunaan, yang berpotensi mendorong inovasi di bidang AI dan ML
1 komentar
Opini Hacker News
Perkenalan Austin dan penjelasan proyek:
Pendapat tentang daya saing LLM Google:
Pertanyaan tentang build system:
Pujian atas performa Gemma:
Kekaguman terhadap kecepatan perkembangan ekosistem open source LLM:
Pertanyaan tentang format model:
Diskusi tentang kemampuan matematika LLM:
Pertanyaan tentang apakah Gemma memiliki pembatasan konten:
Ucapan terima kasih untuk gemma.cpp dan harapan akan penambahan fitur di masa depan:
Pertanyaan tentang ukuran file eksekusi model Gemma: