Ein selbstbewertetes Interview für KI-Codierungsmodelle.
11/21 Dieses Projekt war zu schwer zu verwenden und ich bin der Betreuer! Ich habe einige Zeit damit verbracht, die Interviewskripte, die Anforderungen zu aktualisieren.
02.11. Bewerten Sie Codesqwen2.5 (neue Gewichte) neu. Bewerten Sie Mistral-Small-2409 und Ministral-8B-2410. Bewerten Sie GPT-4O-2024-11-20.
11/13 Evaluieren Sie QWEN2.5 (32B bei FP16, GGUF Q8, EXL2 8BPW), OpenCoder (1,5B und 8B bei FP16).
10/26 Evaluieren Sie QWEN2.5 (3B, 7B, 14B FP16 | 14B, 32B, 72B AWQ) und QWENCODER2.5
10/26 Aktualisieren Sie die Bewertungen aller verfügbaren OpenAI-, Mistral- und Anthropic -Modelle.
10/25 IBM-Granite/Granite-3,0-Familie (8b-dicht, 2b-dicht, 1b Moe, 3B-MOE). Ich musste eine kurze Pause einlegen, weil sie Jobs gewechselt haben, aber jetzt daran arbeitete, den Rückstand zu machen, also öffnen Sie Probleme, wenn es in den letzten ~ 6 Wochen, die ich verpasst habe, interessante Codemodelle oder neue Familien gibt! Qwen2.5 und Lama3.2 werden dieses Wochenende auftreten.
9/12 Ein Serialisierungsfehler im Evaluator, der vier Ergebnisse negativ beeinflusste: 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 Evaluieren Sie Yi-Coder-1.5b-Chat und Yi-Coder-9b-Chat (FP16), insbesondere ist der 9B sehr stark.
junior-v2
ist eine multisprachige (Python, JavaScript) Suite von 12 Tests, die für dieses Projekt erstellt wurden, um kleine LLM-Codierungsleistung zu testen. Dieses Projekt liefert alle erforderlichen Komponenten, um diese Bewertung auszuführen.
? humaneval
ist eine Nur-Python-Suite von 164 von OpenAI erstellten Tests. Dieses Projekt bietet Vorlagenskripte zur Vorbereitung und Ausführung des Humaneval -Interviews sowie der Ergebnissextraktionskripte, um ihrem Evaluator zu helfen. Weitere Informationen finden Sie unter https://github.com/openai/human-eval.
Alle Modellantworten und Bewertungsergebnisse sind jetzt in diesem Repository enthalten! Installieren Sie eine kürzlich veröffentlichte Version von Streamlit pip install streamlit==1.23
und dann streamlit run app.py
oder streamlit run compare-app.py
um die obigen WebApps lokal auszuführen.
? Die Humaner-/ Entwicklungsarbeit wird derzeit durchgeführt, es gibt noch andere Projekte, die viel weiter sind.
Siehe https://github.com/my-other-github-count/llm-humaneval-nchmarks und https://github.com/abacaj/code-eval für große Listen von LLM-Benchmark-Ergebnissen humanerad.
junior-v2/*.yaml
- Junior Codierer -Interviewfragen (stabil)senior/*.yaml
- Senior Codierer Interview Fragen (WIP)prompts/*.txt
- LLM -Eingabeaufforderung Vorlagen für die verschiedenen Modelleprepare.py
Wendet Vorlagen auf, sie in Sprach- und modellspezifische Eingabeaufforderungen zu verwandeln, die für das Interview geeignet sind Siehe Eingabeaufforderungen/ Für alle Aufforderungen Referenzen in der Rangliste.
params/*.json
- Abtasthyper -Parameter -Sets (verwendet von allen Interviewskripten)interview-*.py
- Interviewskripte Siehe Params/ Für alle Parameterreferenzen in der Rangliste.
evaluate.py
- Führen Sie Tests für den generierten Code in einer Sandkiste aus und greifen Sie jede Antwort anapp.py
-streamlit webapp zu den Ergebnissen untersucht werden, siehe https://huggingface.co/spaces/mike-ravkine/can-ai-code-resultscompare.py
- führt Vergleiche zwischen Bewertungen durch und fordert optional eine LLM zur Analyse aufcompare-app.py
-streamlit webApp zu Vergleiche findencompare/*.yaml
- Vergleiche Konfigurationencompare/*.json
- Vergleichen Sie die Ergebnisse API -Laufzeit | Skript |
---|---|
Litellm (Openai usw.) | interview-litellm.py |
Oobabooga/Koboldcpp | interview-oobabooga.py |
Umarmungsface -Inferenz | interview-hfinference.py |
Gradio (HF -Räume) | interview-gradio.py |
Quantisierungstyp | Skript | Abhängigkeit |
---|---|---|
Gguf | interview-llamacpp.py | lamacpp oder ggml binär |
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 (Transformatoren) | interview-cuda.py | Transformatoren == 4.37.2 |
Der empfohlene Modal -Wrapper ist interview_modal_cuda11.py
, der einen CUDA11.8 -basierten Container erstellt, wobei alle oben genannten Abhängigkeiten funktionieren. Ein interview_modal_cuda12.py
wird ebenfalls bereitgestellt, aber Autogptq und ctranslate2 sind nicht kompatibel.
Leider ermöglicht die Art von Modal keine Befehlszeilenauswahl des EITEHR-LLM-Modells oder der Laufzeit-Engine.
Um Modelle auszuwählen, öffnen Sie das Skript und wenden Sie sich an .run_function(download...)
Zeile der Wahl. Beachten Sie, dass jeweils nur ein Modell ausgewählt werden kann. Um ein neues Modell hinzuzufügen, implementieren Sie eine neue download...
Funktion.
Öffnen Sie die Laufzeit, um das Skript zu öffnen und eine der RUNTIME
zu bestimmen. Beachten Sie, dass Sie für transformers
auch QUANT
angeben müssen.
Eine Reihe von Interviewfragen ist ein Ordner von .yaml -Dateien. Jede Frage ist ein Taste auf höchstem Niveau:
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 "
In diesem Beispiel ist die SanityList
der Name der Interviewfrage.
Die ersten vier Felder werden von prepare.py
verwendet, um das Interview zu erstellen:
Signature
ist die gewünschte FunktionssignaturInput
beschreibt die FunktionseingängeOutput
beschreibt die FunktionsausgängeFact
ist optional und bietet einen beliebigen Kontext, der zur korrekten Ausführung der Aufgabe erforderlich ist Diese 4 Variablen zusammen mit language
(entweder python
oder javascript
) werden verwendet, um Vorlagen in prompts/
zu erweitern.
Die letzten beiden Felder werden von evaluate.py
verwendet, um die Ergebnisse zu beurteilen:
Description
ist eine menschlich lesbare Erklärung, warum dieser Test nützlich istChecks
definieren das erwartete Verhalten der Ausgabe. Jeder Scheck hat einen Namen, einen assert
Wert (Python -Code) und einen erwarteten eq
-Wert.
Das F -Objekt repräsentiert die Sandbox -Ansicht der Funktion. Eine statische Analyse wird an der Funktionssignatur durchgeführt, um die f.name
und f.args
-Felder zu extrahieren, während f.call
eine Funktionsbewertung ermöglicht.
Alle Skripte, die automatisch .ndjson -Dateien ausgeben, in die results/
das Verzeichnis.
Jede Stufe gibt einen überlebenden Felder aus der vorangegangenen Phase aus, sodass es möglich ist, Evaly/Interview in das Interview zurückzuführen (um die Fragen neu zu erledigen) oder um die Bewertung zurückzukehren (um die Bewertung neu auszuführen).
results/prepare_{interview}_{languages}_{template}.ndjson
Felder:
results/interview_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
Felder:
prepare
Felder vor results/eval_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
Felder:
eval