본문으로 건너뛰기

[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 러너가 추가되면서 필요해진 러너별 차등 병렬도 설정이 핵심이다.

참고 자료

⚠️ 알림: 이 분석은 AI가 실제 코드 diff를 기반으로 작성했습니다.

댓글

관련 포스트

PR Analysis 의 다른글