4 puan yazan GN⁺ 2025-02-15 | 2 yorum | WhatsApp'ta paylaş
  • Zed, hız için tasarlanmış bir editör ve her zaman instant bir düzenleme deneyimini hedefledi
  • instanttan da hızlı olmak için, kullanıcının "bir sonraki düzenleme eylemini tahmin etme" yaklaşımını benimsedi
  • Bunun için Zed, yeni edit prediction özelliğini duyurdu; bu özellik Zeta adlı açık kaynaklı bir model temelinde çalışıyor
  • Kullanım sırasında tab tuşuyla tahmin edilen düzenlemeyi anında uygulayabilir, birden fazla devam düzenlemesini de art arda çalıştırabilirsiniz
  • Çok talep edilen bir özellikti ve Zed düzenleme ortamına olabildiğince doğal biçimde uyum sağlayacak şekilde geliştirildi
  • Şu anda public beta süresince Zed'i indirip GitHub hesabıyla giriş yapanlar Zeta'yı ücretsiz kullanabiliyor
  • Ancak edit prediction ileride ücretsiz olmayabilir; şimdilik birlikte deney yapmak ve öğrenmek için açık sunuluyor

Thoughtful Integration

  • edit prediction özelliğinin eklenmesiyle tab tuşu daha da güçlü hale geldi
  • Ancak bu, mevcut tab ile girinti verme ya da dil sunucusunun (LS) sunduğu önerileri görme kullanım biçimiyle çakışabilir
  • Dil sunucusundan gelen kod önerileri görünüyorsa, tahmin edilen düzenlemenin önizlemesi ancak option/alt tuşuna basıldığında gösteriliyor
  • macOS'ta tab ile tahmini düzenlemeyi onaylayabilir, option bırakıldığında da özgün dil sunucusu öneri ekranına geri dönebilirsiniz
  • Linux'ta alt-tab çoğu zaman pencere yöneticisi tarafından rezerve edildiği için, varsayılan olarak alt-l sunuluyor
  • Linux ortamında alt-tab çakışmıyorsa bunu olduğu gibi kullanabilirsiniz

Introducing Zeta: Zed's Open Source Edit Prediction Model

  • Zeta, Qwen2.5-Coder-7B temel alınarak geliştirilmiş açık kaynaklı bir modeldir
  • Açık veri kümesi de (bağlantı) yayımlanıyor
  • Açık kaynak depolarında çalışıyorsanız, Zeta'yı geliştirmek için veri kümesine katkı yapmanız umuluyor
  • İlk aşamada veriler, güvenlik ve gizlilik incelemesinden geçirildikten sonra yansıtılacak
  • Amaç, birlikte çalışarak edit prediction'ı genel olarak daha iyi bir özellik haline getirmek
  • Video bağlantısı: How Zed’s Open-Source Edit Predictions Work

Editing By Rewriting

  • Çoğu kodlama modeli "fill in the middle" yöntemiyle eğitiliyor
  • Yapı, prefix ve suffix verilip modelin aradaki kısmı üretmesine dayanıyor
  • Buna karşılık Zeta'nın rastgele konumlardaki düzenlemeleri tahmin etmesi gerekiyor; bu da mevcut yapıyla tam örtüşmeyen bir görev
  • Modelin ince taneli değişikliklerden ziyade görece büyük kod parçalarını yeniden yazmada başarılı olduğuna dikkat çekildi
  • Bu yüzden, son düzenleme geçmişi ve imleç konumu girdi olarak verilerek ilgili kod parçasını yeniden yazdırma yöntemi seçildi

