
Wawancara yang mengevaluasi diri untuk model pengkodean AI.
11/21 Proyek ini terlalu sulit digunakan, dan saya pemelihara! Saya telah menghabiskan beberapa waktu untuk refactoring skrip wawancara, memperbarui persyaratan.txt dan ada panduan evaluasi baru untuk mengevaluasi kedua model dan API.
11/20 Evaluasi Ulang CodeQWEN2.5 (Bobot Baru). Evaluasi Mistral-Small-2409 dan Ministral-8B-2410. Evaluasi GPT-4O-2024-11-20.
11/13 Mengevaluasi QWEN2.5 (32B di FP16, GGUF Q8, EXL2 8BPW), OpenCoder (1.5b dan 8b di FP16).
10/26 Mengevaluasi QWEN2.5 (3B, 7B, 14B FP16 | 14B, 32B, 72B AWQ) dan QWEN-CODER2.5
10/26 Perbarui Evaluasi semua model OpenAi, Mistral dan Anthropic yang tersedia.
10/25 mengevaluasi keluarga IBM-Granite/Granite-3.0 (8b padat, 2b padat, 1b moe, 3b moe). Harus melakukan jeda singkat karena beralih pekerjaan tetapi sekarang berupaya untuk mengejar ketinggalan jaminan jadi masalah terbuka jika ada model kode menarik atau keluarga baru dalam ~ 6 minggu terakhir yang saya lewatkan! Qwen2.5 dan llama3.2 akan berlangsung akhir pekan ini.
9/12 Memperbaiki bug serialisasi pada evaluator yang secara negatif mempengaruhi empat hasil: Deepseek-ai-deepseek-coder-v2-lite-instruct-fp16, IBM-Granite-Granite-8B-Code-Instruct-NF4, Ajibawa-2023- Code-llama-3-8B, Ollama-PHI3: 3.8B-mini-instruct-4K-Fp16
9/11 Mengevaluasi yi-coder-1..5b-chat dan yi-coder-9b-chat (fp16), 9b khususnya sangat kuat.
junior-v2 adalah rangkaian multi-bahasa (Python, JavaScript) dari 12 tes yang dibuat untuk proyek ini untuk menguji kinerja pengkodean LLM kecil. Proyek ini menyediakan semua komponen yang diperlukan untuk menjalankan evaluasi ini.
? humaneval adalah rangkaian khusus Python dari 164 tes yang dibuat oleh Openai. Proyek ini menyediakan skrip templat untuk mempersiapkan dan melaksanakan wawancara manusia, serta skrip ekstraksi hasil untuk membantu evaluator mereka. Lihat https://github.com/openai/human-eval untuk informasi lebih lanjut.
Semua jawaban model dan hasil evaluasi sekarang disertakan di dalam repositori ini! Instal rilis terbaru dari streamLit pip install streamlit==1.23 Kemudian streamlit run app.py atau streamlit run compare-app.py untuk menjalankan Webapps di atas secara lokal.
? Pekerjaan humaneval/ pengembangan saat ini dijeda, ada proyek lain yang jauh lebih jauh.
Lihat https://github.com/my-other-github-account/llm-humaneval-benchmarks dan https://github.com/abacaj/code-eval untuk daftar besar hasil benchmark llm humaneval.
junior-v2/*.yaml - Pertanyaan Wawancara Coder Junior (Stabil)senior/*.yaml - Pertanyaan Wawancara Senior Coder (WIP)prompts/*.txt - Templat prompt LLM untuk berbagai modelprepare.py Berlaku templat untuk mempertanyakan mengubahnya menjadi petunjuk bahasa dan model khusus yang cocok untuk wawancara Lihat Prompt/ Untuk Semua Prompt Referensi di Papan Peringkat.
params/*.json - Pengambilan Sampel Hyper -Parameter Sets (Digunakan oleh semua skrip wawancara)interview-*.py - Skrip wawancara Lihat Params/ untuk semua referensi params di papan peringkat.
evaluate.py - Jalankan tes untuk kode yang dihasilkan di kotak pasir dan menilai setiap jawabanapp.py -streamlit Webapp untuk menjelajahi hasil, lihat https://huggingface.co/spaces/mike-ravkine/can-ai-code-resultscompare.py - melakukan perbandingan antara evaluasi, secara opsional memanggil LLM untuk analisiscompare-app.py -StreamLit Webapp untuk mengeksplorasi perbandingan, lihat https://huggingface.co/spaces/mike-ravkine/can-ai-code-comparecompare/*.yaml - Bandingkan Konfigurasicompare/*.json - Bandingkan Hasil | Runtime API | Naskah |
|---|---|
| Litellm (openai, dll.) | interview-litellm.py |
| Oobabooga/Koboldcpp | interview-oobabooga.py |
| Huggingface Inference | interview-hfinference.py |
| Gradio (ruang HF) | interview-gradio.py |
| Tipe kuantisasi | Naskah | Ketergantungan |
|---|---|---|
| GGUF | interview-llamacpp.py | biner LAMACPP atau GGML |
| GPTQ (Autogptq) | interview-cuda.py | Auto-GPTQ == 0.6.0 |
| GPTQ (Exllama) | interview-cuda.py | Exllama @ 3B013CD53C7D413CF99CA04C7C28DD5C95117C0D |
| EXL2, GPTQ (exllama2) | interview-cuda.py | exllamav2 @ 0.0.12 |
| HQQ | interview-cuda.py | HQQ @ 0.1.1 |
| AWQ, FP16 (VLLM) | interview-cuda.py | vllm == 0.3.0 |
| Ctranslate2 | interview-cuda.py | Ctranslate2> = 3.16.0 |
| Bitsandbytes | interview-cuda.py | Bitsandbytes == 0.41.3 |
| FP16 (Transformers) | interview-cuda.py | Transformers == 4.37.2 |
Pembungkus modal yang disarankan adalah interview_modal_cuda11.py yang membangun wadah berbasis CUDA11.8 dengan semua dependensi di atas berfungsi. interview_modal_cuda12.py juga disediakan, tetapi AutogptQ dan Ctranslate2 tidak kompatibel.
Sayangnya sifat modal tidak memungkinkan pemilihan baris perintah dari model Eitehr LLM atau mesin runtime.
Untuk memilih model, buka skrip dan uncomment baris pilihan .run_function(download...) . Perhatikan bahwa hanya satu model yang dapat dipilih sekaligus. Untuk menambahkan model baru, terapkan fungsi download... baru.
Untuk memilih runtime, buka skrip dan uncomment salah satu opsi RUNTIME . Perhatikan bahwa untuk transformers Anda juga harus menentukan QUANT .
Satu set pertanyaan wawancara adalah folder file .yaml. Setiap pertanyaan adalah kunci tingkat atas:
SanityList :
Signature : " things() "
Input : " with no inputs "
Output : " a list with three values: the number 5, the string 'foobar', the capital city of Spain "
Fact : " the capital city of Spain is Madrid "
Description : " List function, see if the model can combine input facts with internal knowledge. "
Checks :
input_name :
assert : " f.name "
eq : " things " Dalam contoh ini SanityList adalah nama pertanyaan wawancara.
Empat bidang pertama digunakan oleh prepare.py untuk membuat wawancara:
Signature adalah tanda tangan yang diinginkanInput menjelaskan input fungsiOutput menjelaskan output fungsiFact adalah opsional dan menyediakan konteks apa pun yang diperlukan untuk melakukan tugas dengan benar 4 variabel ini bersama dengan language (baik python atau javascript ) digunakan untuk memperluas templat dalam prompts/ .
Dua bidang terakhir digunakan oleh evaluate.py untuk menilai hasilnya:
Description adalah penjelasan yang dapat dibaca manusia tentang mengapa tes ini bermanfaatChecks menentukan perilaku yang diharapkan dari output. Setiap cek memiliki nama, beberapa nilai assert (Kode Python) dan nilai eq yang diharapkan.
Objek F mewakili tampilan kotak pasir dari fungsi. Analisis statis dilakukan pada tanda tangan fungsi untuk mengekstrak bidang f.name dan f.args , sedangkan f.call memungkinkan untuk evaluasi fungsi.
Semua skrip output secara otomatis bernama .ndjson file ke results/ direktori.
Setiap tahap mengeluarkan super-set bidang dari tahap sebelumnya, jadi dimungkinkan untuk memberi makan eval/wawancara kembali untuk wawancara (untuk menjalankan kembali pertanyaan) atau kembali ke eval (untuk menjalankan kembali eval).
results/prepare_{interview}_{languages}_{template}.ndjson
Bidang:
results/interview_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
Bidang:
prepare bidang results/eval_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
Bidang:
eval