- 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
Atom geliştiricilerinin yaptığı yeni editör. Açık beta başladı
İşbirliğine yönelik kod editörü 'Zed', artık açık kaynağa geçiyor
Zed AI duyuruldu (Anthropic ile)
Hacker News görüşleri