AI編碼模型的自我評估訪談。
11/21這個項目太難使用了,我是維護者!我花了一些時間重構採訪腳本,更新需求。
11/20 re-評估Codeqwen2.5(新權重)。評估Mistral-Small-2409和Ministral-8B-2410。評估GPT-4O-2024-11-20。
11/13評估QWEN2.5(FP16,GGUF Q8,EXL2 8BPW),OPENCODER(1.5B和8B在FP16時)。
10/26評估Qwen2.5(3b,7b,14b fp16 | 14b,32b,72b awq)和Qwen-Coder2.5
10/26更新所有可用的OpenAI,Mistral和人類模型的評估。
10/25評估IBM Granite/Granite-3.0家族(8B密度,2B密集,1B Moe,3B Moe)。由於轉換工作,不得不短暫停滯,但是現在努力趕上積壓的問題,如果我錯過了最後〜6週,如果有任何有趣的代碼模型或新家庭,那麼如果我錯過了任何有趣的代碼模型或新家庭! Qwen2.5和Llama3.2將於本週末舉行。
9/12修復了評估器中的一個序列化錯誤,對四個結果產生了負面影響:DeepSeek-ai-Deepseek-coder-v2-lite-lite-instruct-fp16,IBM Granite-Granite-Granite-Granite- 8B-8B-Code-NF4,Ajibawa-2023--2023-- Code-llama-3-8B,Ollama-Phi3:3.8b-Mini-Instruct-4K-FP16
9/11評估Yi-Coder-1.5b-Chat和Yi-Coder-9b-Chat(FP16),尤其是9B非常強。
junior-v2
是一套多語言(Python,JavaScript)套件,該套件是為該項目創建的12個測試,用於測試小LLM編碼性能。該項目提供了執行此評估的所有必要組件。
? humaneval
是由Openai創建的164次測試的僅Python套件。該項目提供了模板腳本來準備和執行人道訪談,以及結果提取腳本以幫助其評估者。有關更多信息,請參見https://github.com/openai/human-eval。
現在,所有模型答案和評估結果都包含在此存儲庫中!安裝簡化pip install streamlit==1.23
,然後streamlit run app.py
或streamlit run compare-app.py
以本地運行上述WebApps。
? Humaneval/ Development工作目前已暫停,還有其他項目還有很多進一步的項目。
請參閱https://github.com/my-other-github-account/llm-humaneval-benchmarks和https://github.com/abacaj/abacaj/code-eval有關Humaneval LLM基準測試結果的大量列表。
junior-v2/*.yaml
初級編碼員面試問題(穩定)senior/*.yaml
高級編碼員面試問題(WIP)prompts/*.txt
提示模板的各種模型prepare.py
。 有關排行榜中的所有提示,請參見提示/提示。
params/*.json
抽樣超參數集(所有採訪腳本都使用)interview-*.py
採訪腳本有關排行榜中的所有參數參考,請參見參數/。
evaluate.py
。app.py
簡化webApp以探索結果,請參閱https://huggingface.co/spaces/mike-ravkine/can-ai-code-resultscompare.py
進行評估之間的比較,可選地呼籲LLM進行分析compare-app.py
簡化WebApp以探索比較,請參見https://huggingface.co/spaces/mike-ravkine/can-ai-code-comparecompare/*.yaml
比較配置compare/*.json
比較結果API運行時 | 腳本 |
---|---|
Litellm(Openai等) | interview-litellm.py |
oobabooga/koboldcpp | interview-oobabooga.py |
擁抱面推理 | interview-hfinference.py |
Gradio(HF空間) | interview-gradio.py |
量化類型 | 腳本 | 依賴性 |
---|---|---|
GGUF | interview-llamacpp.py | llamacpp或ggml二進制 |
GPTQ(AUTOGPTQ) | interview-cuda.py | 自動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(變形金剛) | interview-cuda.py | 變形金剛== 4.37.2 |
推薦的模態包裝器是interview_modal_cuda11.py
,它構建一個基於CUDA11.8的容器,所有上述依賴項都可以使用。還提供了interview_modal_cuda12.py
,但是AutoGPTQ和Ctranslate2不兼容。
不幸的是,模態的性質不允許選擇EITEHR LLM模型或運行時引擎的命令行選擇。
要選擇模型,請打開腳本並輸入.run_function(download...)
選擇行。請注意,一次只能選擇一個模型。要添加新模型,請實現新的download...
函數。
要選擇運行時,請打開腳本並輸入RUNTIME
選項之一。請注意,對於transformers
您還必須指定QUANT
。
一組面試問題是.YAML文件的文件夾。每個問題都是頂級密鑰:
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 "
在此示例中, SanityList
是面試問題的名稱。
prepare.py
使用前四個字段來創建面試:
Signature
是所需功能簽名Input
描述功能輸入Output
描述功能輸出Fact
是可選的,並提供了正確執行任務所需的任何上下文這4個變量以及language
( python
或javascript
)用於在prompts/
中擴展模板。
最後兩個字段用於evaluate.py
來判斷結果:
Description
是人類可讀的解釋,說明為什麼該測試很有用Checks
定義了輸出的預期行為。每個檢查都有一個名稱,一些assert
值(Python代碼)和一個預期的eq
值。
F對象表示函數的沙盒視圖。對函數簽名進行靜態分析以提取f.name
和f.args
字段,而f.call
允許進行函數評估。
所有腳本都將.ndjson文件自動輸出到results/
目錄。
每個階段都會從之前的階段輸出一定的領域,因此可以回顧/面試回面試(以重新解決問題)或返回評估(重新運行評估)。
results/prepare_{interview}_{languages}_{template}.ndjson
字段:
results/interview_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
字段:
prepare
字段results/eval_{interview}_{languages}_{template}_{templateout}_{params}_{model}_{timestamp}.ndjson
字段:
eval
字段