Skip to main content
このページでは、大規模なデータセットで W&B Weave の評価を実行する際に発生するクリーンアップ時間の長期化を抑えるため、併用できる 2 つの方法を説明します。対象は、評価コードの実行が完了してからプログラムが終了するまでの間に、長い待ち時間が発生していることに気付いたユーザーです。 以下のセクションでは、保留中のバックグラウンド処理をフラッシュする方法と、クライアントの並列性を高める方法について説明します。

保留中のバックグラウンド処理をフラッシュする

フラッシュを実行すると、保留中のバックグラウンド処理は、コードの実行完了後に待つのではなく、メインスレッドと並行して強制的に完了します。 大規模なデータセットで評価を実行すると、データセットがバックグラウンドスレッドでアップロードされるため、プログラムの実行完了までに長い遅延が発生することがあります。これは、バックグラウンドのクリーンアップが完了する前に、メインスレッドの実行が終了した場合に発生します。client.flush() を呼び出すと、すべてのバックグラウンドタスクがメインスレッドで処理されるため、メインスレッドの実行中にも並行して処理が進むようになります。これにより、データのサーバーへのアップロードより先にユーザーコードが完了する場合に、パフォーマンスが向上することがあります。 次の例では、評価の後に保留中のバックグラウンド処理をフラッシュします。
client = weave.init("fast-upload")

# ... 評価のセットアップ
result = evaluation.Evaluate(dataset_id="my_dataset_id")

client.flush()

クライアントの並列性を上げる

クライアントの並列性を上げると、Weave がデータセットのアップロードなどのバックグラウンド処理に使用できるスレッドが増え、フラッシュ処理とあわせてクリーンアップ時間をさらに短縮できます。 Weave は環境に応じてクライアントの並列性を自動的に決定しますが、次の環境変数を使って手動で設定することもできます。
  • WEAVE_CLIENT_PARALLELISM: 並列処理に使用できるスレッド数です。この値を増やすと、データセットのアップロードのようなバックグラウンドタスクのパフォーマンスが向上する可能性があります。
これは、weave.init()settings 引数を使ってプログラムから設定することもできます。
client = weave.init("fast-upload", settings={"client_parallelism": 100})

パフォーマンス 評価