Repolode
plasma-umass

plasma-umass/scalene

CPU・GPU・メモリ使用量を行単位で表示し、AIによる最適化案も任意で生成できるPythonプロファイラー。

スター
13,549
フォーク
446
未解決の Issue
154
最終コミット
5 日前

これは何?

Scaleneは、PythonプログラムのCPU時間、NVIDIA GPU時間、メモリ割り当てを、行単位と関数単位で計測するプロファイラーです。Pythonコードの実行時間と、C/C++ライブラリなどのネイティブコードの実行時間を分けて表示し、I/Oのボトルネックを特定しやすいようシステム時間も報告します。トレースではなくサンプリングを使うため、計測処理を挿入するタイプのプロファイラーと比べてオーバーヘッドを低く抑えています。

実行時間の計測に加え、Scaleneはメモリの増加量やコピー量を追跡し、メモリリークの可能性が高い行を示します。また、コルーチンの待機時間を割り当ててasyncコードを計測できます。結果はオフラインで使えるWeb GUI、ターミナル、または単体のHTMLファイルで確認できます。VS CodeやJupyterからも実行でき、free-threaded Python 3.13tおよび3.14tに対応しています。

Scaleneは、プロファイルで特定したホットスポットをOpenAI、Azure、Amazon BedrockなどのAIプロバイダーや、ローカルのOllamaモデルに送信し、コードの最適化案を提案させることができます。提案はGUIから必要に応じて生成でき、利用者自身が認証情報を用意する必要があります。

主な機能

  • 01行ごとに、Pythonコード・ネイティブコード・システム時間の内訳を含むCPU時間を報告する。
  • 02NVIDIA GPU時間とメモリ割り当てをプロファイルし、行ごとのメモリ増加量も表示する。
  • 03メモリリークの可能性を検出し、Pythonとライブラリ間のコピー量を計測する。
  • 04asyncのawait時間と並行度を行ごとに割り当てて表示する。
  • 05オフライン対応のWeb GUI、ターミナル出力、単体HTMLへのエクスポートを提供する。

ユースケース

  • 遅いPythonスクリプトで、どの行がCPUやメモリを最も消費しているかを特定する。
  • 速度低下の原因がPythonコード、ネイティブライブラリ、I/Oのどれなのかを診断する。
  • データパイプラインのメモリリークや、不要なnumpyからlistへの変換を追跡する。
  • asyncサービスをプロファイルし、awaitが直列化されているか並行実行されているかを確認する。

クイックスタート

  1. 1

    pip で Scalene をインストールする

    python3 -m pip install -U scalene
  2. 2

    プログラムをプロファイリングする

    scalene run your_prog.py
  3. 3

    ブラウザーでプロファイルを表示する

    scalene view

使う前に知っておきたいこと

  • GPU プロファイリングは現在、NVIDIA ベースのシステムに限られています。
  • AI による最適化の提案を利用するには、OpenAI、Azure、Amazon Bedrock などのプロバイダー、またはローカルの Ollama モデルの認証情報が必要です。

収録されている特集

トピック

#python#profiling#performance-analysis#memory-profiling#cpu-profiling#gpu#async#cpu#gpu-programming#memory-allocation

よくある質問

scalene とは?
CPU・GPU・メモリ使用量を行単位で表示し、AIによる最適化案も任意で生成できるPythonプロファイラー。 Scaleneは、PythonプログラムのCPU時間、NVIDIA GPU時間、メモリ割り当てを、行単位と関数単位で計測するプロファイラーです。Pythonコードの実行時間と、C/C++ライブラリなどのネイティブコードの実行時間を分けて表示し、I/Oのボトルネックを特定しやすいようシステム時間も報告します。トレースではなくサンプリングを使うため、計測処理を挿入するタイプのプロファイラーと比べてオーバーヘッドを低く抑えています。
scalene は無料で使えますか?ライセンスは?
scalene は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
scalene は今もメンテナンスされていますか?
活発にメンテナンス中。scalene の最終コミットは 2026年11月1日 です。
scalene は何に使えますか?
遅いPythonスクリプトで、どの行がCPUやメモリを最も消費しているかを特定する。 速度低下の原因がPythonコード、ネイティブライブラリ、I/Oのどれなのかを診断する。 データパイプラインのメモリリークや、不要なnumpyからlistへの変換を追跡する。 asyncサービスをプロファイルし、awaitが直列化されているか並行実行されているかを確認する。
scalene のインストール方法は?
pip で Scalene をインストールする: python3 -m pip install -U scalene プログラムをプロファイリングする: scalene run your_prog.py ブラウザーでプロファイルを表示する: scalene view
scalene はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/plasma-umass/scalene

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト