GoogleColab J'en ai fait un cahier, alors si
https://colab.research.google.com/drive/1s6_o-nvMmHhAeBAOoRDgE0UNU6Fe3XrC
Il a presque le même contenu que le notebook. Si vous rencontrez des difficultés pour ouvrir Colab, cliquez ici.
[Explication avec image] Enregistrez un compte avec un essai gratuit de Google Cloud Platform (GCP)
Installation du SDK Google Cloud ~ Initialisation
Authentifiez-vous avec votre compte Google pour jouer avec GCP à l'aide de la commande gcloud.
$ gcloud auth login
ID est interdit de brouillard.
$ PROJECT_ID=anata-no-pj-id
$ PROJECT_NAME=anata-no-pj-name
$ gcloud projects create $PROJECT_ID \
--name $PROJECT_NAME
Si vous ne le définissez pas, une erreur 403 se produira lors de l'accès au compartiment.
Si la fenêtre contextuelle suivante n'apparaît pas, vous pouvez sauter car le compte de facturation a déjà été défini.
Défini sur le projet cible de l'opération de commande.
$ 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]
Si ça va
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)
Les régions où la prédiction en ligne d'AI Platform peut être utilisée sont les suivantes:
L'interpréteur est spécifié pour utiliser le système python3 pour l'entraînement local.
$ 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]
Si ça va
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)
Le modèle entraîné est enregistré sous . / Titanic_prediction_on_gcp / working / models / model.pkl
.
$ gcloud ai-platform local train \
--package-path titanic_prediction_on_gcp/working/ \
--module-name working.predict_xgb
Créez un bucket dans GCS pour télécharger le modèle enregistré.
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
Activez les deux suivants pour utiliser l'API AI-Platform.
$ 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 s'il y a
Créez une ressource de modèle et une ressource de version, et associez-les au model.pkl téléchargé.
Ressource de modèle
MODEL_NAME=model_xgb
MODEL_VERSION=v1
$ gcloud ai-platform models create $MODEL_NAME \
--regions $REGION
Ressource de version
! 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
Faisons une prédiction en utilisant les données préparées à l'avance. Tout d'abord, vérifiez le contenu.
! cat titanic_prediction_on_gcp/input/titanic/predict.json
# [36.0, 0] <-36 ans,Masculin
Sous la forme [âge, sexe], le sexe est masculin: 0, féminin: 1.
! gcloud ai-platform predict \
--model model_xgb \
--version $MODEL_VERSION \
--json-instances titanic_prediction_on_gcp/input/titanic/predict.json
[0.44441232085227966] C'est OK si une telle valeur prédite est renvoyée.
Ensuite, accédez à AI-Platform à partir de python et obtenez la prédiction. Vous aurez besoin d'une clé de compte de service, alors créez d'abord un compte de service.
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]
Générer un fichier .env et décrire les variables d'environnement et le chemin
$ 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
#Paramètres des variables d'environnement
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 = ['Masculin', 'Femme']
dropdown_age = widgets.Dropdown(options=age, description='âge: ')
dropdown_sex = widgets.Dropdown(options=sex, description='sexe: ')
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 == 'Masculin' 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 Lorsque vous roulez sur le Titanic...')
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
Merci d'avoir lu jusqu'au bout. En tant qu'oncle de 36 ans, je suis sur le point de mourir, alors je ferai très attention lorsque je conduirai le Titanic.
Recommended Posts