Самооценка интервью для моделей кодирования искусственного интеллекта.
11/21 Этот проект был слишком трудным в использовании, и я содействие! Я потратил некоторое время на рефактирование сценариев собеседования, обновляя требования.
11/20 переоценка CodeQwen2.5 (новые веса). Оцените Mistral-Small-2409 и министрал-8B-2410. Оценить GPT-4o-2024-11-20.
11/13 Оцените QWEN2,5 (32B при 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 и Antropic.
10/25 Оцените семейство IBM-Granite/Granite-3.0 (8b плотный, 2b плотный, 1B MOE, 3B MOE). Пришлось пройти короткий перерыв из -за переключения рабочих мест, но теперь работая над тем, чтобы наверстать упущенное на отставании, поэтому за последние ~ 6 недель, которые я пропустил! QWEN2.5 и Llama3.2 в эти выходные выйдут.
9/12 Исправлена ошибка сериализации в оценщике, которая негативно повлияла на четыре результата: DeepSeek-a-deepseek-coder-v2-lite-instruct-fp16, IBM-гранит-гранит-8B-код-инстрок-NF4, Ajibawa-2023- CODE-LLAMA-3-8B, OLLAMA-PHI3: 3,8B-MIN-INSTRUCT-4K-FP16
9/11 оценить Yi-Coder-1.5b-Chat и Yi-Coder-9b-чат (FP16), 9b, в частности, очень сильна.
junior-v2
-это многоязычный (Python, Javascript) набор из 12 тестов, созданных для этого проекта для тестирования производительности Small LLM кодирования. Этот проект предоставляет все необходимые компоненты для выполнения этой оценки.
? humaneval
-это набор только для питона из 164 тестов, созданных Openai. Этот проект предоставляет сценарии шаблонов для подготовки и выполнения интервью Humaneval, а также сценарии извлечения результатов, чтобы помочь своему оценщику. См. Https://github.com/openai/human-val для получения дополнительной информации.
Все модельные ответы и результаты оценки теперь включены в этот репозиторий! Установите недавний выпуск Streamlit pip install streamlit==1.23
затем streamlit run app.py
или streamlit run compare-app.py
чтобы запустить вышеуказанные веб-приложения локально.
? В настоящее время приостановлены работы Humaneval/ Development, есть другие проекты, которые намного дальше.
См. Https://github.com/my-other-github-account/llm-humaneval-benchmarks и https://github.com/abacaj/code-val для больших списков результатов Humaneval LLM.
junior-v2/*.yaml
- Вопросы интервью для младшего кодера (стабильная)senior/*.yaml
- Вопросы для интервью с старшим кодером (WIP)prompts/*.txt
prepare.py
применяет шаблоны к вопросу о превращении их в языковые и специфичные для модели подготовки, подходящие для собеседования См. Подсказки/ для всех подсказок ссылок в таблице лидеров.
params/*.json
- Наборы гиперпараметрических отборов (используются всеми сценариями собеседования)interview-*.py
- Сценарии интервью См. Params/ для всех ссылок Params в таблице лидеров.
evaluate.py
.app.py
-Streamlit WebApp для изучения результатов, см. https://huggingface.co/spaces/mike-ravkine/can-ai-code-resultcompare.py
.compare-app.py
-Streamlit WebApp для изучения сравнения, см.compare/*.yaml
- Сравните конфигурацииcompare/*.json
- Сравните результаты Время выполнения API | Сценарий |
---|---|
Litellm (Openai и т. Д.) | interview-litellm.py |
Oobabooga/Koboldcpp | interview-oobabooga.py |
Вывод с объятиями | interview-hfinference.py |
Градио (пространства HF) | interview-gradio.py |
Тип квантования | Сценарий | Зависимость |
---|---|---|
Gguf | interview-llamacpp.py | LMAMACPP или 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 |
битсандбит | 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/
каталог.
Каждый этап выводит супер-набор полей с стадии перед ним, поэтому можно вернуть Eval/Question для собеседования (для повторного запуска вопросов) или обратно, чтобы Eval (для повторного запуска Eval).
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