- Google'ın Gemma modeli için hafif, bağımsız çalışabilen bir C++ çıkarım motoru
- Bu proje kimler için?
- Modern büyük dil modeli (LLM) çıkarım motorları, geleneksel sinir ağı çalışma zamanlarının ötesine geçen özelleştirilmiş özelliklere sahip karmaşık sistemlerdir
- Üst düzey algoritmalar ile alt düzey hesaplamaların birlikte tasarlanması üzerinden araştırma ve inovasyon fırsatları olsa da, deneyler için tasarlanmamış C++ çıkarım çalışma zamanları ile alt düzey hesaplamaları soyutlayan Python merkezli ML araştırma çerçeveleri arasında bir boşluk vardır
- gemma.cpp, Gemma 2B ve 7B modellerinin minimal bir uygulamasını sunar ve genellikten çok sadelik ile doğrudanlığa odaklanır
- gemma.cpp, deney ve araştırma kullanım senaryolarını hedefler; minimum bağımlılıkla diğer projelere kolayca entegre edilebilir ve yaklaşık 2K LoC çekirdek uygulama ile 4K LoC destek yardımcı araçları sayesinde kolayca değiştirilebilir
- CPU çıkarımı için Google Highway Library'nin taşınabilir SIMD yapısından yararlanır
- Üretim dağıtımları için JAX, Keras, PyTorch ve Transformers gibi Python çerçevelerini kullanan standart dağıtım yolu önerilir
Hızlı başlangıç
Sistem gereksinimleri
- Başlamadan önce CMake, Clang C++ derleyicisi (C++17 veya üzeri desteğiyle) ve Kaggle'dan indirilen arşivi çıkarmak için
tar kurulu olmalıdır
Adım 1: Kaggle'dan model ağırlıklarını ve tokenizer'ı edinme
- Kaggle'daki Gemma model sayfasını ziyaret edip
Model Variations |> Gemma C++ seçeneğini seçin
Variation açılır menüsünde bfloat16 ağırlıkları (daha yüksek doğruluk) ve 8 bitlik ölçeklenmiş kayan nokta ağırlıkları (daha hızlı çıkarım) seçenekleri bulunur
- Genellikle başlangıç için
-sfp checkpoint'leri önerilir
Adım 2: Dosyaları çıkarma
- Onay formunu doldurduktan sonra
archive.tar.gz dosyasını indirip çıkarın
- Çıkarılan dosyalar arasında model ağırlıkları (ör.
2b-it-sfp.sbs) ve tokenizer dosyası (tokenizer.spm) yer alır
- Bu dosyaları uygun bir dizine taşıyabilirsiniz (ör. bu deponun
build/ dizini)
Adım 3: Derleme
- Derleme sistemi CMake kullanır
- gemma çıkarım çalışma zamanını derlemek için bir derleme dizini oluşturun ve en üst proje dizininde
cmake ile derleme dosyalarını üretin
- 8 bitlik ölçeklenmiş kayan nokta ağırlıkları (sfp) için
cmake komutunu ek seçenek olmadan çalıştırın
- Eğer bfloat16 ağırlıkları indirdiyseniz, yukarıdaki gibi seçeneksiz
cmake çalıştırmak yerine, WEIGHT_TYPE'ı highway'in hwy::bfloat16_t türüne ayarlayarak cmake çalıştırın
- Uygun
cmake komutunu çalıştırdıktan sonra build/ dizinine geçip make çalıştırarak ./gemma yürütülebilir dosyasını derleyin
Adım 4: Çalıştırma
build/ dizini içinde gemmayı çalıştırabilirsiniz
gemma zorunlu argümanlar alır; örneğin 2b-it-sfp.sbs ağırlık dosyası ve tokenizer.spm tokenizer dosyasıyla çalıştırılabilir
Kullanım
gemma, verbosity bayrağıyla kontrol edilen çeşitli kullanım modlarına sahiptir
- Tüm kullanım modları şu anda etkileşimlidir; yeni bir satır girişi metin üretimini tetikler
Etkileşimli terminal uygulaması
- Varsayılan olarak verbosity 1'e ayarlıdır ve
gemma çağrıldığında terminal tabanlı etkileşimli bir arayüz sunar
Komut satırı aracı olarak kullanım
gemma yürütülebilir dosyasını komut satırı aracı olarak kullanmak için, gemma.cpp için tüm argümanları tam tanımlanmış bir takma ad oluşturmak faydalı olabilir
Projeye gemma.cpp kütüphanesini dahil etme
- gemma.cpp'yi kendi projenize dahil etmenin en kolay yolu,
FetchContent kullanarak gemma.cpp'yi ve bağımlılıklarını çekmektir
- CMakeLists.txt dosyasına aşağıdakileri ekleyebilirsiniz
gemma.cpp'yi kütüphane olarak derleme
- gemma.cpp kendi projenizde bir kütüphane bağımlılığı olarak kullanılabilir ve paylaşımlı kütüphane çıktısı üretmek için
libgemma hedefi derlenebilir
Teşekkür ve iletişim
- gemma.cpp, 2023 sonbaharında Austin Huang ve Jan Wassenberg tarafından başlatıldı; Phil Culliton, Paul Chang ve Dan Zheng'in katkılarıyla Şubat 2024'te yayımlandı
- Bu, resmi olarak desteklenen bir Google ürünü değildir.
GN⁺ görüşü:
- gemma.cpp, büyük dil modelleri üzerinde deney ve araştırma yapmak için yararlı bir araçtır; C++ tabanlı hafif bir çıkarım motoru sunarak mevcut Python merkezli çerçevelerle arasındaki boşluğu kapatmaya yardımcı olur
- Bu proje, açık kaynak topluluğuna katkı sunma fırsatı verir ve Google'ın açık kaynak yönergelerine uymanın önemini vurgular
- gemma.cpp, geliştiricilerin ve araştırmacıların kendi projelerine kolayca entegre edip kullanabilmesi için çeşitli kullanım modları sunacak şekilde tasarlanmıştır; bu da AI ve ML alanlarında inovasyonu teşvik etme potansiyeli taşır
1 yorum
Hacker News görüşleri
Austin'in tanıtımı ve proje açıklaması:
Google'ın LLM alanındaki rekabet gücüne dair görüşler:
Build sistemi hakkında soru:
Gemma'nın performansına övgü:
LLM açık kaynak ekosisteminin gelişim hızına hayranlık:
Model formatları hakkında soru:
LLM'lerin matematik yeteneği üzerine tartışma:
Gemma'da içerik kısıtlaması olup olmadığına dair soru:
gemma.cpp için teşekkür ve gelecekte eklenecek özelliklere dair beklenti:
Gemma modelinin çalıştırılabilir dosya boyutuna dair soru: