정확도 평가
정확도 평가 (Accuracy Evaluation)
Ascend NPU 정확도 평가
Ascend NPU에서 실행되는 SGLang 모델의 정확도 평가를 EvalScope 도구로 수행하는 방법을 설명합니다. 다음 시나리오를 다룹니다:
- 온라인 테스트: SGLang 서버 시작 후 API 인터페이스로 평가
- 텍스트 모델: Qwen2.5-7B-Instruct 예시 사용
- 멀티모달 모델: Qwen2.5-VL-7B-Instruct 예시 사용
출처: 문서
본문
환경 설정 (Environment Setup)
먼저 제공된 컨테이너 이미지로 SGLang 환경을 시작합니다:
docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \
--device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 \
--device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 \
--device=/dev/davinci8 --device=/dev/davinci9 --device=/dev/davinci10 --device=/dev/davinci11 \
--device=/dev/davinci12 --device=/dev/davinci13 --device=/dev/davinci14 --device=/dev/davinci15 \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--volume /usr/local/sbin:/usr/local/sbin \
--volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \
--volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
--volume /etc/ascend_install.info:/etc/ascend_install.info \
--volume /var/queue_schedule:/var/queue_schedule \
--volume ~/.cache/:/root/.cache/ \
--entrypoint=bash \
$IMAGE
```
docker run -it --rm --privileged --network=host --ipc=host --shm-size=16g \
--device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 \
--device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/hisi_hdc \
--volume /usr/local/sbin:/usr/local/sbin \
--volume /usr/local/Ascend/driver:/usr/local/Ascend/driver \
--volume /usr/local/Ascend/firmware:/usr/local/Ascend/firmware \
--volume /etc/ascend_install.info:/etc/ascend_install.info \
--volume /var/queue_schedule:/var/queue_schedule \
--volume ~/.cache/:/root/.cache/ \
--entrypoint=bash \
$IMAGE
```
EvalScope 사용 (Using EvalScope)
EvalScope는 ModelScope의 포괄적 모델 평가 프레임워크로, 정확도 평가와 성능 스트레스 테스트를 모두 지원합니다.
EvalScope 설치
# Method 1: Installing via pip
pip install evalscope
# Method 2: Installing from source
git clone https://github.com/modelscope/evalscope.git
cd evalscope/
pip install -e .
온라인 텍스트 모델 테스트
이 섹션은 SGLang 서버가 이미 실행 중인 온라인 평가 시나리오를 다룹니다.
SGLang 서버 시작
# Set HuggingFace mirror (if network access is restricted)
export HF_ENDPOINT=https://hf-mirror.com
# Start text model server
sglang serve --model-path /home/weights/Qwen2.5-7B-Instruct --attention-backend ascend --host 0.0.0.0 --port 30000 &
SGLang 서버의 자세한 내용은 Ascend NPU 빠른 시작을 참조하세요.
정확도 평가 실행
EvalScope는 OpenAI 호환 API를 통해 SGLang 서버에 연결합니다. 다음 예시는 GSM8K 데이터셋을 사용합니다:
evalscope eval \
--model /home/weights/Qwen2.5-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets gsm8k \
--limit 10
완료되면 다음과 유사한 결과가 표시됩니다:
+---------------------+-----------+----------+----------+-------+---------+---------+
| Model | Dataset | Metric | Subset | Num | Score | Cat.0 |
+=====================+===========+==========+==========+=======+=========+=========+
| Qwen2.5-7B-Instruct | gsm8k | mean_acc | main | 5 | 1.0 | default |
+---------------------+-----------+----------+----------+-------+---------+---------+
참고: 출력 형식은 EvalScope 버전에 따라 약간 다를 수 있습니다. 위 예시는 EvalScope 1.6.x에서 온 것입니다.
--model파라미터가 SGLang 서버의/v1/models엔드포인트가 반환하는 모델 이름과 일치하는지 확인하세요. HF 경로(예:Qwen/Qwen2.5-7B-Instruct)로 서버를 시작할 때는 그 경로를 직접 사용하세요. 로컬 경로의 경우 전체 경로 또는/v1/models가 반환하는 모델 이름을 전달하세요.
온라인 평가의 일반 데이터셋
# MMLU
evalscope eval \
--model /home/weights/Qwen2.5-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets mmlu
# CEval (Chinese evaluation)
evalscope eval \
--model /home/weights/Qwen2.5-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets ceval
# MATH-500
evalscope eval \
--model /home/weights/Qwen2.5-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets math_500
# HumanEval (code generation)
evalscope eval \
--model /home/weights/Qwen2.5-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets humaneval
온라인 멀티모달 모델 테스트
멀티모달 모델 서버 시작
# Start multimodal model server (Qwen2.5-VL-7B-Instruct)
# Multimodal models require both --attention-backend and --mm-attention-backend
sglang serve --model-path /home/weights/Qwen2.5-VL-7B-Instruct \
--attention-backend ascend \
--mm-attention-backend ascend_attn \
--host 0.0.0.0 --port 30000 &
멀티모달 정확도 평가 실행
# MMBench (multimodal evaluation)
evalscope eval \
--model /home/weights/Qwen2.5-VL-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets mm_bench
# MMMU (multimodal comprehensive understanding)
evalscope eval \
--model /home/weights/Qwen2.5-VL-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets mmmu
# HallusionBench (hallucination evaluation)
evalscope eval \
--model /home/weights/Qwen2.5-VL-7B-Instruct \
--api-url http://localhost:30000/v1 \
--api-key EMPTY \
--eval-type openai_api \
--datasets hallusion_bench
자세한 내용은 EvalScope 문서를 참조하세요.
문제 해결 (Troubleshooting)
SGLang 서버 시작 실패
- 디바이스 매핑 확인: A2 시리즈는
davinci[0-7], A3 시리즈는davinci[0-15]사용 - 이미지 태그가 디바이스 유형과 일치하는지 확인: A2 시리즈는
...-910b, A3 시리즈는...-a3 npu-smi info로 NPU 상태 확인- 첫 실행은 모델 다운로드 필요. 네트워크 접근이 제한되면
HF_ENDPOINT=https://hf-mirror.com설정
EvalScope의 서버 연결 실패
- SGLang 서버가 성공적으로 시작되었는지 확인(로그에서
Application startup complete찾기) --api-url이 올바른 포트를 가리키는지 확인(SGLang 기본30000)- URL이
/v1로 끝나는지 확인. 예:http://localhost:30000/v1
EvalScope SSL 인증서 검증 실패
데이터셋이나 모델 경로를 지정하지 않고 EvalScope 명령을 사용하면 자동 다운로드를 시도하며 SSL 인증서 검증 오류가 발생할 수 있습니다:
File "/usr/local/python3.11.14/lib/python3.11/site-packages/requests/sessions.py", line 605, in get
return self.request("GET", url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/python3.11.14/lib/python3.11/site-packages/requests/sessions.py", line 592, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/python3.11.14/lib/python3.11/site-packages/requests/sessions.py", line 706, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/python3.11.14/lib/python3.11/site-packages/requests/adapters.py", line 676, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.modelscope.cn', port=443): Max retries exceeded with url: /api/v1/datasets/AI-ModelScope/gsm8k (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1016)')))
[ERROR] 2026-05-13-02:20:01 (PID:876, Device:-1, RankID:-1) ERR99999 UNKNOWN application exception
임시 해결책(테스트 전용): /usr/local/python3.11.14/lib/python3.11/site-packages/requests/sessions.py로 이동해 class Session 정의를 찾고 self.verify = False로 설정합니다.
안정적 해결책: 이 오류는 기업 TLS 프록시가 자체 서명 인증서를 주입해 발생합니다. requests가 프록시의 CA 번들을 가리키도록 하세요:
# Obtain the CA certificate from your network administrator
# Then set the environment variable:
export REQUESTS_CA_BUNDLE=/path/to/your-proxy-ca-bundle.crt
CA 인증서를 얻을 수 없다면 아래 데이터셋 다운로드 오류에서처럼 데이터셋을 수동으로 다운로드하세요.
EvalScope 요청 재시도 타임아웃
EvalScope가 다음과 같은 오류로 요청을 계속 재시도한다면:
2026-06-22 03:09:03 - evalscope - WARNING: Attempt 4 / 5 failed: ....... Retrying...
2026-06-22 03:09:14 - evalscope - INFO: Evaluating[ceval] 0%| 0/520 [Elapsed: 02:00 < Remaining: ?, ?it/s]
2026-06-22 03:09:19,557 - openai._base_client - INFO: Retrying request to /chat/completions in 0.447260 seconds
2026-06-22 03:09:26,088 - openai._base_client - INFO: Retrying request to /chat/completions in 0.992551 seconds
보통 HTTP 프록시가 로컬 SGLang 서버에 대한 요청을 가로채기 때문입니다. 프록시를 비활성화하세요:
unset http_proxy
unset https_proxy
unset HTTP_PROXY
unset HTTPS_PROXY
데이터셋 다운로드 오류
이 오류의 경우
root@localhost:/home/# wget https://www.modelscope.cn/datasets/evalscope/MMStar/resolve/master/MMStar.tsv
--2026-05-12 12:08:01-- https://www.modelscope.cn/datasets/evalscope/MMStar/resolve/master/MMStar.tsv
Connecting to <PROXY_IP>:<PROXY_PORT>... connected.
ERROR: cannot verify www.modelscope.cn's certificate, issued by ‘<CERT_ISSUER>’:
Self-signed certificate encountered.
To connect to www.modelscope.cn insecurely, use `--no-check-certificate`.
--no-check-certificate를 추가할 수 있습니다.
wget https://www.modelscope.cn/datasets/evalscope/MMStar/resolve/master/MMStar.tsv --no-check-certificate
추가 지원은 SGLang GitHub Issues를 참조하세요.