7 puan yazan GN⁺ 2024-01-01 | 1 yorum | WhatsApp'ta paylaş
  • Emacs Copilot, yerelde çalışan bir LLM (Large Language Model) kullanarak Emacs tamponu içinde kod tamamlama üretir.
  • LLM, dosya bazında yerel düzenleme geçmişini hatırlayan bir alt komut olarak çalışır ve C-g kullanılarak istenildiği zaman durdurulabilir.
  • Kod silinirken, LLM bağlamındaki ilgili geçmiş de silinebilir; programlama dili dilden bağımsız olarak dosya uzantısına göre belirlenir.

WizardCoder 34b modeli

  • WizardCoder 34b, GPT-4 ile aynı HumanEval puanını almış güçlü bir LLM'dir.
  • Bu modeli kullanmak için Mac Studio M2 Ultra gibi güçlü bir bilgisayar gerekir; Macbook Pro kullanıcıları Q3 sürümünü, genel PC kullanıcıları ise WizardCoder-Python-13b modelini değerlendirebilir.
  • Raspberry Pi gibi daha düşük işlem gücüne sahip kullanıcılar Phi-2 modelini kullanabilir.

Başlangıç

  • Fonksiyonun ilk satırını yazdıktan sonra C-c C-k tuşlarına basarak kontrolü LLM'e verebilir, geri kalan fonksiyon uygulamasını onun üretmesini sağlayabilirsiniz.
  • LLM, fonksiyon tamamlandığında duracak şekilde ayarlanmıştır; açıklama veya ELI5 (kolay anlaşılır) yorumlardan kaçınır.

Referans uygulama

  • LLM'i indirdikten sonra aşağıdaki kodu Emacs tamponuna kopyalayıp M-x eval-buffer çalıştırmanız yeterlidir.
  • Kodu kişisel tercihlerinize göre ayarlayabilirsiniz.

Emacs indirme bağlantısı

  • Emacs kurulu değilse veya Windows gibi edinmesi zor bir platform kullanıyorsanız, kurulum gerektirmeden çalıştırılabilen tek dosyalık Emacs derlemesine bağlantı sunulur.

LLM indirme bağlantısı

  • Emacs Copilot ile iyi çalıştığı bilinen bazı LLM'leri ücretsiz indirmek için bağlantılar sunulur.
  • Model boyutunu donanımınıza uygun şekilde seçebilirsiniz.

Önbellek dosyaları

  • Modeli değiştirmeye karar verirseniz, yerel dosya sisteminde oluşturulan tüm FILE.cache dosyalarını silmeniz gerekir.

Dikkat edilmesi gerekenler

  • macOS üzerinde Apple Silicon kullanıyorsanız Xcode kurulu olmalıdır.
  • zsh kullanıyorsanız çalıştırmak için sh -c ./llamafile kullanmanız gerekebilir.
  • Bazı Linux sistemlerinde binfmt_misc kaydıyla ilgili hatalar oluşabilir.

Desteklenen işletim sistemleri ve CPU'lar

  • llamafile, asgari kurulum gereksinimleriyle birden fazla işletim sistemini destekler.
  • llamafile belirli CPU'ları destekler; SSSE3 veya üzeri komut setine sahip AMD64 mikroişlemci ya da ARMv8a+ destekli ARM64 mikroişlemci gerekir.

Modelle ilgili notlar

  • Yukarıda verilen llamafile örnekleri, belirli modeller, lisanslar veya veri setleri için Mozilla'nın desteği ya da tavsiyesi olarak yorumlanmamalıdır.

GN⁺'nin görüşü

  • Yenilikçi düzenleme deneyimi: Emacs Copilot, geliştiricilere yeni bir kodlama yardım düzeyi sunarak verimlilik ve üretkenliği ciddi biçimde artırma potansiyeline sahiptir.
  • Erişilebilirlik ve özelleştirme: Kullanıcılar ihtiyaçlarına ve tercihlerine göre LLM seçip Emacs ortamını ayarlayabilir; bu da kişiselleştirilmiş bir geliştirme ortamı kurmayı mümkün kılar.
  • Teknik uyumluluk: Farklı işletim sistemleri ve CPU'ları desteklemesi sayesinde Emacs Copilot geniş bir kullanıcı kitlesi tarafından kullanılabilir; bu da geliştirici topluluğunda kapsayıcılığı ve erişilebilirliği artırır.

