Foundation Models で開発したエージェンティックな挙動のデバッグ手法。ツリー構造でツール呼び出しの内部的なプロンプトを詳らかにできるのは相当助かりそう。あと、タイムプロファイラの読み方も勘所が理解しやすかった。
Debug and profile agentic app experiences with Instruments
1:57 – LLM app development mindset
- LLM アプリ開発特有の 3 つの課題
- 確率的な出力:非決定的なレスポンスにより標準的なユニットテストが機能しない
- モデル間通信:複数のモデルにわたるデータフローの調整が必要
- オブザーバビリティ:マルチモデルパイプラインのどこで問題が発生したかを特定する難しさ
- ツール呼び出しを含むループ、ステップが増えるほどレイテンシが増しと障害要員が増える
3:59 – Inspect and diagnose an agentic experience
- デモアプリ:craft companion(ジャーナリングアプリ)
- インタラクティブなブレインストーミング機能を持つ
- 2 組の Dynamic Instructions を使用
GenerateCraftIdeaToolアイデア生成用SwitchToTutorialModeToolチュートリアル作成用
- いずれも Private Cloud Compute のサーバーモデルを使用
5:02 – Recording a trace with Instruments
- Instruments でのプロファイリング手順
- Foundation Models テンプレートを選択してセッションを記録
- セキュリティ上の注意点
- プロンプトなど機密データがトレースファイルに含まれるため取り扱いに注意
6:04 – Navigating the Instruments UI
- Foundation Models インストゥルメントのレイアウト
- タイムラインのトラックとレーン
- instructions レーン:Dynamic Instructions の活動、指示とツールのセットがアクティブだった時間を示す(アクティブだったツールセットの個数を調べられる)
- model inference レーン:各バーの色毎に推論の所要時間を表示
- 黄色:システムが入力プロンプトの処理に要した時間
- オレンジ:応答の生成に要した時間
- タイムラインのトラックとレーン
- ツリービューの階層構造
- セッション → リクエスト → 推論 → ツールコール
- 各レベルでのプロンプト・レスポンス・メタデータを確認可能
DynamicInstructionsの toolsets にSwitchToTutorialModeToolを追加し忘れていたことが判明
12:07 – Performance metrics
- LLM 体験のパフォーマンス計測に使う 3 つの主要指標
- Time-to-first-token(最初のトークンが返るまでの時間)
- プロンプトを短くすることで短縮可能
- Tokens-per-second(全体的な生成速度)
- プロンプト間でベンチマークを取って比較、リグレッション検出に使用
- Total latency(全体のレイテンシ、ユーザーが最も体感する数値)
- ストリーミングを活用することで部分的な結果を表示し、体感的な待ち時間を削減
- Time-to-first-token(最初のトークンが返るまでの時間)