본문으로 건너뛰기

[sglang] SGLang Ascend NPU에서 Ring-SP를 활용한 성능 최적화 가이드

PR 링크: sgl-project/sglang#21811 상태: Merged | 변경: +56 / -0

들어가며

최근 대규모 언어 모델 및 확산 모델(Diffusion Models)의 추론 속도를 높이기 위해 분산 병렬 처리 기법이 필수적으로 요구되고 있습니다. 특히 Ascend NPU 환경에서 SGLang을 사용하는 개발자들은 모델의 연산 효율을 극대화할 방법을 찾고 있습니다. 이번 PR은 Wan2.1-T2V-1.3B-Diffusers 모델을 대상으로 Ascend NPU에서 Ring-SP(Ring Sequence Parallelism)를 적용했을 때의 성능 이점을 문서화하고, 이를 재현 가능한 벤치마크 형태로 제공합니다.

코드 분석

이번 변경 사항은 주로 문서화에 집중되어 있으며, Ascend NPU 사용자가 Ring-SP를 설정하고 성능을 측정하는 방법을 명확히 가이드합니다.

1. 문서 구조 업데이트 (docs/platforms/ascend/ascend_npu_support.rst)

기존 Ascend NPU 지원 문서 목록에 새로운 성능 가이드를 추가하여 사용자가 쉽게 접근할 수 있도록 했습니다.

+   ascend_npu_ring_sp_performance.md

2. 성능 벤치마크 가이드 추가 (docs/platforms/ascend_npu_ring_sp_performance.md)

새로 추가된 파일은 u1r1(Baseline)과 u1r2(Ring-SP) 설정 간의 구체적인 실행 커맨드와 성능 데이터를 포함합니다.

# Ring-SP (u1r2) 실행 예시
sglang generate --model-path /nas/disk1/Wan2.1-T2V-1.3B-Diffusers \
    --prompt "a cat is playing piano" --num-gpus 2 --ring-degree 2 \
    --save-output

이 문서는 torch_npu==2.10.0 환경에서 Denoising 단계가 1.97배 가속됨을 명시하고 있습니다.

왜 이게 좋은가

이번 최적화의 핵심은 분산 병렬 처리(Ring-SP)를 통한 연산 부하 분산입니다.

성능 개선 수치

  • Total Speedup: 1.88배 (266.50s -> 141.86s)
  • Denoising Stage: 1.97배 가속

기술적 교훈

  1. 병렬 처리의 효율성: ring-degree=2 설정을 통해 단일 NPU 대비 연산 부하를 분산함으로써, 특히 무거운 Denoising 단계에서 2배에 가까운 선형적인 성능 향상을 얻을 수 있음을 입증했습니다.
  2. 환경 제약 사항의 문서화: Device do not support double dtype now, dtype cast replace with float와 같은 런타임 경고를 문서에 명시함으로써, 향후 동일한 환경에서 작업하는 개발자들이 겪을 수 있는 혼란을 줄였습니다.
  3. 재현성 확보: 단순히 성능 수치만 나열하는 것이 아니라, 정확한 모델 경로와 프롬프트, 실행 커맨드를 제공하여 커뮤니티의 검증을 용이하게 했습니다.

이번 PR은 단순히 기능을 추가하는 것을 넘어, 특정 하드웨어(Ascend NPU)에서의 최적화 경로를 표준화했다는 점에서 큰 의미가 있습니다.

참고 자료

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

댓글

관련 포스트

PR Analysis 의 다른글