[PYTHON] Stoppen Sie die VM automatisch, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist

Inhaltsverzeichnis

  1. Übersicht
  2. Installieren Sie das Google Cloud SDK auf der VM, die die maschinelle Lernverarbeitung ausführt
  3. Google Cloud Platform-Authentifizierung
  4. Erstellen Sie ein Skript, das nach Abschluss der Verarbeitung in der gcloud-Befehlszeile angehalten wird
  5. Benachrichtigen Sie mit Slack & Stop VM, wenn die Verarbeitung mit der gcloud-Befehlszeile abgeschlossen ist

1. Übersicht

Ich habe einen Artikel geschrieben [Qiita] Benachrichtige mich mit Slack, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist. Ist es nicht manchmal besser, die VM automatisch anzuhalten, wenn Sie mitten in der Nacht schlafen? Also werde ich beschreiben, wie es geht.

Vergessen Sie nicht, das Modell (Joblib, Pickle) und das Ergebnis (CSV-Export) zu speichern, damit die Berechnung nicht verschwendet wird.

2. Installieren Sie das Google Cloud SDK auf der VM, die die maschinelle Lernverarbeitung ausführt

Wie einige von Ihnen hier vielleicht bemerkt haben, wenn der Prozess beendet ist Es ist eine Strategie, den Befehl glcoud selbst auszugeben und Ihre VM zu stoppen.

Laden Sie das Google Cloud SDK herunter und installieren Sie es

Terminal


curl https://sdk.cloud.google.com | bash

Übergeben Sie den Pfad des Google Cloud SDK

Wenn Sie zum Zeitpunkt der Installation den Pfad nicht angeben, führen Sie Folgendes aus Wenn Pfad angegeben ist, ändern Sie den .bashrc-Teil.

Terminal


source .bashrc

Stellen Sie sicher, dass sich das Google Cloud SDK im Pfad befindet

Terminal


gcloud -v
Ausführungsbeispiel: Es ist in Ordnung, wenn das Ergebnis so zurückgegeben wird
Screen Shot 2020-02-25 at 20.16.17.png

3. Google Cloud Platform-Authentifizierung

Initialisierungsbefehl ausführen

Authentifizieren Sie den Namen des Zielprojekts und Google Mail

Terminal


gcloud init

4. Erstellen Sie ein Skript, das nach Abschluss der Verarbeitung in der gcloud-Befehlszeile angehalten wird

[Qiita] Erstellen, Stoppen, Fortsetzen und Zerstören von GCP Compute Engine-Instanzen mit Befehlen Es scheint, dass Sie mit gcloud compute instance stop <instanzname> stoppen können, also Fügen Sie dies in die Python-Verarbeitung ein

Fügen Sie im Fall von Jupterlab einfach "!" Am Anfang des Zielbefehls hinzu.

Für Jupyterlab


#Eine Art Ausführungsprozess
! gcloud compute instances stop <Instanzname>
Ausführungsbeispiel: Da das Ausführungsabbild in der Stoppverarbeitung schwer zu kochen ist, ist es ein Beispiel für die Anzeige der Instanzliste.

ezgif-2-2c45e4c7fab0 (1).gif

5. Benachrichtigen Sie mit Slack & Stop VM, wenn die Verarbeitung mit der gcloud-Befehlszeile abgeschlossen ist

[Qiita] Mit Slack benachrichtigen, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist In Übereinstimmung mit der oben beschriebenen Slack-Benachrichtigung werden wir auch testen, um die VM zu stoppen

python


#Import des benötigten Moduls
import slackweb
import datetime

#Slack-Benachrichtigungen klassifizieren
class Slack_notice():
    start = 0

    def __init__(self):
        self.slack = slackweb.Slack(url="URL von Slacks eingehendem Webhook") #Schreiben Sie es in Ihre eigene URL um

    def begin(self):
        self.start = datetime.datetime.now()
        self.slack.notify(text='[Notice] ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) + '\n Die Verarbeitung wurde gestartet!')

    def end(self):
        elapsed_time = datetime.datetime.now() - self.start
        self.slack.notify(text='[Notice] ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) + '\n Die Verarbeitung ist abgeschlossen! \n Zeitaufwand'+ str(elapsed_time) + 'ist\n Stoppen Sie die VM.')

# Slack_Klassenaufruf beachten
slack_notice = Slack_notice()

#Benachrichtigung vor der Ausführung
slack_notice.begin()

#Der Prozess, den Sie ausführen möchten-------------------------------------------------------------------------
#Dieses Mal habe ich der Klarheit halber nur jede Sekunde gedruckt.
from time import sleep

for num in range(10):
    print(num)
    sleep(1)
# -------------------------------------------------------------------------------------

#Benachrichtigung vor der Ausführung
slack_notice.end()

#VM stoppen
! gcloud compute instances stop <Instanzname>
Ausführungsbeispiel

ezgif-2-8785710add65.gif

Es wurde sicher gestoppt Screen Shot 2020-02-25 at 21.01.32.png

Recommended Posts

Stoppen Sie die VM automatisch, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist
Benachrichtigen Sie Slack, wenn der auf GCP ausgeführte maschinelle Lernprozess abgeschlossen ist
Hinweise zum lokalen Ausführen von Azure Machine Learning
[Maschinelles Lernen] Was ist LP-Norm?
Installieren Sie die Bibliothek für maschinelles Lernen TensorFlow auf fedora23
Maschinelles Lernkit numpy matplotlib scipy Bei der Installation der drei Familien auf debian ubuntu ist eine Reihe von Schritten zu beachten
Was ist maschinelles Lernen?
Umfrage zum Einsatz von maschinellem Lernen in realen Diensten
Ich habe die automatische maschinelle Lernbibliothek auto-sklearn auf centos7 installiert
[GCP] Ein Memorandum zum Ausführen eines Python-Programms mit Cloud-Funktionen
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist