Gemma.cpp: Gemma modeli için hafif ve bağımsız bir C++ çıkarım motoru
(github.com/google)- 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
tarkurulu 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 Variationaçı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
-sfpcheckpoint'leri önerilir
Adım 2: Dosyaları çıkarma
- Onay formunu doldurduktan sonra
archive.tar.gzdosyası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
cmakeile derleme dosyalarını üretin - 8 bitlik ölçeklenmiş kayan nokta ağırlıkları (sfp) için
cmakekomutunu 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'inhwy::bfloat16_ttürüne ayarlayarakcmakeçalıştırın - Uygun
cmakekomutunu çalıştırdıktan sonrabuild/dizinine geçipmakeçalıştırarak./gemmayürütülebilir dosyasını derleyin
Adım 4: Çalıştırma
build/dizini içindegemmayı çalıştırabilirsinizgemmazorunlu argümanlar alır; örneğin2b-it-sfp.sbsağırlık dosyası vetokenizer.spmtokenizer 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
gemmayü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,
FetchContentkullanarak 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
libgemmahedefi 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: