[PYTHON] Wenn Sie Titanic fahren ... sterben Sie.

Was wurde gemacht

zwmew-57a83.gif

Was machst du

  1. Erstellen Sie ein Modell
  2. Stellen Sie das Modell in GCP bereit
  3. Vorhersage auf GCP

GoogleColab Ich habe es zu einem Notizbuch gemacht, also wenn

https://colab.research.google.com/drive/1s6_o-nvMmHhAeBAOoRDgE0UNU6Fe3XrC

Verfahren

Es hat fast den gleichen Inhalt wie Notebook. Wenn Sie Probleme beim Öffnen von Colab haben, lesen Sie bitte hier.


Registrierung des GCP-Kontos

[Erklärung mit Bild] Registrieren Sie ein Konto mit einer kostenlosen Testversion von Google Cloud Platform (GCP)


Installieren Sie das Google Cloud SDK

Installieren des Google Cloud SDK ~ Initialisieren


SDK-Zertifizierung

Authentifizieren Sie sich mit Ihrem Google-Konto, um sich mit dem Befehl gcloud mit GCP zu messen.

$ gcloud auth login

Projekterstellung

ID ist von Nebel verboten.

$ PROJECT_ID=anata-no-pj-id
$ PROJECT_NAME=anata-no-pj-name

$ gcloud projects create $PROJECT_ID \
--name $PROJECT_NAME

Abrechnungskontoeinstellungen

Wenn Sie es nicht einstellen, tritt beim Zugriff auf den Bucket ein 403-Fehler auf.

Wenn das folgende Popup nicht angezeigt wird, können Sie es überspringen, da das Abrechnungskonto bereits eingerichtet wurde.


Aktivieren Sie das Projekt

Auf das Zielprojekt der Befehlsoperation setzen.

$ gcloud config set project $PROJECT_ID

Bestätigung

! gcloud config list

# [component_manager]
# disable_update_check = True
# [compute]
# gce_metadata_read_timeout_sec = 0
# [core]
# account = [email protected]
# project = anata-no-pj-id
# 
# Your active configuration is: [default]

Wenn es ok ist


Stellen Sie Region, Zone und Interpreter ein

REGION=us-central1
ZONE=us-central1-a

$ gcloud config set compute/region $REGION
$ gcloud config set compute/zone $ZONE
$ gcloud config set ml_engine/local_python $(which python3)

Die Regionen, in denen die Online-Vorhersage der AI-Plattform verwendet werden kann, sind folgende:

Der Interpreter ist so angegeben, dass er das Python3-System für das lokale Training verwendet.


Bestätigung

$ gcloud config list

# [component_manager]
# disable_update_check = True
# [compute]
# gce_metadata_read_timeout_sec = 0
# region = us-central1
# zone = us-central1-a
# [core]
# account = [email protected]
# project = anata-no-pj-id
# [ml_engine]
# local_python = /usr/bin/python3
# 
# Your active configuration is: [default]

Wenn es ok ist


Klonen Sie einen Satz Trainingscode

https://github.com/komiyakomiyakomiya/titanic_prediction_on_gcp

$ git clone https://github.com/komiyakomiyakomiya/titanic_prediction_on_gcp.git

Erstellen Sie ein Verzeichnis, um das Modell zu speichern

notebook


import os

os.makedirs('./titanic_prediction_on_gcp/working/models/', exist_ok=True)

Modell vor Ort trainieren und speichern

Das trainierte Modell wird als ". / Titanic_prediction_on_gcp / working / models / model.pkl" gespeichert.

$ gcloud ai-platform local train \
--package-path titanic_prediction_on_gcp/working/ \
--module-name working.predict_xgb

Einen Eimer erstellen

Erstellen Sie einen Bucket in GCS, um das gespeicherte Modell hochzuladen.

BUCKET_NAME=anata-no-bkt-name

$ gsutil mb -l $REGION gs://$BUCKET_NAME

Bestätigung