Evaluating Predictions

  • Büyük dil modellerinin çıktıları her zaman aynı olmayabildiği için test etmek zor bir sorun
  • Sıcaklığı (temperature) 0'a ayarlamak ya da RNG seed belirtmek, bu değişkenliği bir ölçüde kontrol etmeyi sağlıyor
  • Ancak kodda birden fazla doğru yanıt mümkün olduğundan, sonuç beklenen yanıtla aynı olmasa da doğru olabilir
  • Geleneksel birim testleri zor olduğundan, Zeta'nın çıktısını doğal dilde denetlemek için daha büyük bir LLM kullanma yöntemi denendi
  • Örneğin "sol ve sağ diziler için quicksort fonksiyonunu özyinelemeli olarak çağırıp çağırmadığı" gibi bir gereksinim verilip, Claude'un bunun niyete uygun olup olmadığını değerlendirmesi sağlandı

Prompt Engineering

  • Başlangıçta Qwen2.5-Coder-32B modeli kullanılarak, hangi düzenlemenin tahmin edilmesi gerektiğini açıkça anlatan bir prompt oluşturuldu
  • İlk birkaç test (eval) geçildi, ancak testler arttıkça yalnızca prompt değiştirerek tutarlı sonuç almak zorlaştı
  • 32b modelinin yanıt gecikmesi yüksekti ve bu nedenle Zed'in katı performans ölçütlerine de uymuyordu

Supervised Fine-Tuning

  • Birden fazla yaklaşım denendikten sonra, Unsloth ve LoRA kullanılarak supervised fine-tuning'e geçildi
  • Amaç, son düzenleme geçmişinden kullanıcının istediği değişimi çıkarabilen ve kod parçasını hatalı eklemeler olmadan iyi biçimde yazabilen bir model eğitmekti
  • Ancak başlangıçta gerçek kullanıcı verisi az olduğundan, Claude aracılığıyla yaklaşık 50 sentetik örnek üretilip veri kümesine eklendi
  • Sonrasında ilk sürüm, Zed içinde bir feature flag ile dağıtıldı ve dahili ekip gerçek kullanım örnekleri üreterek veri kümesini büyüttü
  • Yaklaşık 400 örnekle model doğruluğu artırıldı, ancak dosyanın yalnızca bir bölümünü düzenlerken modelin gereksiz değişiklikler yapması sorunu devam etti

Direct Preference Optimization

  • Bu sorunu çözmek için DPO (Direct Preference Optimization) tekniği devreye alındı
  • Yalnızca "iyi örnekler" göstermekle kalmayıp, "kaçınılması gereken örnekler" de açıkça belirtilerek modelin uygunsuz düzenlemeleri ayırt etmesi öğretildi
  • Dikkatle seçilmiş yaklaşık 150 örnek bile zor vakalarda model davranışını belirgin biçimde iyileştirdi
  • Daha çeşitli örnekler toplanırsa ek iyileştirmelerin mümkün olması bekleniyor

Minimizing Latency: Speculative Decoding

  • Zed'in tüm özelliklerinde olduğu gibi, edit prediction'da da gecikmeyi (latency) en aza indirmek kritik önemde
  • Hedef, p50'nin 200 ms'nin altında ve p90'ın 500 ms'nin altında olması
  • Kodun bir bölümünü yeniden yazmak, üretilmesi gereken token sayısını artırdığı için genel fill-in-the-middle yaklaşımından daha yavaş olabilir
  • Ancak yeniden yazım sürecinde özgün kodla oldukça benzer bölümler bulunduğundan yararlanılarak speculative decoding tekniği uygulandı
  • Bu, girdiye başvurup n-gram aramasıyla token'ları paralel üretmeye dayanan ve kaliteyi düşürmeden hızı artırmayı amaçlayan bir strateji

Minimizing Latency: Serving The Model

  • Modelin çıkarım hızının yanı sıra, sunucu ortamında modelin nasıl sunulacağı (serving) da büyük bir zorluktu
  • Bu, ekibin şimdiye kadar üstlendiği en yüksek hesaplama gerektiren sorunlardan biriydi
  • Lansman sırasında kısa bir değerlendirme sürecinin ardından Baseten seçildi
  • Baseten mühendisleri Zeta modelini optimize etti ve istenen gecikme hedeflerine ulaşıldı
  • Ağ aktarım süresi de önemli bir etken olduğundan, istekleri fiziksel olarak daha yakın yerlerden işlemek için ABD ve Avrupa bölgelerine GPU yerleştirildi
  • İstekler, kullanıcıya yakın veri merkezlerinden aktarım yapmak için Cloudflare Workers üzerinden yönlendiriliyor

