セーフポイントバイアスなしでCPU、割り当て、ロック、ネイティブメモリを計測する、低オーバーヘッドのJavaサンプリングプロファイラ。
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
pip で Scalene をインストールする
python3 -m pip install -U scalene - 2
プログラムをプロファイリングする
scalene run your_prog.py - 3
ブラウザーでプロファイルを表示する
scalene view
使う前に知っておきたいこと
- GPU プロファイリングは現在、NVIDIA ベースのシステムに限られています。
- AI による最適化の提案を利用するには、OpenAI、Azure、Amazon Bedrock などのプロバイダー、またはローカルの Ollama モデルの認証情報が必要です。
収録されている特集
トピック
よくある質問
- 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 の数値は毎日更新されます。
関連プロジェクト
NVIDIAのRust向けCUDAプラットフォーム。ホスト用ランタイムクレートに加え、RustでGPUカーネルを書くためのSIMTモデルとTileモデルを提供します。
コードの変更やプロセスの再起動をせず、実行中のPythonプログラムにアタッチできるサンプリングプロファイラー。
profile.proto形式のプロファイリングデータを可視化・分析するコマンドラインツール兼Webツール。
CPUやメモリのパフォーマンス問題の切り分けに使える無料のWindowsツール。.NETランタイム上で動くコードの調査にも対応しています。
Pythonに組み込めるプログラミング言語。数値計算カーネルをJITコンパイルし、CUDA、Vulkan、MetalなどのCPUやGPUで実行できます。