Benchmark · coding
EvalPlus
EvalPlus, HumanEval और MBPP बेंचमार्क को कहीं अधिक टेस्ट केस के साथ बढ़ाकर (HumanEval+ और MBPP+ के रूप में) LLM द्वारा जनित कोड की शुद्धता की कठोर जाँच करता है; मापदंड है pass@k (आमतौर पर pass@1)।
और पढ़ें
- उदाहरण
- एक Python फ़ंक्शन-कम्प्लीशन कार्य: फ़ंक्शन सिग्नेचर और कुछ उदाहरणों वाले प्राकृतिक-भाषा docstring को देखकर मॉडल फ़ंक्शन का body लिखता है, जिसे फिर एक बहुत बड़े टेस्ट सेट पर चलाया जाता है जो उन किनारे के मामलों (खाली इनपुट, सीमाएँ, बड़े मान) को जोड़ता है जिन्हें मूल बेंचमार्क छोड़ देता था।
- स्कोरिंग
- मापदंड pass@k है, लगभग हमेशा pass@1। किसी समस्या को हल तभी माना जाता है जब जनित कोड सभी टेस्ट पास कर ले (मूल «base» टेस्ट और नए «plus» टेस्ट दोनों)। pass@k एक निष्पक्ष अनुमान है: n≥k सैंपल और c सही होने पर 1 − C(n−c, k)/C(n, k); रिपोर्ट किया गया स्कोर पूरे सेट में हल की गई समस्याओं का अनुपात होता है।
- सत्यापन
- हर समाधान को sandbox में पूरे base+plus सेट के विरुद्ध प्रति-टेस्ट टाइमआउट के साथ चलाया जाता है और तभी स्वीकार किया जाता है जब सभी assertion पास हों। अतिरिक्त इनपुट type-aware mutation और LLM सीडिंग से बनाए जाते हैं और सत्यापित संदर्भ समाधानों के विरुद्ध छाने जाते हैं, इसलिए «passed» का अर्थ है हर इनपुट पर संदर्भ से मेल खाना।
- यह क्यों मायने रखता है
- HumanEval/MBPP के मूल टेस्ट सेट बहुत कमज़ोर हैं और प्रशंसनीय पर ग़लत कोड को पास कर देते हैं, जिससे मॉडल की शुद्धता बढ़ा-चढ़ाकर दिखती है; EvalPlus के ~80× (HumanEval+) और ~35× (MBPP+) बड़े सेट इन त्रुटियों को पकड़ते हैं और आमतौर पर pass@1 को कई अंक गिरा देते हैं, जिससे यह कोड-LLM के मूल्यांकन का अधिक विश्वसनीय मानक बन जाता है।
हल किया गया उदाहरण
कार्य
EvalPlus (HumanEval+) शैली का प्रतिनिधि आइटम — फ़ंक्शन के signature और docstring से उसका body पूरा करें:
```python
from typing import List
def sum_even_at_odd_index(numbers: List[int]) -> int:
"""Return the sum of all even values located at odd indices.
>>> sum_even_at_odd_index([3, 8, 7, 4, 5])
12
>>> sum_even_at_odd_index([1, 3, 5])
0
"""
```
समाधान
```python
def sum_even_at_odd_index(numbers: List[int]) -> int:
return sum(n for i, n in enumerate(numbers) if i % 2 == 1 and n % 2 == 0)
```
व्याख्या
समाधान enumerate से सूची पर चलता है, विषम इंडेक्स (i % 2 == 1) पर स्थित सम मान (n % 2 == 0) को रखता है और उन्हें जोड़ता है, जो docstring के दोनों उदाहरणों और खाली या पूर्णतः विषम सूची जैसे किनारे के मामलों से मेल खाता है। ग्रेडिंग pass/fail है: फ़ंक्शन पूरे base+plus सेट पर चलाया जाता है और आइटम तभी गिना जाता है जब सभी टेस्ट पास हों।
इस benchmark के लिए अभी तक कोई सत्यापित स्कोर रिपोर्ट नहीं किया गया है।