$ gsutil ls -la

# gs://anata-no-bkt-name/

Laden Sie das gespeicherte Modell in GCS hoch

$ gsutil cp ./titanic_prediction_on_gcp/working/models/model.pkl gs://$BUCKET_NAME/models/model.pkl

Bestätigung

$ gsutil ls gs://$BUCKET_NAME/models/

# gs://anata-no-bkt-name/models/model.pkl

API aktivieren

Aktivieren Sie die folgenden beiden, um die AI-Platform-API zu verwenden.

$ gcloud services enable ml.googleapis.com
$ gcloud services enable compute.googleapis.com

Bestätigung

$ gcloud services list --enabled

# NAME                              TITLE
# bigquery.googleapis.com           BigQuery API
# bigquerystorage.googleapis.com    BigQuery Storage API
# cloudapis.googleapis.com          Google Cloud APIs
# clouddebugger.googleapis.com      Stackdriver Debugger API
# cloudtrace.googleapis.com         Stackdriver Trace API
# compute.googleapis.com            Compute Engine API
# datastore.googleapis.com          Cloud Datastore API
# logging.googleapis.com            Stackdriver Logging API
# ml.googleapis.com                 AI Platform Training & Prediction API
# monitoring.googleapis.com         Stackdriver Monitoring API
# oslogin.googleapis.com            Cloud OS Login API
# servicemanagement.googleapis.com  Service Management API
# serviceusage.googleapis.com       Service Usage API
# sql-component.googleapis.com      Cloud SQL
# storage-api.googleapis.com        Google Cloud Storage JSON API
# storage-component.googleapis.com  Cloud Storage

OK, wenn es gibt


Modellressource / Versionsressource erstellen

Erstellen Sie eine Modellressource und eine Versionsressource und ordnen Sie sie der hochgeladenen model.pkl zu.

Modellressource

MODEL_NAME=model_xgb
MODEL_VERSION=v1

$ gcloud ai-platform models create $MODEL_NAME \
--regions $REGION

Versionsressource

! gcloud ai-platform versions create $MODEL_VERSION \
--model $MODEL_NAME \
--origin gs://$BUCKET_NAME/models/ \
--runtime-version 1.14 \
--framework xgboost \
--python-version 3.5

Bestätigung der Eingabedaten

Lassen Sie uns anhand der im Voraus vorbereiteten Daten eine Vorhersage treffen. Überprüfen Sie zunächst den Inhalt.

! cat titanic_prediction_on_gcp/input/titanic/predict.json

# [36.0, 0] <-36 Jahre alt,männlich

Im Format [Alter, Geschlecht] ist das Geschlecht männlich: 0, weiblich: 1.


Vorausgesagt von AI-Platform

! gcloud ai-platform predict \
--model model_xgb \
--version $MODEL_VERSION \
--json-instances titanic_prediction_on_gcp/input/titanic/predict.json

[0.44441232085227966] Es ist in Ordnung, wenn ein solcher vorhergesagter Wert zurückgegeben wird.


Erstellen eines Dienstkontos

Greifen Sie als Nächstes von Python aus auf AI-Platform zu und erhalten Sie die Vorhersage. Sie benötigen einen Dienstkontoschlüssel. Erstellen Sie daher zuerst ein Dienstkonto.

SA_NAME=anata-no-sa-name
SA_DISPLAY_NAME=anata-no-sa-display-name

$ gcloud iam service-accounts create $SA_NAME \
--display-name $SA_DISPLAY_NAME \

Erteilen Sie Berechtigungen für das Dienstkonto

$ gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:[email protected] \
--role roles/iam.serviceAccountKeyAdmin

$ gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:[email protected] \
--role roles/ml.admin

Generierung von Dienstkontoschlüsseln

$ gcloud iam service-accounts keys create titanic_prediction_on_gcp/service_account_keys/key.json \
--iam-account [email protected]

Lesen Sie den Pfad von key.json als Umgebungsvariable

