- Zed adalah editor yang dirancang untuk kecepatan, dan sejak awal menargetkan pengalaman mengedit yang selalu
instant
- Agar bisa lebih cepat dari
instant, Zed mengadopsi pendekatan dengan "memprediksi tindakan edit pengguna berikutnya"
- Untuk itu, Zed merilis fitur edit prediction baru, yang berjalan di atas model open source bernama Zeta
- Saat digunakan, edit yang diprediksi bisa langsung diterapkan dengan tombol
tab, dan beberapa edit lanjutan juga dapat dijalankan secara berurutan
- Ini adalah fitur yang banyak diminta, dan dikembangkan agar menyatu senatural mungkin dengan lingkungan pengeditan Zed
- Selama periode beta publik saat ini, pengguna bisa memakai Zeta secara gratis dengan mengunduh Zed dan masuk menggunakan akun GitHub
- Namun, edit prediction mungkin tidak akan gratis di masa mendatang, meski untuk sekarang dibuka agar bisa bereksperimen dan belajar bersama
Thoughtful Integration
- Dengan ditambahkannya fitur edit prediction, tombol
tab menjadi semakin kuat
- Namun, ini bisa berbenturan dengan penggunaan
tab yang sudah ada untuk indentasi atau untuk memeriksa saran dari language server (LS)
- Jika saran kode dari language server sedang tampil, pratinjau edit prediksi baru akan muncul setelah menekan tombol
option/alt
- Di macOS, edit prediksi bisa dikonfirmasi dengan
tab, dan saat option dilepas, tampilan saran language server asli akan kembali
- Di Linux,
alt-tab sering dicadangkan oleh window manager, sehingga alt-l disediakan sebagai nilai bawaan
- Jika
alt-tab tidak bentrok di lingkungan Linux, itu tetap bisa digunakan
Introducing Zeta: Zed's Open Source Edit Prediction Model
- Zeta adalah model open source yang dikembangkan berdasarkan Qwen2.5-Coder-7B
- Dataset terbuka juga sedang dipublikasikan (tautan)
- Jika Anda bekerja pada repositori open source, mereka berharap Anda berkontribusi pada dataset untuk meningkatkan Zeta
- Pada tahap awal, data akan dimasukkan setelah melalui tinjauan keamanan dan privasi
- Tujuannya adalah bersama-sama menjadikan edit prediction sebagai fitur yang lebih baik secara keseluruhan
- Tautan video: How Zed’s Open-Source Edit Predictions Work
Editing By Rewriting
- Sebagian besar model coding dilatih dengan pendekatan “fill in the middle”
- Struktur ini memberi prefix dan suffix, lalu model menghasilkan bagian di antaranya
- Di sisi lain, Zeta harus memprediksi edit di posisi arbitrer, sehingga ini menjadi tugas yang tidak cocok dengan struktur tersebut
- Tim menyoroti bahwa model lebih mahir menulis ulang potongan kode yang relatif besar daripada perubahan yang sangat halus
- Karena itu, mereka memilih pendekatan yang menerima riwayat edit terbaru dan posisi kursor sebagai masukan, lalu menulis ulang potongan kode terkait
Evaluating Predictions
- Hasil dari large language model tidak selalu sama setiap kali, sehingga pengujian menjadi sulit
- Variasi ini bisa dikendalikan sampai batas tertentu dengan mengatur
temperature ke 0 atau menentukan seed RNG
- Namun, karena kode bisa memiliki lebih dari satu jawaban benar, hasil yang berbeda dari jawaban yang diharapkan tetap bisa benar
- Karena unit test tradisional sulit diterapkan, mereka mencoba memakai LLM yang lebih besar untuk memeriksa hasil Zeta dalam bahasa alami
- Contoh: dengan memberi persyaratan seperti “apakah fungsi quicksort dipanggil secara rekursif untuk array kiri dan kanan”, Claude dibuat untuk menilai apakah hasilnya sesuai dengan maksud
Prompt Engineering
- Pada awalnya, mereka menggunakan model Qwen2.5-Coder-32B untuk menyusun prompt yang memberi instruksi jelas tentang edit apa yang harus diprediksi
- Beberapa eval awal berhasil lolos, tetapi seiring bertambahnya jumlah pengujian, sulit mendapatkan hasil yang konsisten hanya dengan mengubah prompt
- Model 32b juga memiliki latensi respons yang tinggi, sehingga tidak memenuhi standar performa ketat Zed
Supervised Fine-Tuning
- Setelah mencoba berbagai pendekatan, mereka beralih ke supervised fine-tuning menggunakan Unsloth dan LoRA
- Tujuannya adalah mengajarkan model untuk menyimpulkan perubahan yang diinginkan pengguna dari riwayat edit terbaru, lalu menulis potongan kode dengan baik tanpa penyisipan yang keliru
- Namun pada awalnya, data pengguna nyata masih kurang, sehingga mereka membuat sekitar 50 contoh sintetis melalui Claude dan menambahkannya ke dataset
- Setelah itu, versi awal didistribusikan ke Zed lewat feature flag, sehingga tim internal dapat menghasilkan contoh penggunaan nyata dan memperluas dataset
- Dengan sekitar 400 contoh, akurasi model meningkat, tetapi masih ada masalah ketika model melakukan perubahan yang tidak perlu saat hanya sebagian area file yang diedit
Direct Preference Optimization
- Untuk mengatasi masalah ini, mereka memperkenalkan teknik DPO (Direct Preference Optimization)
- Bukan hanya menunjukkan “contoh yang baik”, tetapi juga secara eksplisit menunjukkan “contoh yang harus dihindari”, sehingga model belajar membedakan edit yang tidak tepat
- Bahkan dengan hanya sekitar 150 contoh yang dipilih secara cermat, perilaku model meningkat secara signifikan pada kasus-kasus sulit
- Mereka memperkirakan perbaikan tambahan dimungkinkan jika lebih banyak contoh beragam dapat dikumpulkan
Minimizing Latency: Speculative Decoding
- Seperti semua fitur Zed lainnya, meminimalkan keterlambatan (latency) juga menjadi hal yang krusial untuk edit prediction
- Targetnya adalah p50 di bawah 200ms dan p90 di bawah 500ms
- Karena menulis ulang sebagian kode membutuhkan lebih banyak token untuk dihasilkan, ini bisa lebih lambat daripada pendekatan fill-in-the-middle biasa
- Namun, dengan memanfaatkan fakta bahwa selama proses rewrite ada banyak bagian yang tetap sangat mirip dengan kode asli, mereka menerapkan teknik speculative decoding
- Strateginya adalah merujuk ke input dan melakukan generasi token paralel melalui pencarian n-gram, untuk meningkatkan kecepatan tanpa menurunkan kualitas
Minimizing Latency: Serving The Model
- Selain kecepatan inferensi model, cara menyediakan model (serving) di lingkungan server juga merupakan tantangan besar
- Ini adalah masalah dengan kebutuhan komputasi paling besar yang pernah ditangani tim sejauh ini
- Menjelang peluncuran, setelah proses validasi singkat, mereka memilih Baseten
- Para engineer Baseten membantu mengoptimalkan model Zeta, dan target latensi yang diinginkan pun tercapai
- Karena waktu transmisi jaringan juga merupakan faktor utama, mereka menempatkan GPU di wilayah Amerika Serikat dan Eropa untuk menangani permintaan dari lokasi yang secara fisik lebih dekat
- Permintaan juga diteruskan melalui Cloudflare Workers dari data center yang dekat dengan pengguna
Conclusion
- Ke depan, mereka akan mengeksplorasi berbagai arah untuk membuat edit prediction lebih kuat
- Rencananya mencakup menambah jumlah konteks yang diterima model, melakukan fine-tuning tambahan, dan memperluas dataset Zeta untuk terus meningkatkan kualitas
- Sejak meluncurkan Zed AI pada musim gugur tahun lalu, mereka telah belajar banyak
- Karena dunia berubah dengan cepat, mereka terus bereksperimen dan membangun fitur-fitur yang bisa disukai pengguna
- Mereka juga ingin mengembangkan AI dengan semangat open source yang selama ini dikejar Zed
- Mereka berharap siapa pun, baik sebagai pengguna, kontributor, maupun anggota tim, bisa ikut bersama membuka masa depan yang lebih keren
2 komentar
Editor baru buatan para pengembang Atom. Beta terbuka dimulai
Editor kode kolaboratif 'Zed', kini beralih menjadi open source
Zed AI diumumkan (with Anthropic)
Komentar Hacker News