1 yorum

 
GN⁺ 2024-01-01
Hacker News görüşleri
  • LLM/IDE entegrasyonunun faydasına dair şüphe

    LLM/IDE entegrasyonunun genel kodlama işlerinde büyük bir verimlilik artışı sağlayacağından emin değilim. Programcıların ortalama üretkenliği günde yaklaşık 100 LOC civarında, ancak prototip geliştirirken günde 1000 LOC'den fazlasını rahatlıkla yazabilirsiniz. Üretim kalitesindeki kod ile hackleme/prototipleme üretkenliği arasındaki fark kaliteyle ilgilidir ve çoğu yetkin programcı, LLM'den ya da başka kaynaklardan kopyalanmış koda kıyasla kendi yazdığı kodla daha yüksek kaliteli sonuç üretir. Kodu analiz etmek, zafiyet olmadığını ve gelecekteki bakım için tasarımın uygun olduğunu doğrulamak için gereken zamanın, kodu doğrudan yazmayarak elde edilen zaman kazancını ortadan kaldıracağını düşünüyorum. LLM kullanmak öğrenme amacıyla ya da kalitenin önemli olmadığı tek seferlik kodlar yazarken faydalı olabilir, ancak üretim kodu söz konusu olduğunda LLM çıktısının geliştirici seviyesine ulaşıp titiz inceleme/düzeltme gerektirmeyeceği noktaya gelmesine daha çok var.

  • Kendi kendine barındırılan LLM araçlarının geliştirilmesine teşekkür

    Kendi kendine barındırılan LLM araçlarının geliştirilmesini ilerlettiği için Justine’e teşekkür ediyorum. Llamafiles bir standart olmalı. Aynı LAN üzerinde barındırılan uzak bir LLM’e bağlanmanın bir yolu var mı merak ediyorum; Apple cihazı kullanmıyorum ama ağ üzerinde güçlü bir makinem var ve onu kullanmak istiyorum. Llamafile bir API sunabilir mi? Bu artık LSP alanına giriyor gibi ve Llamafiles’tan yararlanmak iyi olurdu.

  • Emacs ile LLM entegrasyonu deneyiminin paylaşılması

    Kodlama ve teknik dokümantasyon işlerimin çoğu için Emacs kullanıyorum. phind-v2-codellama, openhermes, ollama, gptel ve GitHub Copilot çalıştırıyorum. Rastgele bir bölgeyi LLM’e gönderip istekte bulunabilme özelliğini seviyorum. UX hâlâ erken aşamada, ancak temel modelin tüm bağlamı (örneğin orgmode dosyaları ve açık dosya buffer’ları) alabildiğini ve LSP benzeri araçları kullanabildiğini hayal edin.

  • MacBook Pro M1 Max üzerinde LLM çalıştırma deneyimi

    MacBook Pro M1 Max, 64GB RAM kullanıyorum ve 34B Q55 modeli (büyük model) indirip düzgün çalıştığını gördüm. Yavaş ama kullanılabilir. Asahi Fedora Linux bölümünde çalıştırıyorum ve GPU’yu nasıl kullandığını bilmiyorum. Ortamı ZSH 5.9 ile kurdum; SUDO üzerinden LLM’i doğrudan çağırırsam web sunucusu olarak hızlıca yükleniyor ve localhost:8080 üzerinden web tarayıcısıyla etkileşim kurabiliyorum. Ancak Emacs’ten LLM’i çalıştırmaya çalıştığımda "Doing vfork: Exec format error." hatası alıyorum. Readme’deki demoyu izleyip isPrime fonksiyonunun başlangıcını yazdıktan sonra C-c C-k tuşlarına bastığımda bu hata oluşuyor. Neyin yanlış olabileceğine dair fikri olan var mı?

  • Video demosundaki is_prime fonksiyonuna eleştiri

    Video demosunda gösterilen is_prime fonksiyonu çok kötü. Girdi 2’ye bölünmüyor olsa bile 4, 6, 8 vb. ile modulo kontrolü yapmayı sürdürüyor; bu tamamen anlamsız. Koda sadece bir satır ekleyerek (tek sayı kontrolü) döngüyü yalnızca tek sayılarla çalıştırıp hızı 2 katına çıkarabilirsiniz. Bu tür LLM’leri kullananların, prod’a push etmeden önce kodu gözden geçirmesini umuyorum.

  • NixOS’ta çalışmayan llamafile derlemesi hakkında soru

    cosmopolitan / gerçekten taşınabilir çalıştırılabilir dosya olmadan kendi llamafile’ınızı derlemenin mümkün olup olmadığını soruyor. NixOS’ta çalışmıyor.

  • Daha genel bir LLM entegrasyonu talebi

    Şu anda sunulanlardan memnunum, ancak bunun ve bir LLM’in yapabildiği her şeyi yapabilecek daha genel bir LLM entegrasyonu istiyorum. Örneğin bir tuşla "bu kodu tamamla" denebilir; başka bir tuş ise mevcut buffer’ı olduğu gibi LLM’e gönderebilir, bir bölgeyi LLM’e gönderebilir ya da bölgeyi gönderip sonucu onunla değiştirebilir. Girdiyi LLM’e çeşitli şekillerde aktaran birkaç ortogonal özellik (bölge, buffer, dosya, satır içi prompt) ve çıktıyı çeşitli şekillerde veren özellikler (imleç konumuna ekleme, bölgenin üzerine yazma, yeni buffer’a koyma vb.) olabilir; bunun üzerine de kod tamamlama, düz yazı gibi farklı otomatik sistem prompt’ları inşa edilebilir.

  • Vim kullanıcısının LLM entegrasyonu için özel komut paylaşımı

    Şu anda seçili kodu alıp bir tarayıcı penceresi açarak çeşitli yapay zeka motorlarından iyileştirme istemeye yarayan özel bir komut kullanıyorum. vimrc içinde kullandığım komutu paylaşıyorum.

  • Llamafile yükseltme yolu hakkında soru

    Llamafile’ın yükseltme yolunu merak ediyorum. Bunu, llama.cpp’nin (sık güncellenen küçük dosya) ve model ağırlıklarının (sık güncellenmeyen büyük dosya) tek dosyada birleşmiş hali olarak anlıyorum. llama.cpp’de düzeltme gerektiğinde, değişmemiş modele ait birkaç gigabaytı yeniden indirmek zorunda mı kalacağız?

  • LLM entegrasyonuna ilgi ve deneme niyeti

    Çok ilginç, kesinlikle deneyeceğim. Ancak GitHub Copilot’un çalışma biçiminden oldukça farklı olduğu için isim çok iyi seçilmemiş olabilir. Emacs’in mimarisi vb. düşünüldüğünde, LLM ile entegrasyon konusunda daha fazla geliştirme yapılmamış olması şaşırtıcı; ama projelerin çoğunda aylardır çalışma yok. Yine de Emacs kullananların çoğu LLM’den yararlanmaya karşı olan kişiler olabilir.