Generieren Sie eine .env-Datei und beschreiben Sie Umgebungsvariablen und -pfade

$ echo GOOGLE_APPLICATION_CREDENTIALS=/content/titanic_prediction_on_gcp/service_account_keys/key.json > /content/titanic_prediction_on_gcp/.env

Bestätigung

$ cat ./titanic_prediction_on_gcp/.env

# GOOGLE_APPLICATION_CREDENTIALS=/content/titanic_prediction_on_gcp/service_account_keys/key.json

## Installieren Sie python-dotenv Ich bin nicht in Colab
$ pip install python-dotenv

Definieren Sie eine Funktion, um die Vorhersage zu erhalten

notebook


import googleapiclient.discovery
from dotenv import load_dotenv

#Einstellungen für Umgebungsvariablen
load_dotenv('/content/titanic_prediction_on_gcp/.env')


def main(input_data):
    input_data = [input_data]

    PROJECT_ID = 'anata-no-pj-id'
    VERSION_NAME = 'v1'
    MODEL_NAME = 'model_xgb'

    service = googleapiclient.discovery.build('ml', 'v1')
    name = 'projects/{}/models/{}'.format(PROJECT_ID, MODEL_NAME)
    name += '/versions/{}'.format(VERSION_NAME)

    response = service.projects().predict(
        name=name,
        body={'instances': input_data}
    ).execute()

    if 'error' in response:
        print(response['error'])
    else:
        pred = response['predictions'][0]

    return pred

Erstellen Sie ein Dropdown-Menü für Alter und Geschlecht

notebook


import ipywidgets as widgets
from ipywidgets import HBox, VBox


age = [i for i in range(101)]
sex = ['männlich', 'Weiblich']

dropdown_age = widgets.Dropdown(options=age, description='Alter: ')
dropdown_sex = widgets.Dropdown(options=sex, description='Sex: ')
variables = VBox(children=[dropdown_age, dropdown_sex])

VBox(children=[variables])

Prognose

notebook


import numpy as np
from IPython.display import Image
from IPython.display import display_png


input_age = float(dropdown_age.value)
input_sex = 0 if dropdown_sex.value == 'männlich' else 1
test_input = [input_age, input_sex]

pred = main(test_input)
# print(pred)
pred_binary = np.where(pred > 0.5, 1, 0)
# print(pred_binary)

print('\n Wenn Sie mit der Titanic fahren...')

if pred_binary == 1:
    display_png(Image('/content/titanic_prediction_on_gcp/images/alive.png'))
else:
    display_png(Image('/content/titanic_prediction_on_gcp/images/dead.png'))

Offizielle Referenz

https://cloud.google.com/sdk/gcloud/reference/

https://cloud.google.com/sdk/gcloud/reference/ai-platform/

https://cloud.google.com/storage/docs/gsutil

Zusammenfassung

Vielen Dank für das Lesen bis zum Ende. Als 36-jähriger Onkel stehe ich kurz vor dem Tod, daher werde ich beim Fahren der Titanic sehr vorsichtig sein.

Recommended Posts

Wenn Sie Titanic fahren ... sterben Sie.
Wenn __name__ == Heben Sie Ihre Hand, wenn Sie den Code unter '__ main__' schreiben.
Wenn Sie möchten, dass Ihre Kollegen dieselbe Sprache verwenden
Wenn Sie CD, ls. Shiroyo ……
Überprüfen Sie, ob Sie ein Gelehrter sind
Wenn Sie TemplateDoesNotExist bei sagen
Können Sie diese Datei löschen?
Wenn Sie die Liste entfernen, die geloopt werden soll, werden Sie schrecklich.
Wenn Sie eine Liste mit dem Standardargument der Funktion angeben ...
Was tun, wenn Sie den Papierkorb in Lubuntu 18.04 nicht verwenden können?
So finden Sie heraus, wann Sie das Java-Installationsverzeichnis nicht kennen