Informasi kontak saya
Surat[email protected]
2024-08-14
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Laporan Jantung Mesin
Editor: Zhang Qian, Xiaozhou
Seseorang berkata, "Kami mengharapkan stroberi, tetapi mereka melepaskan kangkung." Mari kita lihat kegunaan "kangkung" ini.
Kemampuan pemrograman model besar selalu menarik banyak perhatian, dan kemunculan programmer AI yang sangat kuat, Devin, telah membawa topik "Dapatkah AI menggantikan programmer" ke permukaan. Baru-baru ini, Devin juga menghadirkan lawan baru-seorang programmer AI independen yang diluncurkan oleh perusahaan start-up CosineJin. Perusahaan mengatakan Genie dengan mudah mengungguli Devin, mencetak 30% pada benchmark SWE pihak ketiga, sementara Devin hanya mencetak 13,8%.
SWE-Bench ini adalah kumpulan data benchmark yang digunakan untuk mengevaluasi kemampuan LLM dalam memecahkan masalah perangkat lunak nyata di GitHub. Ia mengumpulkan 2.294 pasangan Permintaan Tarik-Masalah dari 12 repositori Python populer. Selama pengujian, LLM akan mendapatkan basis kode dan deskripsi masalah, lalu menghasilkan patch untuk menyelesaikan masalah yang dijelaskan dalam masalah tersebut. Kumpulan data ini telah banyak digunakan dalam evaluasi kemampuan pemrograman AI.
Seiring dengan berkembangnya kemampuan pemrograman AI, tolok ukur ini pun ikut berkembang. Dini hari tadi, model OpenAI "Strawberry" yang dilaporkan secara online kembali tertunda, namun OpenAI merilis sesuatu yang baru, yaitu versi perbaikan dari SWE-Bench - SWE-bench Verified.
OpenAI menunjukkan bahwa bangku SWE asli memiliki beberapa masalah yang mungkin menyebabkan kemampuan rekayasa perangkat lunak otonom model tersebut diremehkan. Oleh karena itu, selama proses perbaikan, mereka berkolaborasi dengan penulis asli SWE-Bench untuk melakukan penyaringan dan perbaikan secara manual untuk memastikan bahwa cakupan unit test sudah sesuai dan gambaran masalahnya jelas.
Dalam pengujian baru yang dilakukan di SWE-bench Verified, banyak agen pemrograman AI yang mendapat skor lebih tinggi dari sebelumnya. Diantaranya, solusi Agentless UIUC bahkan menggandakan skornya. OpenAI percaya bahwa ini membuktikan bahwa benchmark sebelumnya memang memiliki kelemahan dalam meremehkan kemampuan pemrograman AI.
Namun bagi netizen sedunia yang menonton "Strawberry", rilisan ini masih terlalu asal-asalan. Seseorang berkata, "Kami mengharapkan stroberi, tapi mereka melepaskan kangkung."
Latar belakang pengetahuan tentang bangku SWE
Setiap contoh dalam set pengujian SWE-bench dibuat dari masalah GitHub yang terselesaikan di 12 repositori kode Python sumber terbuka di GitHub. Setiap sampel memiliki permintaan penarikan (PR) terkait yang mencakup kode solusi dan pengujian unit untuk memverifikasi kebenaran kode. Pengujian unit ini disebut pengujian FAIL_TO_PASS karena gagal sebelum kode solusi dalam PR ditambahkan dan lulus setelah ditambahkan. Setiap sampel juga menyertakan pengujian PASS_TO_PASS yang lolos sebelum dan sesudah PR digabungkan untuk memeriksa apakah PR merusak fungsi lain dalam basis kode yang tidak terkait dengan masalah.
Di SWE-bench, agen AI mendapatkan teks asli dari masalah GitHub, yang merupakan pernyataan masalah, dan memiliki akses ke basis kode. Dengan adanya informasi ini, agen harus mengedit file dalam basis kode untuk menyelesaikan masalah.
Pengeditan yang diberikan oleh agen AI akan dievaluasi dengan menjalankan pengujian FAIL_TO_PASS dan PASS_TO_PASS. Jika tes FAIL_TO_PASS lolos, berarti editor telah memperbaiki masalahnya. Jika pengujian PASS_TO_PASS lolos, berarti pengeditan tidak merusak bagian basis kode yang asing. Untuk menyelesaikan sepenuhnya masalah GitHub asli, kedua rangkaian pengujian harus lulus.
Tiga arah perbaikan untuk meningkatkan ketahanan dan keandalan bangku SWE
Untuk meningkatkan ketahanan dan keandalan bangku SWE. Tim pengembangan mengidentifikasi tiga arah utama untuk perbaikan:
SWE-bench Terverifikasi
Untuk mengatasi masalah ini, OpenAI memulai kampanye anotasi manual oleh pengembang perangkat lunak profesional, menyaring setiap sampel di set pengujian SWE-bench untuk memastikan bahwa pengujian unit memiliki cakupan yang tepat dan deskripsi masalah jelas dan tidak ambigu.
Bersama dengan penulis SWE-bench, mereka merilis SWE-bench Terverifikasi: bagian dari set pengujian asli SWE-bench, berisi 500 sampel yang telah diverifikasi oleh anotator manusia. Versi ini menggantikan set pengujian SWE-bench dan SWE-bench Lite yang asli. Selain itu, mereka merilis anotasi manusia untuk semua sampel uji SWE-bench.
Mereka juga berkolaborasi dengan penulis SWE-bench untuk mengembangkan alat evaluasi baru untuk SWE-bench yang menggunakan lingkungan Docker dalam container untuk membuat evaluasi pada SWE-bench lebih mudah dan andal.
Metode perbaikan
OpenAI bekerja dengan 93 pengembang perangkat lunak dengan pengalaman Python untuk menyaring sampel SWE-bench secara manual dan memberi anotasi pada 1699 sampel acak dalam set pengujian SWE-bench, dan akhirnya memperoleh SWE-bench Terverifikasi.
Pendekatan mereka adalah dengan membubuhi keterangan pada sampel di set pengujian bangku SWE untuk memastikan keadilan dan keakuratan pengujian. Secara khusus, mereka fokus pada dua poin utama: pertama, untuk mengevaluasi apakah deskripsi masalah cukup rinci untuk mencegah deskripsi yang terlalu kabur menyebabkan pengujian yang tidak adil; kedua, untuk memeriksa apakah pengujian unit FAIL_TO_PASS akan salah menyaring solusi yang valid.
Setiap kriteria anotasi memiliki label dalam rentang [0, 1, 2, 3] dengan tingkat keparahan yang semakin meningkat. Label 0 dan 1 bersifat minor; label 2 dan 3 bersifat parah, menunjukkan bahwa sampel dalam beberapa hal tidak memadai dan harus dibuang.
Selain itu, OpenAI mengevaluasi kesulitan setiap sampel dengan meminta anotator memperkirakan berapa lama waktu yang dibutuhkan pengembang untuk memutuskan dan menerapkan solusi, dengan asumsi sampel bebas masalah. Terakhir, OpenAI menyediakan opsi masukan bentuk bebas untuk menandai masalah besar lainnya pada sampel.
Untuk membangun SWE-bench Terverifikasi, OpenAI memfilter sampel apa pun dari set pengujian asli dengan pernyataan masalah atau tingkat keparahan pengujian unit FAIL_TO_PASS 2 atau lebih tinggi, dan juga memfilter sampel apa pun yang ditandai dengan masalah serius lainnya.
Beri anotasi pada hasil
Menurut standar baru, sebagian besar sampel di bangku SWE asli tidak memenuhi syarat. Seperti yang ditunjukkan pada gambar, 38,3% sampel ditandai karena pernyataan masalahnya tidak cukup jelas, dan 61,1% ditandai karena pengujian unit dapat secara tidak adil menandai solusi yang valid sebagai solusi yang salah (Keparahan 2, 3 Kedua level dijumlahkan) . Secara keseluruhan, proses anotasi mereka mengakibatkan 68,3% sampel SWE-bench disaring karena pernyataan masalah yang tidak jelas, pengujian unit yang tidak adil, atau masalah lainnya.
Gambar di bawah ini membandingkan distribusi kesulitan kumpulan data SWE-bench asli dan kumpulan data Terverifikasi SWE-bench baru. Mereka memperkirakan distribusi kesulitan bangku SWE berdasarkan subset acak dari 1699 sampel.
Seperti dapat dilihat dari gambar, dalam kumpulan data SWE-bench asli, perkiraan waktu penyelesaian sebagian besar (77,8%) sampel adalah kurang dari satu jam kerja untuk seorang insinyur perangkat lunak berpengalaman. SWE-bench Lite dan kumpulan data SWE-bench Verified yang baru semakin meningkatkan proporsi ini, dengan kurang dari 10% masalah diperkirakan membutuhkan waktu lebih dari satu jam untuk diselesaikan. Namun, mekanisme di balik perubahan ini sangat berbeda: SWE-bench Lite merupakan subsampling dari kumpulan data asli untuk mempermudah pembandingan, sementara SWE-bench Verified berupaya menghapus fitur-fitur yang tidak layak dari sampel kumpulan data.
Performa masing-masing agen di SWE-bench Terverifikasi
Pada kumpulan data Terverifikasi SWE-bench yang baru, tim pengembangan menguji performa GPT-4o menggunakan beberapa scaffold sumber terbuka yang berperforma baik di papan peringkat SWE-bench asli.
Ditemukan bahwa kinerja GPT-4o pada perancah dengan kinerja terbaik mencapai 33,2% pada bangku SWE Terverifikasi, lebih dari dua kali lipat skor 16% pada bangku SWE asli. Secara keseluruhan, hal ini menegaskan kecurigaan awal OpenAI bahwa bangku SWE asli meremehkan kemampuan agen.
Perlu dicatat bahwa lompatan dari SWE-bench Lite ke SWE-bench Verified tidak begitu jelas, karena setelah difilter, SWE-bench Lite sudah lebih mudah daripada kumpulan data lengkap.
Analisis kinerja dikelompokkan berdasarkan kesulitan
Peningkatan kinerja ketika dievaluasi pada SWE-bench Verified mungkin sebagian disebabkan oleh distribusi sampel uji yang condong ke sampel yang lebih sederhana.
OpenAI menyelidiki hal ini dengan memplot kinerja berdasarkan tingkat kesulitan. Jika kumpulan data baru hanya mengubah distribusi tingkat kesulitan untuk menyertakan sampel yang lebih mudah, performa bertingkat dalam setiap kategori tidak akan berubah, seperti halnya dari SWE-bench asli ke SWE-bench Lite.
Sebaliknya, OpenAI mengamati bahwa kinerja agen meningkat di seluruh kategori kesulitan ketika berpindah ke bangku SWE Terverifikasi, konsisten dengan efek yang diharapkan dari menghilangkan sampel yang tidak mungkin dari semua kategori daripada sekadar memindahkan Hapus sampel yang sulit.
Tautan referensi: https://openai.com/index/introducing-swe-bench-verified/