Conclusion

  • Bundan sonra edit prediction'ı daha güçlü hale getirecek çeşitli yönler keşfedilmeye devam edilecek
  • Modelin aldığı bağlam miktarını artırmak, ek fine-tuning yapmak ve Zeta veri kümesini genişletmek planlanıyor
  • Geçen sonbaharda Zed AI'ın duyurulmasından bu yana çok şey öğrenildi
  • Dünya hızla değişirken, kullanıcıların seveceği özellikleri denemeyi ve inşa etmeyi sürdürülüyor
  • Yapay zekanın da Zed'in benimsediği açık kaynak ruhuyla birlikte geliştirilmesi isteniyor
  • Kullanıcı, katkıcı ya da ekip üyesi olarak herkesin bu yolculuğa katılması umuluyor; daha iyi bir gelecek için hız kesmeden ilerleniyor

2 yorum

 
GN⁺ 2025-02-15
Hacker News görüşleri
  • Zed'in tahminli düzenleme özelliği şu anda ücretsiz, ancak ileride ücretli hale gelmesi mümkün. Kullanıcı, fiyat belirlendiğinde bunu iş akışına entegre edip etmeyeceğine karar verecek. Ücretsiz denemek istiyor, ama fiyat yüksek olursa kullanmayacak
    • Zed, dosya türü başına yalnızca bir LSP çalıştırabiliyor. Rust ve C++ iyi çalışıyor, ancak Angular için durum böyle değil
    • Uzak düzenleme özelliği Windows'ta çalışmıyor. Windows'ta uzak düzenleme kullanmak için SSH desteği gerekiyor
  • Tahmin özelliği fazlasıyla aşırı kullanılıyor. Kullanıcı, tahmin özelliğinin dikkat dağıttığını ve kendi iş akışını bozduğunu düşünüyor
    • Tahmin özelliği çok fazla kullanılırsa aksine faydalı olmuyor. Algoritma insanın zihnini okuyamaz, bu yüzden kullanıcının çalışmasını bölmemeli
  • Kodun üçüncü taraflara gönderilmesini istemiyor. Özellikle gizli dosyaları düzenlerken özel anahtarlar veya API anahtarları gönderilebilir
    • Yerel bir seçenek sunulmasını istiyor
  • Zed'in yeni özellikleri duyurma biçimini beğeniyor. Sol üstte bir banner olarak gösteriliyor ve kullanıcının çalışmasını bölmüyor
    • Diğer yazılımlardaki gibi kullanıcıyı yeni özellikleri kontrol etmeye zorlamıyor
  • Zed yorumlar için otomatik tamamlama deniyor. Kullanıcı yorum kısmında otomatik tamamlama istemiyor ve bunu devre dışı bırakabilecek bir seçenek eklenmiş
  • CoPilot'un öneri kabul arayüzü kullanışsız. Tab tuşu kullanıldığında istenmeyen pek çok yapay zeka önerisi çıkıyor
  • Metin editöründe kararlılığı tercih ediyor. Yapay zeka ile ilgili çok fazla özellik olunca bu tersine rahatsız edici oluyor
    • Zed'i denemiş ve beğenmiş
  • Modern Intellisense uygun düzeyde tahmin özelliği sunuyor. Yapay zeka tahminleri aşırıya kaçıyor
    • Yapay zeka program yapısı ve örüntü önerileri sunarsa faydalı olabilir. Program büyüdükçe onu yapılandırmak daha zor hale geliyor
  • Zed'in özelliklerini yerelde kullanmak için model dosyası tanımlanabiliyor. Ancak Zed'in bu özelliğin endpoint'ini değiştirip değiştiremeyeceği belirsiz