콘텐츠로 이동

프로파일링 가이드

vLLM RBLN의 성능을 최적화하기 위해서는 기본 메트릭인 TTFT(Time To First Token)와 TPOT(Time Per Output Token) 외에도, RBLN NPU의 동작을 심층적으로 분석할 수 있는 저수준(Low-level) 프로파일링이 필요합니다.

본 문서에서는 PyTorch-Level ProfilerRBLN Profiler라는 두 가지 방식의 프로파일링 가이드를 제공합니다.

1. Pytorch-Level Profiler

PyTorch 프로파일러를 활용하여 연산 단위의 성능을 측정하는 방법입니다. 이를 통해 커널(Kernel) 실행 시간과 연산 병목 구간을 분석할 수 있습니다. vLLM RBLN은 공식 vLLM Profiling 가이드와 동일한 인터페이스를 지원합니다.

1.1 환경 설정

프로파일링 결과(Trace)를 저장할 경로를 지정하기 위해 환경 변수 VLLM_TORCH_PROFILER_DIR을 설정해야 합니다.

export VLLM_TORCH_PROFILER_DIR=/path/to/save/trace

1.2. Offline Inference 프로파일링

Python 스크립트를 통한 오프라인 추론 시, start_profile()stop_profile() 메서드를 사용하여 측정하고자 하는 구간을 설정합니다.

from vllm import LLM, SamplingParams

# LLM 초기화
llm = LLM(
    model="/path/to/model",
    # ... 기타 설정
)

# 프로파일링 시작
llm.start_profile()

# 추론 실행
outputs = llm.generate(prompts, sampling_params)

# 프로파일링 종료
llm.stop_profile()

1.3. Online Inference 프로파일링

API 서버를 통한 온라인 추론 시, 별도의 엔드포인트를 호출하여 프로파일링을 제어합니다.

  1. /start_profile 엔드포인트를 호출하여 프로파일링을 시작합니다.
  2. /v1/chat/completions 등 실제 추론 요청을 보냅니다.
  3. /stop_profile 엔드포인트를 호출하여 프로파일링을 종료하고 결과를 저장합니다.
    # 1. 프로파일링 시작
    curl -X POST http://localhost:8000/start_profile
    
    # 2. 모델 추론 요청 (Generate)
    curl -X POST http://localhost:8000/v1/chat/completions \
        -H "Content-Type: application/json" \
        -d '{
            "model": "/path/to/model",
            "messages": [
                {
                    "role": "user",
                    "content": "Seoul is a"
                }
            ]
        }'
    
    # 3. 프로파일링 종료
    curl -X POST http://localhost:8000/stop_profile
    

1.4 추가 옵션

상세한 분석을 위해 다음 환경 변수들을 추가로 설정할 수 있습니다.

  • VLLM_TORCH_PROFILER_RECORD_SHAPES: 텐서의 Shape 정보를 기록합니다.
  • VLLM_TORCH_PROFILER_WITH_PROFILE_MEMORY: 메모리 사용량을 함께 프로파일링합니다.
  • VLLM_TORCH_PROFILER_WITH_STACK: 소스 코드의 스택 트레이스를 기록합니다.
  • VLLM_TORCH_PROFILER_WITH_FLOPS: 연산량(FLOPS)을 추정하여 기록합니다.

1.5 프로파일 결과 시각화

생성된 프로파일링 트레이스 파일은 Perfetto UI를 통해 시각화할 수 있습니다.

2. RBLN Profiler

RBLN 프로파일러는 RBLN NPU에서 실행되는 워크로드의 성능을 상세히 분석하기 위해 제공되는 소프트웨어 도구입니다. 자세한 내용은 RBLN 프로파일러를 참고 바랍니다.

2.1 제약 사항 및 설정

vLLM RBLN 환경에서 RBLN 프로파일러를 사용한 프로파일링은 멀티프로세스 구성이 비활성화된 상태에서만 지원됩니다. 멀티프로세싱 환경 지원은 추후 업데이트될 예정입니다.

아래와 같이 환경 변수를 설정한 후 vLLM을 실행하면 프로파일링 결과가 생성됩니다.

  • RBLN_PROFILER=1: RBLN 프로파일러 활성화
  • VLLM_ENABLE_V1_MULTIPROCESSING=0: 멀티프로세싱 비활성화
export RBLN_PROFILER=1
export VLLM_ENABLE_V1_MULTIPROCESSING=0

2.2 프로파일 결과 시각화

이 프로파일링 트레이스 파일도 Perfetto UI를 통해 시각화할 수 있습니다. 트레이스 분석에 대한 더 자세한 내용은 Perfetto 분석 방법 문서를 참고하십시오.