8

小さなデータセット (12x3 配列) といくつかのパラメーターを取り、いくつかの Python モジュール (線形回帰計算など) を使用していくつかの計算を行う Azure Machine Learning Experiment を作成しました。これはすべてうまくいきます。

実験を展開したので、アプリケーションのフロントエンドから実験にデータを投入したいと考えています。API 呼び出しが行われ、正しい結果が返されますが、単純な線形回帰を計算するには最大 30 秒かかります。20秒の時もあれば、1秒だけの時もあります。1 回で 100 ミリ秒まで短縮することさえできましたが (これは私が望んでいることです)、90% の時間で要求が完了するまでに 20 秒以上かかり、これは受け入れられません。

まだ実験中であるか、まだ開発スロットにあることに関係していると思いますが、より高速なマシンで実行するための設定が見つかりません。

実行を高速化する方法はありますか?

編集:明確にするために:同じリクエストを複数回送信するだけで、同じテストデータでさまざまなタイミングが取得されます。これにより、リクエストがキューに入れられたことに関係があるに違いないと結論付けました。起動時の待ち時間があるか、他の方法で調整されています。

4

1 に答える 1

8

まず、公開された AML エンドポイントでタイミング テストを行っていると仮定します。

AML への呼び出しが行われると、最初の呼び出しでコンテナーをウォームアップする必要があります。デフォルトでは、Web サービスには 20 個のコンテナーがあります。各コンテナは低温であり、低温のコンテナは大きな遅延 (30 秒) を引き起こす可能性があります。AML エンドポイントによって返される文字列では、isWarmフラグが true に設定されているリクエストのみをカウントします。サービスを多数のリクエスト (実行しているコンテナーの数に比例) で粉砕することにより、すべてのコンテナーをウォームアップできます。

インスタンスに多数のリクエストを送信している場合、エンドポイントが調整されている可能性があります。manage.windowsazure.com/ に移動して、エンドポイントが受け入れることができる呼び出しの数を調整できます。

  1. manage.windowsazure.com/
  2. 左のバーから Azure ML セクション
  3. ワークスペースを選択
  4. ウェブサービスタブに移動
  5. リストから Web サービスを選択します
  6. スライダーで呼び出し回数を調整

エンドポイントでデバッグを有効にすると、各モジュールが完了するまでの実行時間に関するログを取得できます。これを使用して、モジュールが意図したとおりに実行されていないかどうかを判断できます。これにより、時間が長くなる可能性があります。

全体として、Execute python モジュールを使用するとオーバーヘッドが発生しますが、このリクエストは 3 秒以内に完了すると予想されます。

于 2016-01-26T18:20:06.127 に答える