Cara Membaca Penanda Aras Pengaturcaraan AI dan Mengelakkan Pilihan Pemenang di Atas Kertas
MarkdownPerkara yang diukur oleh HumanEval dan SWE-bench, serta cara mengambil kira pembalut ejen, syarat, kebaharuan tugasan, variasi dan kos apabila membaca kedudukan pengaturcaraan AI.
Baca artikel penuh
Ringkasnya: angka “menyelesaikan 76 peratus tugasan” hampir tidak bermakna jika berdiri sendiri. Yang penting ialah set tugasan yang menghasilkan angka itu, model dan pembalut ejen yang dinilai bersama-sama, sama ada tugasan itu baharu atau lama, serta kosnya. Tanpa syarat-syarat ini, peratusan itu sesuai untuk sepanduk iklan, tetapi bukan untuk memilih alat.
Seterusnya, saya akan menerangkan dengan bahasa mudah perkara yang diukur oleh dua penanda aras pengaturcaraan utama, tempat perangkap tersembunyi dalam jadual dan cara menyemak sebarang kedudukan dalam seminit sebelum mempercayainya. Takrif penanda aras sejarah dibincangkan di bawah. Tiada gambaran papan pendahulu berpasangan langsung dihasilkan semula di sini; perbandingan skor atau kos semasa memerlukan jadual berpaut, tarikh dan konfigurasinya sendiri.
Ketahui lebih lanjut tentang cara bekerja dengan model dalam dokumentasi Ailoot.
Apakah yang sebenarnya ditunjukkan oleh peratusan penanda aras?
Perkara utama
Peratusan penanda aras ialah bahagian tugasan daripada satu set tertentu yang diselesaikan oleh sesuatu alat dengan hasil yang berfungsi, dalam syarat tertentu. Tugasan disemak dengan ujian automatik: kod sama ada lulus ujian atau tidak; penilaiannya jujur dan tiada istilah “lebih kurang”. Namun, set tugasan itu sentiasa terhad dan diketahui lebih awal, sementara syarat pengukuran berbeza-beza. Jadi, angka itu menjawab soalan, “Berapa banyak tugasan ini yang diselesaikan oleh alat ini dengan cara ini?” Ia tidak menjawab soalan, “Bolehkah alat ini mengendalikan kerja saya?”
Penanda aras berfungsi dengan mudah. Terdapat senarai tugasan pengaturcaraan yang telah disediakan. Alat diberikan setiap tugasan dan mengembalikan kod; kemudian sistem menjalankan ujian automatik untuk melihat sama ada penyelesaiannya berfungsi. Bahagian tugasan yang lulus ujian ialah peratusan yang ditunjukkan dalam jadual.
Kelebihannya ialah penilaian yang objektif. Ujian sama ada lulus atau gagal; tiada sesiapa memberikan skor “agak-agak”. Dari segi ini, penanda aras lebih jujur daripada sebarang ulasan atau testimoni.
Kelemahannya datang daripada perkara yang sama. Set tugasan itu terhad dan diketahui lebih awal oleh semua orang, termasuk mereka yang melatih model. Setiap pengukuran mempunyai syarat tersendiri. Dan hampir pasti tugasan dalam set itu tidak sama dengan kerja anda. Inilah punca semua perangkap yang saya bincangkan di bawah. Peratusan itu menerangkan tingkah laku alat terhadap senarai tugasan tertutup milik orang lain dan tidak boleh terus dianggap sama untuk projek anda.
Apakah yang diukur oleh HumanEval, dan mengapa anda tidak boleh memilih alat berdasarkan ukurannya lagi?
Perkara utama
HumanEval ialah set lama yang mengandungi 164 tugasan kecil Python: model diberikan penerangan fungsi, menulis kod dan ujian automatik menyemak tugasan itu. Apabila set ini dikeluarkan pada 2021, Codex pertama menyelesaikan 28.8 peratus tugasan dalam satu percubaan. Kini, model yang kuat menyelesaikan hampir kesemuanya, maka set ini tidak lagi dapat membezakan antara model tersebut. Selain itu, tugasan ini ialah masalah remeh: satu fungsi yang ditulis daripada penerangan jauh berbeza daripada kerja pada projek besar yang sedang digunakan. Skor HumanEval yang tinggi pada 2026 hampir tidak bermakna.
HumanEval dicipta oleh OpenAI dan dikeluarkan pada 2021 bersama model Codex. Set ini mengandungi 164 tugasan kecil Python: model diberikan penerangan fungsi dalam bentuk perkataan, menulis isi fungsi itu, dan satu set ujian automatik menyemak sama ada fungsi tersebut berfungsi dengan betul.
Ketika itu, HumanEval ialah pembeza yang baik. Dalam makalah mereka sendiri, penulis menyatakan angka ini: Codex pertama menyelesaikan 28.8 peratus tugasan dalam satu percubaan, manakala GPT-3 biasa tidak menyelesaikan satu pun.
Pada HumanEval, model kami menyelesaikan 28.8 peratus masalah, manakala GPT-3 menyelesaikan 0 peratus dan GPT-J menyelesaikan 11.4 peratus.
Sejak itu, model semakin maju dan hari ini model yang kuat menyelesaikan hampir kesemua tugasan HumanEval. Apabila semua model mendapat skor hampir 100 peratus, jadual itu tidak lagi membezakan apa-apa: perbezaan antara alat hilang. Keadaan ini dipanggil ketepuan penanda aras, dan HumanEval telah lama berada dalam keadaan tersebut.
Kelemahan kedua lebih serius. Tugasannya kecil: menulis satu fungsi berdasarkan penerangan. Kerja sebenar anda berbeza—ia melibatkan projek besar yang mempunyai sejarah, dan anda perlu memahami kod orang lain, mencari kecacatan serta mengelakkan kerosakan pada kod bersebelahan. Jurang antara “menulis fungsi dari awal” dengan “membaiki pepijat dalam projek yang sedang digunakan” sangat besar. Jadi, skor HumanEval yang tinggi hari ini bukan lagi alasan untuk memilih alat; ia lebih seperti tanda bahawa “asasnya sudah dikuasai”.
Apakah yang diukur oleh SWE-bench, dan mengapa ia lebih hampir dengan kerja sebenar?
Perkara utama
SWE-bench dibina daripada kecacatan sebenar dalam projek GitHub yang popular: 2,294 tugasan daripada 12 repositori Python. Alat diberikan penerangan masalah, mengedit kod dan sistem menjalankan ujian yang gagal sebelum perubahan dibuat dan sepatutnya lulus selepas pembaikan. Ini jauh lebih hampir dengan kerja sebenar berbanding HumanEval, sebab itulah SWE-bench digunakan untuk membandingkan alat yang serius. Tahap kesukarannya jelas daripada sejarahnya: pendekatan ringkas pertama menyelesaikan kurang daripada dua peratus tugasan.
SWE-bench sangat berbeza dan oleh itu lebih menarik. Penanda aras ini dibina daripada isu dan pull request sebenar dalam projek GitHub yang popular. Menurut penulisnya, set ini mengandungi 2,294 tugasan daripada 12 repositori Python yang besar dan dikeluarkan pada Oktober 2023.
Logik penilaiannya jujur. Mereka mengambil titik dalam projek yang mempunyai kecacatan sebenar dan satu set ujian yang gagal pada masa itu. Alat diberikan penerangan masalah dan mengedit kod. Kemudian ujian yang sama dijalankan: jika ujian itu lulus, tugasan benar-benar diselesaikan; tiada sesiapa di sini mempercayai janji lisan.
Kami mengumpulkan 2,294 tugasan dengan meneliti pull request dan isu daripada 12 repositori Python yang popular. Setiap tugasan berasaskan pull request yang dipautkan kepada suatu isu dan mengubah sekurang-kurangnya satu fail berkaitan ujian.
Angka awal menunjukkan betapa sukarnya tugasan ini berbanding masalah remeh. Pendekatan garis dasar pertama mendapat hanya 1.96 peratus pada SWE-bench, dan ejen pertama mendapat 12.47 peratus. Dengan kata lain, kerja pengaturcaraan yang hampir dengan keadaan sebenar pun sukar dicapai; peratusan meningkat kemudian, tetapi bermula hampir sifar.
Jadi, apabila anda melihat angka yang besar dalam kedudukan ejen pengaturcaraan AI hari ini, angka itu selalunya datang daripada SWE-bench atau subsetnya yang disahkan oleh manusia, iaitu 500 tugasan yang dipanggil SWE-bench Verified. Ini penanda aras yang munasabah. Namun, ia juga mempunyai syarat yang perlu diketahui agar peratusannya tidak mengelirukan, dan itulah yang akan saya bincangkan seterusnya.
Penanda aras yang paling jujur dalam jadual sekalipun masih belum menjadi hasil untuk projek anda. Hasilnya bergantung pada cara anda bekerja dengan alat tersebut, dan baris teratas dalam kedudukan itu tidak menentukan banyak perkara. Untuk kerja yang boleh dipercayai, gabungannya penting: klon AI, Second Brain dan kejuruteraan konteks. Konteks yang bersih meningkatkan kadar kejayaan peribadi anda dengan lebih ketara daripada memilih model daripada jadual.
Mengapa model yang sama menunjukkan peratusan berbeza?
Perkara utama
Kerana hasilnya bergantung pada lebih daripada model itu sahaja. Sekurang-kurangnya tiga perkara terlibat dalam setiap pengukuran: model itu sendiri, pembalut ejen di sekelilingnya dan tahap penaakulan yang diaktifkan. Mengubah tetapan penaakulan boleh menghasilkan baris berbeza untuk model dan pembalut ejen yang sama. Tanpa nama harness, revisi, tetapan dan sumber bertarikh, baris itu tidak menyokong perbandingan berangka. Jadi, anda perlu membandingkan gabungan penuh; jenama model sahaja tidak banyak menentukan hasil.
Di sinilah kesilapan paling lazim ketika membaca penanda aras tersembunyi. Orang membaca jadual itu sebagai kedudukan model: model ini dua peratus lebih bijak daripada model itu. Tetapi ada tiga perkara yang mempengaruhi peratusan, dan model cuma salah satunya.
Pertama, model itu sendiri. Kedua, pembalut ejen di sekelilingnya: program yang membolehkan model menavigasi fail, menjalankan arahan, membaca ralat dan menulis semula kod. Model yang sama dalam pembalut yang pintar dan yang ringkas akan menunjukkan hasil berbeza kerana pembalut menentukan cara model bekerja dengan projek. Ketiga, tahap penaakulan—iaitu sejauh mana model memikirkan setiap langkah. Lebih lama model berfikir, biasanya lebih tinggi peratusannya dan lebih tinggi kosnya.
Perbandingan yang boleh dihasilkan semula patut mengekalkan persediaan penuh. Gunakan ini sebagai templat pelaporan, bukan papan pendahulu yang diukur:
| Medan | Pelaksanaan A | Pelaksanaan B |
|---|---|---|
| Model dan versi tepat | Rekod versi diuji | Versi sama untuk perbandingan terkawal |
| Harness ejen dan revisi | Rekod repositori dan commit | Harness dan commit yang sama |
| Set tugasan dan pemarkahan | Rekod subset dan revisi penilaian | Set tugasan dan pemarkahan yang sama |
| Tetapan penaakulan | Rekod tetapan A | Rekod tetapan B |
| Hasil dan bukti | Bilangan selesai, penyebut, log, tarikh | Bilangan selesai, penyebut, log, tarikh |
Ini menunjukkan perkara berubah dan sama ada perbandingan benar-benar mengasingkan tetapan penaakulan. Contoh angka tanpa pautan terdahulu tidak dianggap hasil yang diukur.
Inilah peraturannya: kedudukan yang baik sentiasa menyatakan model, pembalut dan tahap penaakulan yang digunakan. Jika jadual hanya menyertakan nama model dan peratusan tanpa menyatakan pembalut, sukar untuk mempercayainya: anda tidak tahu perkara yang sebenarnya diukur. Artikel tentang kedudukan ejen pengaturcaraan AI menerangkan lebih lanjut tentang gabungan “model tambah pembalut”.
Ini juga menjawab mengapa alat dengan skor teratas kadangkala sukar digunakan oleh anda. Penanda aras mengukur model di dalam pembalut yang telah diperhalusi oleh orang lain, menggunakan tugasan orang lain. Pembalut, projek dan konteks yang anda berikan kepada model berbeza. Dalam projek anda, hasilnya bergantung pada konteks; baris dalam jadual ialah perkara kedua.
Mengapa tugasan “luput” dan apakah kebocoran data latihan?
Perkara utama
Model dilatih menggunakan teks dan kod yang sangat banyak daripada internet, dan penanda aras yang popular tersedia secara umum. Jika tugasan dan penyelesaiannya termasuk dalam data latihan, model mungkin telah menghafalnya dan sekadar mengulang apa yang dihafal semasa penilaian, bukannya menyelesaikan tugasan itu. Ini dipanggil kebocoran tugasan ke dalam latihan. Semakin lama dan semakin dikenali set tersebut, semakin tinggi risikonya: penanda aras lama lebih berkemungkinan menunjukkan ingatan model berbanding keupayaan penaakulannya. Set tugasan yang baharu dan tertutup lebih boleh dipercayai daripada set lama dan awam.
Inilah perangkap yang tidak kelihatan pada angka itu sendiri, tetapi paling banyak menjejaskan maknanya. Model dilatih dengan teks dan kod yang amat banyak, dikumpulkan daripada internet. Hampir semua penanda aras pengaturcaraan juga tersedia secara umum: tugasan, ujian dan penyelesaian rujukan.
Mekanismenya mudah. Jika tugasan dan penyelesaian yang betul telah masuk ke dalam data latihan, model mungkin telah menghafalnya. Semasa penilaian, model bukannya benar-benar menyelesaikan tugasan, tetapi mendapatkan semula jawapan yang sudah biasa daripada ingatan. Hasilnya kelihatan seperti penyelesaian, tetapi itu cuma ingatan. Keadaan ini dipanggil kebocoran latihan atau pencemaran data.
Semakin lama dan semakin popular set tugasan, semakin tinggi risikonya. HumanEval telah tersedia dalam talian sejak 2021; set ini telah ditulis semula, dianalisis dan dimasukkan dalam pelbagai set data berkali-kali. Sukar untuk menjangkakan model moden tidak pernah “melihatnya”. Sebab itulah kebaharuan tugasan menjadi penunjuk kualiti penanda aras yang tersendiri. Set yang baik sama ada dikemas kini secara berkala atau menyimpan sebahagian tugasan secara tertutup supaya model tidak dapat mempelajarinya lebih awal.
Apakah yang patut anda buat semasa membaca kedudukan? Semak tarikh tugasan dan sama ada set itu dikemas kini. Jika penanda aras dibina daripada kecacatan baharu yang berlaku dalam beberapa bulan kebelakangan ini, ia lebih wajar dipercayai. Jika set itu berusia lima tahun, peratusan tinggi lebih banyak menunjukkan ingatan model yang baik daripada keupayaannya menyelesaikan tugasan baharu anda. Kesan ini ditunjukkan dengan contoh khusus dalam artikel tentang penanda aras FrontierCode yang baharu, yang tugasan-tugasannya sengaja dibuat baharu.
Mengapa perbezaan beberapa mata peratusan selalunya tidak bermakna?
Perkara utama
Penanda aras mempunyai variasi: alat yang sama pada tugasan yang sama memberikan hasil yang sedikit berbeza dalam larian berlainan kerana model tidak sentiasa memberikan respons yang sama. Oleh itu, perbezaan satu atau dua mata antara baris bersebelahan dalam kedudukan selalunya tenggelam dalam hingar dan tidak menunjukkan kelebihan sebenar. Semak harga secara berasingan juga: peratusan yang hampir sama boleh menelan kos berkali-kali ganda. Bandingkan kos hanya apabila kedua-dua persediaan lengkap, kadar kejayaan, andaian pengebilan dan penyebut kos dinyatakan.
Satu lagi sebab kedudukan teratas dalam jadual boleh mengelirukan: model tidak memberikan respons yang sama setiap kali. Untuk prompt yang sama, model mungkin memilih laluan penaakulan yang sedikit berbeza. Jadi, jika anda menjalankan satu alat beberapa kali pada satu set tugasan, peratusannya berubah sedikit antara larian; perubahan ini dipanggil variasi.
Kesimpulan praktikalnya mudah. Apabila dua baris dalam kedudukan berbeza satu atau dua peratus, perbezaan itu mungkin sekadar hingar. Mengejar alat yang “dua peratus lebih tinggi” ialah tindakan yang tidak bijak: kedudukan kedua-duanya boleh bertukar dalam larian seterusnya. Perbezaan hanya wajar dianggap penting apabila jelas dan kekal merentas set tugasan yang besar; beberapa mata tidak memenuhi syarat itu.
Perkara terakhir, yang hampir selalu lebih penting daripada peratusan itu sendiri, ialah harga. Hasil yang hampir sama boleh menelan kos yang sangat berbeza. Perbandingan kos memerlukan kedua-dua konfigurasi model-dan-harness serta perbelanjaan penuh pada set tugasan dinilai, termasuk percubaan gagal. Bahagikan dengan tugasan dicuba untuk kos setiap percubaan, atau tugasan diselesaikan untuk kos setiap tugasan selesai, dan labelkan ukuran digunakan. Artikel ini tidak membekalkan ukuran kos berpasangan bersumber. Jadi, sentiasa baca baris kedudukan bersama harganya kerana peratusan itu tidak banyak bermakna dengan sendirinya. Artikel tentang kos satu tugasan yang diselesaikan menerangkan cara membandingkan alat secara adil berdasarkan kos.
Bagaimanakah anda boleh membaca sebarang jadual penanda aras dalam seminit?
Perkara utama
Sebelum mempercayai sesuatu kedudukan, tanyakan tujuh soalan: Set tugasan yang mana? Adakah tugasan itu baharu atau lama? Model yang mana? Pembalut ejen yang mana? Tahap penaakulan yang mana? Berapakah kos bagi setiap tugasan? Seberapa besar variasinya? Jika jadual tidak menjawab sekurang-kurangnya separuh daripadanya, anda tidak boleh mempercayainya: kemungkinan besar itu iklan. Semak secara berasingan sama ada tugasan dalam set itu menyerupai kerja sebenar anda kerana peratusan yang jujur pada tugasan orang lain tetap tidak boleh dianggap sama untuk projek anda.
Biar saya ringkaskan semuanya dalam senarai semak pendek. Buka mana-mana jadual kedudukan dan semak tujuh perkara ini mengikut turutan.
- Set tugasan yang mana? HumanEval lemah pada masa ini; SWE-bench lebih hampir dengan kerja sebenar. Jika nama set itu langsung tidak dinyatakan, tidak perlu membaca lebih lanjut.
- Adakah tugasan itu baharu atau lama? Set yang baharu atau sebahagiannya tertutup lebih boleh dipercayai daripada set awam lama yang mungkin telah dipelajari oleh model.
- Model yang mana diukur? Nama dan versi yang tepat, bukannya “AI” yang tidak jelas atau nama keluarga model.
- Pembalut ejen yang mana? Peratusan itu merujuk kepada gabungan “model tambah pembalut”. Jika pembalut tidak dinyatakan, anda tidak tahu perkara yang diukur.
- Tahap penaakulan yang mana? Model yang sama memberikan peratusan dan kos berbeza pada tahap berlainan.
- Berapakah kos satu tugasan? Hasil yang hampir sama boleh berbeza berkali-kali ganda dari segi harga. Baca peratusan bersama kosnya.
- Apakah variasinya? Perbezaan satu atau dua mata antara baris selalunya sekadar hingar.
Ada soalan kelapan, dan soalan ini tentang anda: Adakah tugasan dalam set itu menyerupai kerja anda? Penanda aras tugasan Python tidak banyak memberi maklumat kepada seseorang yang membina laman web atau bot dengan set alat yang berbeza. Angka yang jujur daripada tugasan orang lain pun tidak menjamin hasil pada projek anda. Hanya ada satu cara yang boleh dipercayai untuk menyemaknya: jalankan beberapa tugasan biasa anda menggunakan alat tersebut dan lihat sendiri hasilnya. Artikel tentang cara menyemak kod yang dijana oleh AI menerangkan cara memastikan kod itu berfungsi jika anda sendiri tidak mengatur cara.
Jadi, apakah yang patut anda lihat pada akhirnya?
Perkara utama
Lihat syarat di sebalik baris teratas, bukan baris teratas itu sahaja: set tugasan dan tahap kebaharuannya, gabungan “model tambah pembalut”, tahap penaakulan, kos bagi setiap tugasan dan kadar variasi. Angka kosong tanpa syarat-syarat ini tidak membuktikan apa-apa. Ingat juga bahawa peratusan yang jujur pada tugasan orang lain tidak boleh dianggap sama untuk projek anda: kata putus sentiasa bergantung pada ujian menggunakan tugasan sebenar anda sendiri, dan hasil anda lebih bergantung pada cara anda bekerja dengan alat itu berbanding kedudukannya dalam senarai.
Inti utama seluruh artikel ini ringkas: kedudukan dalam senarai ialah alasan untuk melihat alat dengan lebih teliti, tetapi anda perlu menyiasat lebih lanjut sendiri. Angka yang tinggi hanya menunjukkan bahawa alat itu memberikan hasil yang baik pada senarai tugasan tertutup tertentu dalam syarat tertentu. Peratusan itu tidak menunjukkan sama ada syarat tersebut sepadan dengan keadaan anda.
Jadi, baca perkara di sebalik baris kedudukan: tugasan yang digunakan, tahap kebaharuannya, gabungan model dan pembalut, tahap penaakulan, kosnya dan sama ada perbezaannya tenggelam dalam hingar. Jadual yang tidak menjawab soalan-soalan ini sesuai diletakkan pada sepanduk iklan. Ulasan tentang alat yang patut dipilih untuk pengaturcaraan pada 2026 menerangkan alat yang patut dipilih untuk tugasan anda.
Dan inilah perkara yang lebih penting daripada mana-mana penanda aras. Alat terbaik dalam kedudukan sekalipun menghadapi kesukaran dengan konteks yang berserabut dan berfungsi dengan baik apabila konteksnya bersih. Kadar kejayaan peribadi anda bergantung pada perkara yang anda berikan kepada model dan cara anda menetapkan tugasan; baris jadual ialah perkara kedua. Kedudukan itu membantu menyingkirkan pilihan yang jelas lemah, tetapi andalah yang menghasilkan keputusan.
Sumber
- HumanEval - set data openai/openai_humaneval (huggingface.co) - set 164 tugasan Python yang disemak dengan ujian automatik
Kedudukan dalam senarai membantu menyingkirkan pilihan yang lemah, tetapi hasil pada projek anda bergantung pada kaedahnya: klon AI tambah Second Brain tambah kejuruteraan konteks.
Untuk kerja seterusnya—Ailoot.
Butiran lanjut
Soalan lazim: Cara Membaca Penanda Aras Pengaturcaraan AI dan Mengelakkan Pilihan Pemenang di Atas Kertas
Apakah yang mesti direkodkan sebelum membandingkan dua baris penanda aras?
Rekod model tepat, harness ejen dan revisi, tetapan penaakulan, subset tugasan, kaedah pemarkahan, tarikh serta sumber hasil langsung. Tanpa medan itu, perbezaan skor tidak boleh dikaitkan dengan satu tetapan yang diubah.
Adakah kos setiap tugasan dicuba sama dengan kos setiap tugasan diselesaikan?
Tidak. Bahagikan jumlah perbelanjaan penilaian dengan semua tugasan dicuba untuk ukuran pertama, atau dengan tugasan diselesaikan untuk ukuran kedua. Sertakan perbelanjaan percubaan gagal dan labelkan penyebut sebelum membandingkan harga.