profile-engine
Pythonエンジンをプロファイリングして、NumPy/Numbaコード内のパフォーマンスボトルネックを特定できます
description の原文を見る
Profile the Python engine to identify performance bottlenecks in NumPy/Numba code
SKILL.md 本文
OSMOSE Python エンジンをプロファイルし、パフォーマンスボトルネックと Numba JIT コンパイルの問題を特定します。
引数
config(オプション): "bob"(ビスケー湾)または "eec"(EEC)— デフォルト: "bob"years(オプション): シミュレーション年数(デフォルト: 5)focus(オプション): 詳細プロファイルを実施する特定モジュール(例:"predation"、"movement")
ステップ
-
cProfile を実行して高レベルな関数別実行時間の内訳を取得します:
.venv/bin/python -m cProfile -s cumulative -m osmose.engine.cli --config {config} --years {years} 2>&1 | head -40CLI エントリーポイントがない場合は、以下のインラインアプローチを使用します:
.venv/bin/python -c " import cProfile from scripts.benchmark_engine import run_benchmark cProfile.run('run_benchmark()', sort='cumulative') " 2>&1 | head -40 -
上位 5 つのホットスポットを特定: cProfile 出力から、累積実行時間が最も長い関数をリストアップします。NumPy/Numba 内部ではなく、
osmose/engine/内の関数に焦点を当てます。 -
ホットスポット関数の Numba JIT ステータスを確認します:
.venv/bin/python -c " import numba numba.config.DEVELOPER_MODE = True # モジュールをインポートして JIT コンパイルをトリガーします from osmose.engine.processes import predation print('Numba JIT compilation successful') "以下の点を確認してください:
- object モードにフォールバックしている関数(パフォーマンスが低下)
- 型推論の失敗
@njit内での非対応 Python 機能
-
ベクトル化されていないループを確認: ホットスポットファイルから、ベクトル化すべき配列に対する Python ループを検索します:
grep -n "for.*in range" osmose/engine/processes/{focus}.pyNumPy ブロードキャストで対応可能な配列要素の反復処理をフラグします。
-
メモリ割り当てパターンを確認: ホットループ内の配列割り当てを探します:
grep -n "np.zeros\|np.empty\|np.array" osmose/engine/processes/{focus}.py可能な限り、配列はループの外で事前割り当てしてください。
-
ベースラインタイミングと比較:
- ビスケー湾 5 年ベースライン: ~2.0s
- EEC 5 年ベースライン: ~5.2s
現在のタイミングがベースラインを >10% 超過する場合、性能低下としてフラグします。
-
結果をテーブルで報告します:
順位 関数 実行時間 (s) 総計比率 問題 1 predation._compute_kernel X.XX XX% — 2 movement._distribute X.XX XX% ベクトル化されていないループ -
特定されたボトルネックに対する最適化を提案します:
- Python ループ → NumPy ベクトル化
- NumPy 操作 → Numba
@njit - 繰り返される割り当て → 事前割り当てバッファ
- object モード Numba → 型アノテーションの修正
ルール
.venv/bin/pythonを常に使用し、システム python は使用しません/home/razinka/osmose/osmose-python/から実行します- 初回 JIT コンパイルは遅い — 2 回実行して 2 回目(ウォーム)のタイミングを報告します
- プロファイリング中にエンジンコードを変更しません — これは読み取り専用の分析です
- 提案される最適化が適用された後、常に同等性を検証します
- パフォーマンスベースライン: BoB 5 年 ~2.0s、EEC 5 年 ~5.2s(Python)、Java BoB ~2.3s、EEC ~7.2s
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- razinkele
- リポジトリ
- razinkele/osmopy
- ライセンス
- MIT
- 最終更新
- 2026/5/8
Source: https://github.com/razinkele/osmopy / ライセンス: MIT
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。