94057c3d3e
PR Test (NPU) / check-changes (push) Has been cancelled
PR Test (NPU) / pr-gate (push) Has been cancelled
PR Test (NPU) / set-image-config (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-1-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (0) (push) Has been cancelled
PR Test (NPU) / stage-b-test-2-npu-a2 (1) (push) Has been cancelled
PR Test (NPU) / stage-b-test-4-npu-a3 (push) Has been cancelled
PR Test (NPU) / stage-b-test-16-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-1-npu-a3 (push) Has been cancelled
PR Test (NPU) / multimodal-gen-test-2-npu-a3 (push) Has been cancelled
PR Test (Arm64) / pr-gate (push) Has been cancelled
PR Test (Arm64) / check-changes (push) Has been cancelled
PR Test (Arm64) / build-test (push) Has been cancelled
PR Test (sgl-router) / gate (push) Has been cancelled
PR Test (sgl-router) / tier-1 — lint (push) Has been cancelled
PR Test (sgl-router) / tier-2 — build + test (push) Has been cancelled
PR Test (sgl-router) / tier-3 — docker (placeholder) (push) Has been cancelled
PR Test (sgl-router) / tier-3 — k8s integration (push) Has been cancelled
PR Test (sgl-router) / tier-3 — e2e (push) Has been cancelled
PR Test (sgl-router) / finish (push) Has been cancelled
PR Test (NPU) / single-node-poc (map[name:qwen3_6_27b_w8a8_1p_in64k_out1k_50ms runner:linux-aarch64-a3-2 test_case:test/registered/ascend/performance/qwen3_6_27b/test_npu_qwen3_6_27b_w8a8_1p_in64k_out1k_50ms.py test_type:perf]) (push) Has been cancelled
PR Test (NPU) / pr-test-npu-finish (push) Has been cancelled
PR Test (Xeon) / pr-gate (push) Has been cancelled
PR Test (Xeon) / check-changes (push) Has been cancelled
PR Test (Xeon) / build-test (, xeon-gnr, base-b-test-cpu) (push) Has been cancelled
PR Test (XPU) / check-changes (push) Has been cancelled
PR Test (XPU) / pr-gate (push) Has been cancelled
PR Test (XPU) / stage-a-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / wait-for-stage-a (push) Has been cancelled
PR Test (XPU) / stage-b-test-1-gpu-xpu (push) Has been cancelled
PR Test (XPU) / finish (push) Has been cancelled
CI Model Inventory / build-inventory (push) Has been cancelled
Lint / lint (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Compilation Check (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Manual Policy (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark - Request Processing (push) Has been cancelled
PR Benchmark (SMG Components) / Benchmark Summary (push) Has been cancelled
PR Test (SMG) / build-wheel (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on windows (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (x86_64 - auto) (push) Has been cancelled
PR Test (SMG) / python-unit-tests (push) Has been cancelled
PR Test (SMG) / unit-tests (push) Has been cancelled
PR Test (SMG) / benchmarks (push) Has been cancelled
PR Test (SMG) / chat-completions (push) Has been cancelled
PR Test (SMG) / chat-completions-4gpu (push) Has been cancelled
PR Test (SMG) / e2e (push) Has been cancelled
PR Test (SMG) / docker-build-test (push) Has been cancelled
PR Test (SMG) / k8s-integration (push) Has been cancelled
PR Test (SMG) / finish (push) Has been cancelled
PR Test (SMG) / summarize-benchmarks (push) Has been cancelled
Release SGLang Model Gateway Docker Image / publish (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on macos (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - auto) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (aarch64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / build on linux (x86_64 - musllinux_1_1) (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Build SDist (push) Has been cancelled
Release SGLang Model Gateway to PyPI / Upload to PyPI (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (aarch64, 12.9, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu129-matrix (x86_64, 12.9, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu129 (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (aarch64, 13.0, 3.10, arm-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / build-cu130-matrix (x86_64, 13.0, 3.10, x64-kernel-build-node) (push) Has been cancelled
Release SGLang Kernels / release-cu130 (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 700) (push) Has been cancelled
Release SGLang Kernels / build-rocm-matrix (3.10, 720) (push) Has been cancelled
Release SGLang Kernels / release-rocm700 (push) Has been cancelled
Release SGLang Kernels / release-rocm720 (push) Has been cancelled
Release SGLang Kernels / build-musa43 (43, 3.10) (push) Has been cancelled
Release SGLang Kernels / release-musa43 (push) Has been cancelled
132 lines
5.6 KiB
Python
132 lines
5.6 KiB
Python
# Adapted from https://github.com/openai/simple-evals/
|
|
|
|
"""
|
|
HumanEval: Evaluating Large Language Models Trained on Code
|
|
Mark Chen and Jerry Tworek and Heewoo Jun and Qiming Yuan and Henrique Ponde de Oliveira Pinto and Jared Kaplan and Harri Edwards and Yuri Burda and Nicholas Joseph and Greg Brockman and Alex Ray and Raul Puri and Gretchen Krueger and Michael Petrov and Heidy Khlaaf and Girish Sastry and Pamela Mishkin and Brooke Chan and Scott Gray and Nick Ryder and Mikhail Pavlov and Alethea Power and Lukasz Kaiser and Mohammad Bavarian and Clemens Winter and Philippe Tillet and Felipe Petroski Such and Dave Cummings and Matthias Plappert and Fotios Chantzis and Elizabeth Barnes and Ariel Herbert-Voss and William Hebgen Guss and Alex Nichol and Alex Paino and Nikolas Tezak and Jie Tang and Igor Babuschkin and Suchir Balaji and Shantanu Jain and William Saunders and Christopher Hesse and Andrew N. Carr and Jan Leike and Josh Achiam and Vedant Misra and Evan Morikawa and Alec Radford and Matthew Knight and Miles Brundage and Mira Murati and Katie Mayer and Peter Welinder and Bob McGrew and Dario Amodei and Sam McCandlish and Ilya Sutskever and Wojciech Zaremba
|
|
https://arxiv.org/abs/2107.03374 https://github.com/openai/human-eval/
|
|
"""
|
|
|
|
import random
|
|
import re
|
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
|
from typing import Dict, List, Optional
|
|
|
|
try:
|
|
from human_eval.data import read_problems
|
|
from human_eval.evaluation import estimate_pass_at_k
|
|
from human_eval.execution import check_correctness # , unsafe_execute
|
|
except (ImportError, ModuleNotFoundError):
|
|
print("\nPlease install human-eval at https://github.com/openai/human-eval.\n")
|
|
raise
|
|
|
|
from sglang.test import simple_eval_common as common
|
|
from sglang.test.simple_eval_common import (
|
|
HTML_JINJA,
|
|
Eval,
|
|
EvalResult,
|
|
SamplerBase,
|
|
SingleEvalResult,
|
|
)
|
|
|
|
|
|
def evaluate_functional_correctness(
|
|
sample: Dict[str, str],
|
|
completions: List[str],
|
|
n_workers: int = 4,
|
|
timeout: float = 3.0,
|
|
):
|
|
"""
|
|
Evaluates the functional correctness of generated samples, and writes
|
|
results to f"{sample_file}_results.jsonl.gz"
|
|
"""
|
|
|
|
# Check the generated samples against test suites.
|
|
with ThreadPoolExecutor(max_workers=n_workers) as executor:
|
|
futures = []
|
|
for i, completion in enumerate(completions):
|
|
args = (sample, completion, timeout, i)
|
|
future = executor.submit(check_correctness, *args)
|
|
futures.append(future)
|
|
results = []
|
|
for future in as_completed(futures):
|
|
result = future.result()
|
|
results.append(result)
|
|
passed = [int(r["passed"]) for r in results]
|
|
return passed
|
|
|
|
|
|
class HumanEval(Eval):
|
|
def __init__(
|
|
self,
|
|
num_examples: Optional[int],
|
|
num_threads: int,
|
|
num_samples_per_task: int = 5,
|
|
ks_passes: List[int] = [1, 2, 5],
|
|
timeout: int = 120,
|
|
):
|
|
self.seed = 0
|
|
self.examples = read_problems()
|
|
self.examples = list(self.examples.values())
|
|
|
|
self._num_examples = num_examples
|
|
if self._num_examples:
|
|
self.examples = random.Random(self.seed).sample(self.examples, num_examples)
|
|
self._num_samples_per_task = num_samples_per_task
|
|
self._ks_passes = ks_passes
|
|
self._timeout = timeout
|
|
self._num_threads = num_threads
|
|
|
|
def __call__(self, sampler: SamplerBase) -> EvalResult:
|
|
instruction = "Read the following function signature and docstring, and fully implement the function described. Your response should only contain the code for this function.\n"
|
|
|
|
def find_code(completion):
|
|
completion = completion or ""
|
|
pattern = re.compile(r"```python\n(.*?)```", re.DOTALL)
|
|
matches = pattern.findall(completion)
|
|
extracted_answer = matches[0] if len(matches) >= 1 else completion
|
|
extracted_answer = extracted_answer[
|
|
extracted_answer.find(":\n ") + 2 :
|
|
] # remove signature
|
|
return extracted_answer
|
|
|
|
def fn(sample: Dict[str, str]):
|
|
prompt_messages = [
|
|
sampler._pack_message(
|
|
role="user", content=instruction + sample["prompt"]
|
|
)
|
|
]
|
|
completions = [
|
|
find_code(sampler(prompt_messages))
|
|
for _ in range(self._num_samples_per_task)
|
|
]
|
|
results = evaluate_functional_correctness(sample, completions)
|
|
total = len(results)
|
|
correct = sum(results)
|
|
score = sum(results) / len(results)
|
|
html = common.jinja_env.from_string(HTML_JINJA).render(
|
|
prompt_messages=prompt_messages,
|
|
next_message=dict(content=completions[0], role="assistant"),
|
|
score=score,
|
|
correct_answer=[1] * len(results),
|
|
extracted_answer=results,
|
|
)
|
|
convo = prompt_messages + [
|
|
dict(content=completion, role="assistant") for completion in completions
|
|
]
|
|
return SingleEvalResult(
|
|
html=html,
|
|
score=score,
|
|
convo=convo,
|
|
metrics={
|
|
f"pass@{k}": estimate_pass_at_k([total], [correct], k)
|
|
# this will be aggregated so no need of .mean()
|
|
for k in self._ks_passes
|
|
if total >= k
|
|
},
|
|
)
|
|
|
|
results = common.map_with_progress(
|
|
fn, self.examples, num_threads=self._num_threads
|
|
)
|
|
return common.aggregate_results(results)
|