GoogleColab Ich habe es zu einem Notizbuch gemacht, also wenn
https://colab.research.google.com/drive/1s6_o-nvMmHhAeBAOoRDgE0UNU6Fe3XrC
Es hat fast den gleichen Inhalt wie Notebook. Wenn Sie Probleme beim Öffnen von Colab haben, lesen Sie bitte hier.
Installieren des Google Cloud SDK ~ Initialisieren
Authentifizieren Sie sich mit Ihrem Google-Konto, um sich mit dem Befehl gcloud mit GCP zu messen.
$ gcloud auth login
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
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.
Auf das Zielprojekt der Befehlsoperation setzen.
$ gcloud config set project $PROJECT_ID
! 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
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.
$ 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
https://github.com/komiyakomiyakomiya/titanic_prediction_on_gcp
$ git clone https://github.com/komiyakomiyakomiya/titanic_prediction_on_gcp.git
notebook
import os
os.makedirs('./titanic_prediction_on_gcp/working/models/', exist_ok=True)
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
Erstellen Sie einen Bucket in GCS, um das gespeicherte Modell hochzuladen.
BUCKET_NAME=anata-no-bkt-name
$ gsutil mb -l $REGION gs://$BUCKET_NAME
$ gsutil ls -la
# gs://anata-no-bkt-name/
$ gsutil cp ./titanic_prediction_on_gcp/working/models/model.pkl gs://$BUCKET_NAME/models/model.pkl
$ gsutil ls gs://$BUCKET_NAME/models/
# gs://anata-no-bkt-name/models/model.pkl
Aktivieren Sie die folgenden beiden, um die AI-Platform-API zu verwenden.
$ gcloud services enable ml.googleapis.com
$ gcloud services enable compute.googleapis.com
$ 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
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
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.
! 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.
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 \
$ 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
$ gcloud iam service-accounts keys create titanic_prediction_on_gcp/service_account_keys/key.json \
--iam-account [email protected]
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
$ cat ./titanic_prediction_on_gcp/.env
# GOOGLE_APPLICATION_CREDENTIALS=/content/titanic_prediction_on_gcp/service_account_keys/key.json
$ pip install python-dotenv
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
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])
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'))
https://cloud.google.com/sdk/gcloud/reference/
https://cloud.google.com/sdk/gcloud/reference/ai-platform/
https://cloud.google.com/storage/docs/gsutil
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