[PYTHON] Arrêtez automatiquement la VM lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé

table des matières

  1. Vue d'ensemble
  2. Installez le SDK Google Cloud sur la VM qui effectue le traitement du machine learning
  3. Authentification Google Cloud Platform
  4. Créez un script qui s'arrête une fois le traitement terminé sur la ligne de commande gcloud
  5. Notifier avec Slack et arrêter la VM lorsque le traitement est terminé avec la ligne de commande gcloud

1. Vue d'ensemble

J'ai écrit un article [Qiita] Me prévenir avec Slack lorsque le processus d'apprentissage automatique s'exécutant sur GCP est terminé. N'est-il pas parfois préférable d'arrêter automatiquement la machine virtuelle en dormant au milieu de la nuit? Donc, je vais décrire comment le faire.

N'oubliez pas de sauvegarder le modèle (joblib, pickle) et de sauvegarder le résultat (export csv) pour que le calcul ne soit pas gaspillé.

2. Installez le SDK Google Cloud sur la VM qui effectue le traitement du machine learning

Comme certains d'entre vous l'ont peut-être remarqué ici, lorsque le processus est terminé Il s'agit d'une stratégie consistant à émettre la commande glcoud par vous-même et à arrêter votre machine virtuelle.

Téléchargez et installez le SDK Google Cloud

Terminal


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

Passer le chemin du SDK Google Cloud

Au moment de l'installation, si vous ne spécifiez pas le chemin, exécutez ce qui suit Si Path est spécifié, modifiez la partie .bashrc.

Terminal


source .bashrc

Assurez-vous que le SDK Google Cloud se trouve dans le chemin

Terminal


gcloud -v
Exemple d'exécution: c'est OK si le résultat est renvoyé comme ceci
Screen Shot 2020-02-25 at 20.16.17.png

3. Authentification Google Cloud Platform

Exécuter la commande d'initialisation

Authentifiez le nom du projet cible et Gmail

Terminal


gcloud init

4. Créez un script qui s'arrête une fois le traitement terminé sur la ligne de commande gcloud

[Qiita] Créer, arrêter, reprendre et détruire des instances GCP Compute Engine avec des commandes Il semble que vous puissiez vous arrêter avec gcloud compute instances stop <nom de l'instance>, donc Mettez ceci dans le traitement Python

Dans le cas de Jupterlab, ajoutez simplement "!" Au début de la commande cible.

Pour Jupyterlab


#Une sorte de processus d'exécution
! gcloud compute instances stop <Nom de l'instance>
Exemple d'exécution: comme l'image d'exécution est difficile à bouillir lors du traitement d'arrêt, il s'agit d'un exemple d'affichage de la liste d'instances.

ezgif-2-2c45e4c7fab0 (1).gif

5. Notifier avec Slack et arrêter la VM lorsque le traitement est terminé avec la ligne de commande gcloud

[Qiita] Notifier avec Slack lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé Nous allons tester pour arrêter la VM conformément à la notification Slack écrite ci-dessus.

python


#Import du module requis
import slackweb
import datetime

#Classer les notifications Slack
class Slack_notice():
    start = 0

    def __init__(self):
        self.slack = slackweb.Slack(url="URL du Webhook entrant de Slack") #Réécrivez-le dans votre propre URL

    def begin(self):
        self.start = datetime.datetime.now()
        self.slack.notify(text='[Notice] ' + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M")) + '\n Le traitement a commencé!')

    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 Le traitement est terminé! \n Temps requis'+ str(elapsed_time) + 'est\n Arrêtez la VM.')

# Slack_notez l'appel de classe
slack_notice = Slack_notice()

#Notification de pré-exécution
slack_notice.begin()

#Le processus que vous souhaitez exécuter-------------------------------------------------------------------------
#Cette fois, par souci de clarté, je viens d'imprimer toutes les secondes.
from time import sleep

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

#Notification de pré-exécution
slack_notice.end()

#Arrêt de la VM
! gcloud compute instances stop <Nom de l'instance>
Exemple d'exécution

ezgif-2-8785710add65.gif

Il a été arrêté en toute sécurité Screen Shot 2020-02-25 at 21.01.32.png

Recommended Posts

Arrêtez automatiquement la VM lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé
Notifier Slack lorsque le processus d'apprentissage automatique en cours d'exécution sur GCP est terminé
Remarques sur l'exécution locale d'Azure Machine Learning
[Apprentissage automatique] Qu'est-ce que la norme LP?
Installez la bibliothèque d'apprentissage automatique TensorFlow sur fedora23
Kit d'apprentissage machine numpy matplotlib scipy Il y a un tour à suivre lors de l'installation des trois familles sur debian ubuntu
Qu'est-ce que l'apprentissage automatique?
Enquête sur l'utilisation du machine learning dans les services réels
J'ai installé la bibliothèque de machine learning automatique auto-sklearn sur centos7
[GCP] Un mémorandum lors de l'exécution d'un programme Python avec Cloud Functions
Écrivez un script dans Shell et Python pour vous avertir dans Slack lorsque le processus est terminé