トレーシングに関する FAQ
Q: トレーシングによって生じるレイテンシーのオーバーヘッドはどれくらいですか?
トレースは、パフォーマンスへの影響を最小限に抑えるために非同期的に書き込まれます。ただし、トレースでは、特にトレース・サイズが大きい場合に、遅延が最小限に抑えられます。MLflow では、アプリケーションをテストして、レイテンシの影響のトレースを理解してから、本番運用にデプロイすることをお勧めします。
次の表は、トレース サイズによる待機時間の影響の概算を示しています。
要求あたりのトレース サイズ | 応答速度の遅延 (ミリ秒) への影響 |
|---|---|
~10キロバイト | ~1ミリ秒 |
~1メガバイト | 50 ~ 100 ミリ秒 |
10MB | 150ミリ秒~ |
Q:MLflow Tracing のDatabricks のレート制限とクォータとは何ですか?
Databricksワークスペース内でMLflow Tracing使用する場合、サービスの安定性と公正な使用を確保するためにクォータとレート制限が適用されます。 リソース制限を参照してください。
Q: MLflow UI でトレースを開くことができません。どうしたらいいでしょう。
MLflow UI でトレースが表示されない理由は複数考えられます。
-
トレースがまだ完了していない : トレースがまだ収集されている場合、MLflow は UI にスパンを表示できません。すべてのスパンが「OK」または「ERROR」ステータスで適切に終了していることを確認します。
-
ブラウザーのキャッシュが古い : MLflow を新しいバージョンにアップグレードすると、ブラウザーのキャッシュに古いデータが含まれ、UI にトレースが正しく表示されない可能性があります。ブラウザのキャッシュをクリアし (Shift+F5)、ページを更新します。
Q: モデルの実行が停止し、トレースが永遠に「進行中」になります。
モデルまたはエージェントが長時間実行される操作や無限ループに陥り、トレースが「進行中」状態のままになることがあります。
これを防ぐには、 MLFLOW_TRACE_TIMEOUT_SECONDS 環境変数を使用してトレースのタイムアウトを設定します。トレースがタイムアウトを超えた場合、MLflow は ERROR ステータスでトレースを自動的に停止し、バックエンドにエクスポートするため、スパンを分析して問題を特定できます。デフォルトでは、タイムアウトは設定されていません。
タイムアウトは MLflow トレースにのみ適用されます。メイン・プログラム、モデル、またはエージェントは、トレースが停止しても実行を続けます。
たとえば、次のコードでは、タイムアウトを 5 秒に設定し、MLflow が実行時間の長い操作を処理する方法をシミュレートします。
import mlflow
import os
import time
# Set the timeout to 5 seconds for demonstration purposes
os.environ["MLFLOW_TRACE_TIMEOUT_SECONDS"] = "5"
# Simulate a long-running operation
@mlflow.trace
def long_running():
for _ in range(10):
child()
@mlflow.trace
def child():
time.sleep(1)
long_running()
MLflow は、バックグラウンド スレッドでトレースの実行時間と有効期限を監視します。デフォルトでは、このチェックは毎秒実行され、リソースの消費はごくわずかです。間隔を調整する場合は、 MLFLOW_TRACE_TIMEOUT_CHECK_INTERVAL_SECONDS 環境変数を設定できます。
Q: マルチスレッドを実行すると、トレースが複数のトレースに分割されます。それらを 1 つのトレースに結合するにはどうすればよいですか?
MLflow Tracing Python ContextVar に依存するため、各スレッドは当然ながら独自のトレース コンテキストを持ちますが、いくつかの追加ステップでマルチスレッド アプリケーション用の単一のトレースを生成することが可能です。 詳細については、マルチスレッドのセクションを参照してください。
Q: トレースを一時的に無効にするにはどうすればいいですか?
トレースを 無効に するために、 mlflow.tracing.disable API は MLflow 内からのトレース データの収集を停止し、ログを記録しません
トレースに関する MLflow Tracking サービスへのデータ。
トレース を有効にする ために (一時的に無効になっていた場合)、API はインストルメント化されたモデルのトレース機能を再度有効にします mlflow.tracing.enable
呼び出されます。