Local AI

Yerel Zekayı Açığa Çıkarma: Kenar Cihazlarda Yüksek Performanslı Llama.cpp

Büyük Dil Modellerinin (LLM) demokratikleşmesi, devasa veri merkezlerinin ötesine geçerek ağlarımızın en uç noktalarına kadar yayıldı. Geliştiriciler ve hobi sahipleri için, Raspberry Pi veya modern akıllı telefonlar gibi kaynak kısıtlı donanımlarda gelişmiş AI modellerini çalıştırabilmek, gizlilik ve gecikme süresi açısından önemli bir adım temsil eder. Bu devrimin kalbinde, verimlilik ve taşınabilirliği önceliklendiren Meta'nın LLaMA mimarisinin bir C++ uygulaması olan llama.cpp yer alır.

Kenar Çıkarımının Mimarisi

4GB RAM'e sahip bir cihazda 7 milyar parametreli bir modeli çalıştırmak, standart kayan nokta hassasiyetiyle mümkün değildir. İşte burada nicelleme (quantization) kritik hale gelir. llama.cpp, modellerin doğrulukta minimum kayıpla sıkıştırılmasına olanak tanıyan GGUF (GPT-Generated Unified Format) dosyalarını kullanır. Q4_K_M (4-bit nicelleme) gibi teknikler kullanarak, modeli orijinal 16-bit kayan nokta temsiline kıyasla yaklaşık dört ila beş kat küçültebiliriz.

Kenar cihazlar için arka uç seçimi de aynı derecede önemlidir. Raspberry Pi üzerinde, ARM NEON talimatlarını veya VFPv4 kayıtlarından yararlanmak, matris çarpımlarını önemli ölçüde hızlandırabilir. Mobil donanımlarda ise, modeli JNI veya Objective-C köprüleri aracılığıyla yerel bir Android veya iOS uygulamasına entegre etmek, cihazın GPU'su veya NPU'su üzerinden donanım hızlandırma sağlar.

Raspberry Pi'de Ortamın Hazırlanması

Raspberry Pi'de (Pi 4 veya Pi 5) llama.cpp kurulumu, belirli ARM mimarisi için optimize edilmiş kaynak kodun derlenmesini gerektirir. Ön derlenmiş ikili dosyalar mevcut olsa da, kaynaktan derlemek tüm mevcut CPU çekirdeklerini ve derleyici optimizasyonlarını kullanmanızı sağlar.

İlk olarak, sisteminizin güncel olduğundan emin olun ve gerekli derleme araçlarını yükleyin:

sudo apt update
sudo apt install build-essential git wget

Depoyu klonlayın ve ARM optimizasyonu için belirli bayraklarla ikili dosyayı derleyin. Aşağıdaki komut, çok çekirdekli Pi işlemcilerinde gerçek zamanlı performans için kritik olan çoklu iş parçacıklığı için OpenMP'yi etkinleştirir:

git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make -j$(nproc) LLAMA_OPENMP=1

Derleme tamamlandıktan sonra bir main ikili dosyasına sahip olacaksınız. Bir çıkarım çalıştırmak için bir GGUF model dosyasına ihtiyacınız vardır. Bunu Hugging Face'ten indirebilir veya sağlanan dönüştürme betiklerini kullanarak kendi modelinizi dönüştürebilirsiniz. Basit bir etkileşim şöyle görünür:

./main -m models/llama-2-7b-chat.Q4_K_M.gguf -p "Merhaba, nasılsın?" -n 128

Mobil Donanım İçin Optimizasyon

Mobil cihazlara geçiş, pil ömrü ve termal yönetim konusunda kısıtlamalar getirir. Android'de, llama.cpp kütüphanesi Android NDK kullanılarak çapraz derlenebilir. Burada başarının anahtarı, bağlam uzunluğunu ve yığın boyutunu, genellikle Kotlin veya Java ön yüzünden JNI çağrıları aracılığıyla yönetilen mevcut yığın belleğine sığacak şekilde azaltmaktır.

iOS geliştiricileri için llama.cpp entegrasyonu, bir Swift paketi oluşturmayı veya köprü başlıkları aracılığıyla C++ kütüphanesini bağlamayı içerir. Apple'ın Core ML çerçevesi, GGUF modellerini .mlprogram

Sonuç

LLM'leri kenar cihazlara dağıtmak artık bilim kurgu değil; orta düzey geliştiriciler için pratik bir gerçektir. llama.cpp, ağır bulut modelleri ile hafif kenar donanımları arasındaki boşluğu doldurmak için gerekli araçları sağlar. Nicelleme ve donanım-a özgü optimizasyonları ustalaşarak, kullanıcının cihazında doğrudan çalışan gizliliği koruyan, düşük gecikmeli AI uygulamaları oluşturabilirsiniz. Donanım yetenekleri büyümeye devam ettikçe, cihaz içi zekanın potansiyeli de genişleyecek ve llama.cpp, modern geliştiricinin araç setinde vazgeçilmez bir araç haline gelecektir.

Share: