Azure Machine Learning Request Antwortzeit

8

Ich habe ein Azure Machine Learning Experiment gemacht, das einen kleinen Datensatz (12x3 Array) und einige Parameter benötigt und einige Berechnungen mit einigen Python-Modulen (eine lineare Regressionsrechnung und einige mehr) durchführt. Das alles funktioniert gut.

Ich habe das Experiment implementiert und möchte jetzt Daten aus dem Front-End meiner Anwendung werfen. Der API-Aufruf geht ein und kommt mit korrekten Ergebnissen zurück, aber es dauert bis zu 30 Sekunden, um eine einfache lineare Regression zu berechnen. Manchmal sind es 20 Sekunden, manchmal nur 1 Sekunde. Ich habe es sogar einmal auf 100 ms reduziert (was ich gerne hätte), aber in 90% der Fälle dauert die Anfrage mehr als 20 Sekunden, was nicht akzeptabel ist.

Ich nehme an, es hat etwas damit zu tun, dass es immer noch ein Experiment ist, oder es ist immer noch in einem Entwicklungsslot, aber ich kann die Einstellungen nicht finden, um es auf einem schnelleren Rechner laufen zu lassen.

Gibt es eine Möglichkeit, meine Ausführung zu beschleunigen?

Edit: Zur Verdeutlichung: Die unterschiedlichen Timings werden mit den gleichen Testdaten erhalten, indem einfach die gleiche Anfrage mehrmals gesendet wird. Das hat mich zu dem Schluss gebracht, dass es etwas damit zu tun haben muss, dass meine Anfrage in eine Warteschlange gestellt wird, dass es eine Start-Latenz gibt oder dass ich auf eine andere Weise gedrosselt werde.

    
JrtPec 25.01.2016, 10:40
quelle

1 Antwort

8

Zunächst gehe ich davon aus, dass Sie Ihren TIMING-Test an dem veröffentlichten AML-Endpunkt durchführen.

Wenn ein Anruf an die AML getätigt wird, muss der erste Anruf den Container aufwärmen. Standardmäßig verfügt ein Web-Service über 20 Container. Jeder Behälter ist kalt und ein kalter Behälter kann eine große Verzögerung von 30 Sekunden verursachen. Verwenden Sie in der vom AML-Endpunkt zurückgegebenen Zeichenfolge nur Anforderungen, bei denen das isWarm -Flag auf "true" gesetzt ist. Wenn Sie den Dienst mit VIELEN Anfragen (im Verhältnis zu der Anzahl der ausgeführten Container) zerschlagen, können alle Ihre Container erwärmt werden.

Wenn Sie Dutzende von Anfragen an eine Instanz senden, wird der Endpunkt möglicherweise gedrosselt. Sie können die Anzahl der Anrufe anpassen, die Ihr Endpunkt annehmen kann, indem Sie auf manage.windowsazure.com /

gehen
  1. manage.windowsazure.com /
  2. Azure ML Abschnitt von der linken Leiste
  3. Wählen Sie Ihren Arbeitsbereich
  4. Gehen Sie zum Tab "Web Services"
  5. Wählen Sie Ihren Web-Service aus der Liste
  6. aus
  7. Passen Sie die Anzahl der Anrufe mit dem Schieberegler
  8. an

Wenn Sie das Debugging auf Ihrem Endpunkt aktivieren, können Sie Protokolle über die Ausführungszeit für jedes Ihrer Module abrufen. Sie können dies verwenden, um zu bestimmen, ob ein Modul nicht wie gewünscht ausgeführt wird, was zu der Zeit hinzugefügt werden kann.

Insgesamt gibt es einen Overhead bei der Verwendung des Python-Moduls "Execute", aber ich erwarte, dass diese Anfrage in weniger als 3 Sekunden abgeschlossen wird.

    
Dan Ciborowski - MSFT 26.01.2016, 18:20
quelle