مقابلة ذاتية التقييم لنماذج ترميز الذكاء الاصطناعي.
11/21 كان هذا المشروع صعبًا للغاية ، وأنا المشرف! لقد قضيت بعض الوقت في إعادة إنشاء البرامج النصية للمقابلة ، وتحديث المتطلبات.
11/20 إعادة تقييم codeqwen2.5 (أوزان جديدة). تقييم MISTRAL-SMALL-2409 و DISTRAL-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 و Nothropic.
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-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 تقييم yi-coder-1.5b-chat و yi-coder-9b-chat (FP16) ، و 9 ب على وجه الخصوص قوي للغاية.
junior-v2
هو مجموعة متعددة اللغات (Python ، JavaScript) من 12 اختبارًا تم إنشاؤه لهذا المشروع لاختبار أداء ترميز LLM الصغير. يوفر هذا المشروع جميع المكونات اللازمة لتنفيذ هذا التقييم.
؟ humaneval
هو جناح Python فقط من 164 اختبار تم إنشاؤه بواسطة Openai. يوفر هذا المشروع البرامج النصية للقالب لإعداد وتنفيذ مقابلة Humaneval ، وكذلك كنصوص استخراج النتائج لمساعدة المقيمين. انظر https://github.com/openai/human-eval لمزيد من المعلومات.
يتم الآن تضمين جميع إجابات النموذج ونتائج التقييم داخل هذا المستودع! قم بتثبيت إصدار حديث من STREMELIT pip install streamlit==1.23
ثم streamlit run app.py
OR streamlit run compare-app.py
لتشغيل WebApps أعلاه محليًا.
؟ يتم إيقاف Humaneval/ Development Work حاليًا ، وهناك مشاريع أخرى أكثر من ذلك بكثير.
انظر https://github.com/my-othor-github-account/llm-humaneval-benchmarks و https://github.com/abacaj/code-eval للحصول على قوائم كبيرة من نتائج مؤشر Humaneval LLM.
junior-v2/*.yaml
- أسئلة مقابلة المبرمج Junior (مستقر)senior/*.yaml
- أسئلة مقابلة المبرمج العليا (WIP)prompts/*.txt
- قوالب موجه LLM للموديلات المختلفةprepare.py
يطبق القوالب على التشكيك في تحويلها إلى مطالبات خاصة باللغة والنموذج مناسبة للمقابلة انظر المطالبات/ للحصول على جميع المراجع في المتصدرين.
params/*.json
- مجموعات عينة من المعلمات (تستخدمها جميع البرامج النصية للمقابلة)interview-*.py
انظر params/ للاطلاع على جميع مراجع params في المتصدرين.
evaluate.py
. - قم بتشغيل الاختبارات للرمز الذي تم إنشاؤه في صندوق الرمل ودرجات كل إجابةapp.py
-SPEREMLIT WEBAPP لاستكشاف النتائج ، راجع https://huggingface.co/spaces/mike-ravkine/can-ai-code-resultscompare.py
compare-app.py
-STREMLIT 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 | 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 (المحولات) | interview-cuda.py | المحولات == 4.37.2 |
غلاف المشرف الموصى به هو interview_modal_cuda11.py
التي تبني حاوية تعتمد على CUDA11.8 مع جميع التبعيات المذكورة أعلاه. يتم توفير interview_modal_cuda12.py
أيضًا ، لكن AutogptQ و Ctranslate2 غير متوافقين.
لسوء الحظ ، لا تسمح طبيعة Modal اختيار سطر الأوامر لنموذج 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
اختيارية وتوفر أي سياق مطلوب لأداء المهمة بشكل صحيح يتم استخدام هذه المتغيرات الأربعة جنبا إلى جنب مع language
(إما python
أو javascript
) لتوسيع القوالب في prompts/
.
يتم استخدام الحقلين الأخيرين عن طريق evaluate.py
للحكم على النتائج:
Description
هو شرح قابل للقراءة للإنسان لماذا هذا الاختبار مفيدChecks
السلوك المتوقع للإخراج. يحتوي كل شيك على اسم ، وبعض قيمة assert
(رمز Python) وقيمة eq
المتوقعة.
يمثل كائن F عرض صندوق الرمل للوظيفة. يتم إجراء التحليل الثابت على توقيع الوظيفة لاستخراج حقول f.name
و f.args
، بينما يسمح f.call
بتقييم الوظيفة.
جميع البرامج النصية مخرجات تسمية تلقائيًا. ndjson إلى results/
الدليل.
كل مرحلة تخرج مجموعة كبيرة من الحقول من المرحلة التي سبقتها ، لذلك من الممكن إطعام eval/المقابلة مرة أخرى للمقابلة (لإعادة تشغيل الأسئلة) أو العودة إلى 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