plasma-umass/scalene

Scalene: a high-performance, high-precision CPU, GPU, and memory profiler for Python with AI-powered optimization proposals

Scalene – Python을 위한 고속 행 단위 CPU/GPU/메모리 프로파일러

개요 – Scalene는 다음 세 가지를 동시에 측정하는 네이티브 코드 지원 Python 프로파일러입니다:

  • CPU 시간 (순수 Python 작업과 네이티브 라이브러리 호출 및 시스템 I/O 분리)
  • GPU 시간 (NVIDIA GPU용)
  • 메모리 사용량 (행별 할당, 복사 볼륨 및 잠재적 누수 포함)

샘플링 방식을 사용하여 오버헤드가 약 10~20%에 불과하므로, 코드에 별도의 계측 코드를 삽입하지 않고도 실제 워크로드를 프로파일링할 수 있습니다.

중요성 – 대부분의 Python 프로파일러는 다음과 같은 한계가 있습니다:

  • 모든 행에 계측 코드를 삽입함 (느림)
  • 함수 수준의 데이터만 제공함
  • C 확장 또는 GPU에서 시간이 얼마나 소요되는지 알려주지 못함 Scalene는 CPU, GPU 및 메모리에 대해 행 단위의 세밀한 통찰력을 제공하며, Python과 네이티브 스택을 결합한 시각적 플레임 차트(flame-charts)를 제공합니다. 이를 통해 개발자는 실제로 수정 가능한 코드에 집중할 수 있습니다.

AI 기반 제안 – 프로파일링이 생성된 후, Scalene는 LLM(OpenAI, Azure, Bedrock, Ollama 등)을 호출하여 강조된 행 또는 영역에 대한 구체적인 최적화 방안을 제안할 수 있습니다. 웹 UI에서 번개(⚡) 또는 폭발(💥) 아이콘을 클릭하기만 하면 모델이 짧은 제안을 반환하며, 이를 클립보드에 복사할 수 있습니다.

사용 방법

  • pip install -U scalene 또는 Conda를 통해 설치합니다.
  • 명령줄에서 실행: scalene run my_script.py (scalene-profile.json 생성).
  • 브라우저(scalene view) 또는 터미널(scalene view --cli)에서 결과를 확인합니다.
  • 옵션: VS Code 확장을 사용하여 에디터 내에서 프로파일링을 시작하고 대화형 UI를 볼 수 있습니다.
  • 프로그래밍 방식으로 프로파일링 호출(scalene_profiler.start()/stop())을 삽입하거나 특정 함수에 @profile 데코레이터를 사용할 수도 있습니다.
  • 설정은 YAML 파일(-c config.yaml)을 통해 제공할 수 있습니다.

주요 기능 (README 목록 기준)

기능 제공 내용
행 단위 CPU 프로파일링 행당 정확한 Python vs 네이티브 시간 및 시스템 I/O 시간 표시.
GPU 프로파일링 NVIDIA GPU 시간 보고 (있는 경우).
메모리 프로파일링 행별 할당, 복사 볼륨, 누수 탐지 및 Python vs 네이티브 메모리 분리.
Async/await 통찰력 코루틴이 중단되는 행에 wall-clock 대기 시간을 할당하고 동시성 통계 제공.
통합된 Python + C 스택 Python 프레임과 demangled C/C++ 프레임을 결합한 플레임 차트 및 타임라인.
프로파일 축소 --reduced-profile을 사용하여 구성 가능한 임계값을 초과하는 행으로 출력을 제한.
멀티프로세싱 및 스레딩 지원 multiprocessing 모듈 및 Python 스레드와 함께 작동.
Free-threaded Python (3.13t/3.14t) 지원 차세대 free-threaded 인터프리터에서 전체 CPU + 메모리 프로파일링 지원.
오프라인 웹 UI 모든 에셋이 번들로 포함됨; --standalone은 단일 독립형 HTML 파일을 생성함.
AI 최적화 다양한 제공업체의 LLM 제안을 클릭 한 번으로 생성.

전형적인 워크플로우

  1. scalene run my_app.py – 실행 프로파일링.
  2. scalene view – 대화형 GUI 열기.
  3. 핫 라인(hot lines), 메모리 누수 후보 또는 GPU 병목 지점 조사.
  4. 라인의 AI 아이콘을 클릭하여 GPT-4(또는 다른 모델)의 제안 받기.
  5. 제안된 변경 사항을 적용하고, 다시 프로파일링하여 반복 수행.

사용 대상 – 데이터 과학 노트북, 웹 서비스, 과학 시뮬레이션 또는 순수 Python, C 확장(NumPy, PyTorch 등) 및 선택적 GPU 작업이 혼합된 코드에 대해 고해상도 성능 데이터가 필요한 Python 개발자. AI 제안 레이어는 프로파일러를 떠나지 않고도 모델 기반의 빠른 힌트를 원하는 팀에게 특히 유용합니다.


링크

관련

  • Dispatch
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트