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 和原生堆疊縫合在一起的可視化火焰圖。這讓開發者能夠專注於真正可以修改的代碼。
AI 驅動的建議 – 生成分析報告後,Scalene 可以呼叫 LLM(OpenAI、Azure、Bedrock、Ollama 等)為高亮顯示的行或區域提出具體的優化建議。您只需在 Web 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 與原生時間,以及系統 I/O 時間。 |
| GPU 分析 | 報告 NVIDIA GPU 時間(如果存在)。 |
| 記憶體分析 | 逐行分配、複製量、洩漏檢測以及 Python 與原生記憶體拆分。 |
| Async/await 洞察 | 將 wall-clock 等待時間歸於協程掛起的行,並提供並行統計。 |
| 縫合的 Python + C 堆疊 | 將 Python 幀與解構後的 C/C++ 幀結合在一起的火焰圖和時間軸。 |
| 精簡分析報告 | --reduced-profile 將輸出限制在超過可配置閾值的行。 |
| 多進程與多執行緒支援 | 支援 multiprocessing 模組及 Python 執行緒。 |
| Free-threaded Python (3.13t/3.14t) 支援 | 在即將推出的 free-threaded 解釋器上提供完整的 CPU + 記憶體分析。 |
| 離線 Web UI | 所有資源均已打包;--standalone 可創建單一的自包含 HTML 檔案。 |
| AI 優化 | 從多種提供商處一鍵生成 LLM 建議。 |
典型工作流程
scalene run my_app.py– 進行分析執行。scalene view– 打開互動式 GUI。- 檢查熱點行、記憶體洩漏候選點或 GPU 瓶頸。
- 點擊行上的 AI 圖標以獲取 GPT-4(或其他模型)的建議。
- 應用建議的更改,重新進行分析並迭代。
適用人群 – 需要為數據科學筆記本、Web 服務、科學模擬或任何混合了純 Python、C 擴充(NumPy、PyTorch 等)及可選 GPU 任務的代碼提供高解析度效能數據的 Python 開發者。對於希望在不離開分析器的情况下獲得快速、模型驅動的提示的團隊來說,AI 建議層特別方便。
連結
- PyPI: https://pypi.org/project/scalene/
- Conda-forge: https://anaconda.org/conda-forge/scalene
- VS Code extension: https://marketplace.visualstudio.com/items?itemName=EmeryBerger.scalene
- Web UI demo: https://scalene-gui.github.io/scalene-gui/
- Talk (PyCon 2021): https://youtu.be/5iEf-_7mM1k
相關
- Dispatch
- 專案
- 專案
- 專案
- 專案