[sglang] CI에 네트워크 타임아웃 추가 및 러너별 동적 병렬도 설정
PR 링크: sgl-project/sglang#21800 상태: Merged | 변경: +30 / -16
들어가며
SGLang CI는 다양한 GPU 러너(H100, 5090, 2-GPU)에서 테스트를 실행한다. 기존에는 모든 러너가 동일한 max_parallel 값을 사용했고, 네트워크 요청에 타임아웃이 없어 CI가 무한 대기할 수 있었다. 이 PR은 러너별 차등 병렬도와 네트워크 타임아웃을 도입한다.
핵심 코드 분석
1. 러너별 동적 병렬도
Before:
# 모든 러너에 동일한 max_parallel 적용
echo "max_parallel=14" >> $GITHUB_OUTPUT # 또는 3
After:
if [[ "$FULL" == "true" ]]; then
echo "max_parallel=14" >> $GITHUB_OUTPUT # 1-gpu-h100
echo "max_parallel_small=8" >> $GITHUB_OUTPUT # 1-gpu-5090
echo "max_parallel_2gpu=4" >> $GITHUB_OUTPUT # 2-gpu-h100
else
echo "max_parallel=3" >> $GITHUB_OUTPUT
echo "max_parallel_small=3" >> $GITHUB_OUTPUT
echo "max_parallel_2gpu=2" >> $GITHUB_OUTPUT
fi
H100(14파티션), 5090(8파티션), 2-GPU(4파티션)에 맞는 병렬도를 각각 설정한다.
2. 네트워크 타임아웃 추가
Before:
response = requests.get(url, stream=True)
# 타임아웃 없음 - 무한 대기 가능
After:
response = requests.get(url, stream=True, timeout=120)
# 데이터셋 다운로드: 120초
with urllib.request.urlopen(fpath, timeout=30) as f:
# MGSM 예제 로드: 30초
3개 파일(simple_eval_common.py, simple_eval_mgsm.py, vlm_utils.py)에서 네트워크 요청에 타임아웃을 추가했다.
왜 이게 좋은가
- CI 안정성 향상: 네트워크 장애 시 무한 대기 대신 타임아웃으로 빠른 실패
- 리소스 효율성: 5090(8파티션)과 2-GPU(4파티션) 러너에 과도한 병렬도를 부여하지 않아 OOM이나 리소스 경합 방지
- 유지보수성:
FULL플래그로 로직을 한 곳에서 관리하고 러너별 값을 분기
정리
CI 인프라의 안정성과 리소스 효율성을 동시에 개선하는 실용적인 변경이다. 특히 5090 GPU 러너가 추가되면서 필요해진 러너별 차등 병렬도 설정이 핵심이다.
참고 자료
- sgl-project/sglang#21800 — 원본 PR
⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [Open WebUI] replaceTokens 함수에 early return 추가로 스트리밍 성능 개선
- 현재글 : [sglang] CI에 네트워크 타임아웃 추가 및 러너별 동적 병렬도 설정
- 다음글 [sglang] run_eval에 latency 및 throughput 메트릭 추가
댓글