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 建议。

典型工作流程

  1. scalene run my_app.py – 进行分析运行。
  2. scalene view – 打开交互式 GUI。
  3. 检查热点行、内存泄漏候选点或 GPU 瓶颈。
  4. 点击行上的 AI 图标以获取 GPT-4(或其他模型)的建议。
  5. 应用建议的更改,重新进行分析并迭代。

适用人群 – 需要为数据科学笔记本、Web 服务、科学模拟或任何混合了纯 Python、C 扩展(NumPy、PyTorch 等)及可选 GPU 任务的代码提供高分辨率性能数据的 Python 开发者。对于希望在不离开分析器的情况下获得快速、模型驱动的提示的团队来说,AI 建议层特别方便。


链接

相关

  • Dispatch
  • 项目
  • 项目
  • 项目
  • 项目