> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ja/gaido/developer-guide/profiling.md).

# Workflow プロファイリング

プロファイリングを有効にすると、Workflow の実行時間を測定し、パフォーマンスのボトルネックを特定できます。プロファイリングのトレースは、可視化のために Chrome の組み込みトレースツールと互換性があります。

## サンプル Workflow

このガイドのスクリーンショットでは、以下のワークフローを例として使用しています。2回のオブジェクト検出、動的クロッピング、Google Gemini への呼び出し、およびいくつかの可視化ステップが含まれます:

<figure><img src="/files/a0907cd1fddbb2b34b845df65581f2c9ee34f122" alt="Example workflow in the Roboflow editor"><figcaption><p>下のプロファイリング用スクリーンショットで使用されているサンプル Workflow</p></figcaption></figure>

## Inference SDK を使用したプロファイリング

HTTP クライアント経由でワークフローを実行する際にプロファイリングを有効にするには、まず self-hosted の [Inference Server](https://docs.roboflow.com/deployment/self-hosted/inference-server) を `ENABLE_WORKFLOWS_PROFILING=True` 環境変数で起動する必要があります。その後、HTTP クライアント経由でワークフローを実行する際に、 `enable_profiling=True`:

```python
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

client = InferenceHTTPClient(
    api_url="http://localhost:9001", # Serverless Cloud API はプロファイリングをサポートしていません
    api_key="API_KEY"
).configure(InferenceConfiguration(api_key_transport="header"))

result = client.run_workflow(
    workspace_name="workspace-name",
    workflow_id="workflow-id",
    images={"image": "YOUR_IMAGE.jpg"},
    enable_profiling=True
)
```

プロファイリングが有効な場合、トレースファイルは自動的に `./inference_profiling/` に保存されます。各トレースファイル名はデフォルトで `workflow_execution_tack_{timestamp}.json`.

## プロファイリングトレースの表示

プロファイリングのトレースは Chrome Tracing 形式で保存されます。表示するには:

1. Chrome を開き、 `chrome://tracing/`.
2. を開きます **Load** をクリックし、トレースファイルを選択します（例: `workflow_execution_tack_2026_03_30_10_46_04.json`).
3. タイムラインビューを使って、各ワークフローステップの実行タイミングを確認します。

任意のスパンをクリックすると、その継続時間、カテゴリ、引数が表示されます。たとえば、どのブロックの `step_execution` を見ているのかがわかります:

<figure><img src="/files/bdbd064f083837083aefc6bc799f35b63fccee47" alt="Chrome tracing timeline with a selected step"><figcaption></figcaption></figure>

時間の大半は、2回のオブジェクト検出（process 57）と Gemini 呼び出し（process 78）に費やされています。拡大すると、オブジェクト検出のステップの間にある他のステップ（検出オフセット、動的クロッピング、可視化など）が見えます:

<figure><img src="/files/5d2822ee21512c644f453f6ff4d80fab89171e62" alt="Chrome tracing aggregated statistics view"><figcaption></figcaption></figure>

## 主な詳細

| 詳細         | 値                                                    |
| ---------- | ---------------------------------------------------- |
| **トレース形式** | JSON、Chrome の `chrome://tracing/` ツールと互換性あり          |
| **出力先**    | `./inference_profiling/` デフォルト（設定可能）                 |
| **ファイル命名** | `workflow_execution_tack_{YYYY_MM_DD_HH_MM_SS}.json` |

## 制限事項

* **コンパイルのオーバーヘッド**: Workflow のコンパイルにより 10〜25ms の遅延が追加されます。これは、GPU 推論時間と同程度の小規模・高速なモデルでは大きな影響があります。このオーバーヘッドは、動画処理では最初の開始時に 1 回だけ発生します。
* **実行エンジンのレイテンシ**: Workflows 実行エンジンは、1フレームあたり約 1〜2ms の通常レイテンシを追加します。
* **動的ブロック**: 動的ブロックを使用する self-hosted デプロイでは、pydantic モデルの再構築により、リクエストごとに +100〜140ms のレイテンシが発生する場合があります。これは、ホスト型プラットフォームや、コンパイルが 1 回だけ行われる動画処理には適用されません。
* **モデルブロックの支配度**: 通常、実行時間の約 95% はモデル推論自体に費やされます。これには、追加のデータ変換とメタデータ管理も含まれます。

## パフォーマンスのヒント

* Workflow 定義はデフォルトで 15 分間キャッシュされます。必要に応じて `use_cache=False` を `run_workflow()` で使用して、キャッシュを回避してください。
* 動画処理では、コンパイルのオーバーヘッドは開始時に 1 回だけ発生するため、無視できるほど小さいです。
* ワークフローをプロファイルして、ボトルネックがモデル推論、データ変換、ワークフローのオーケストレーションのどこにあるかを特定してください。
