4 poin oleh GN⁺ 2025-02-15 | 2 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2025-02-15
Komentar Hacker News
  • Fitur pengeditan prediktif Zed saat ini gratis, tetapi ada kemungkinan akan menjadi berbayar nanti. Pengguna akan memutuskan apakah akan mengintegrasikannya ke alur kerja mereka setelah harganya ditetapkan. Ingin ada uji coba gratis, tetapi jika harganya mahal, mereka tidak akan memakainya
    • Zed hanya dapat menjalankan satu LSP per jenis file. Ini bekerja dengan baik untuk Rust dan C++, tetapi tidak untuk Angular
    • Fitur pengeditan jarak jauh tidak berfungsi di Windows. Untuk menggunakan fitur pengeditan jarak jauh di Windows, diperlukan dukungan SSH
  • Fitur prediksi digunakan terlalu berlebihan. Pengguna merasa fitur prediksi mengganggu dan mengacaukan alur kerja mereka
    • Jika fitur prediksi terlalu sering digunakan, justru tidak membantu. Karena algoritme tidak bisa membaca pikiran manusia, fitur ini harus diatur agar tidak mengganggu pekerjaan pengguna
  • Tidak ingin kode dikirim ke pihak ketiga. Terutama saat mengedit file rahasia, kunci privat atau kunci API bisa saja terkirim
    • Diharapkan ada opsi lokal
  • Menyukai cara Zed mengiklankan fitur barunya. Ditampilkan sebagai banner di kiri atas dan tidak mengganggu pekerjaan pengguna
    • Tidak memaksa pengguna untuk memeriksa fitur baru seperti perangkat lunak lain
  • Zed mencoba melengkapi komentar secara otomatis. Pengguna tidak menginginkan pelengkapan otomatis di bagian komentar, dan telah ditambahkan opsi untuk menonaktifkannya
  • Antarmuka penerimaan saran CoPilot terasa tidak nyaman. Saat menggunakan tombol Tab, terlalu banyak saran AI yang tidak diinginkan muncul
  • Lebih menyukai stabilitas di editor teks. Jika terlalu banyak fitur terkait AI, justru terasa merepotkan
    • Setelah mencoba Zed, hasilnya cukup bagus
  • Intellisense modern sudah menyediakan fitur prediksi yang memadai. Prediksi AI digunakan terlalu berlebihan
    • Akan berguna jika AI memberikan rekomendasi struktur dan pola program. Semakin besar program, semakin sulit menatanya
  • Dapat menentukan file model untuk menggunakan fitur Zed secara lokal. Namun, belum jelas apakah Zed dapat mengubah endpoint untuk fitur ini