במדריך הזה נסביר איך לייצא מודל BigQuery ML ואז לפרוס את המודל ב-Agent Platform או במחשב מקומי. תשתמשו בטבלה iris ממערכי הנתונים הציבוריים של BigQuery ותעבדו את שלושת התרחישים הבאים מקצה לקצה:
- אימון ופריסה של מודל רגרסיה לוגיסטית – רלוונטי גם למסווג DNN, לרגרסור DNN, ל-k-means, לרגרסיה ליניארית ולמודלים של פירוק מטריצות.
- אימון ופריסה של מודל מסווג של עץ מחוזק – רלוונטי גם למודל רגרסיה של עץ מחוזק.
- איך מאמנים ופורסים מודל מסווג של AutoML – רלוונטי גם למודל רגרסיה של AutoML.
עלויות
במדריך הזה נעשה שימוש ברכיבים של Google Cloud, והשימוש בהם כרוך בתשלום, כולל:
- BigQuery ML
- Cloud Storage
- Agent Platform (אופציונלי, משמש לחיזוי אונליין)
מידע נוסף על העלויות של BigQuery ML זמין במאמר תמחור ב-BigQuery ML.
מידע נוסף על עלויות Cloud Storage מופיע בדף תמחור של Cloud Storage.
מידע נוסף על העלויות של Agent Platform זמין במאמר בנושא מודלים שעברו אימון בהתאמה אישית.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- BigQuery מופעל באופן אוטומטי בפרויקטים חדשים.
כדי להפעיל את BigQuery בפרויקט קיים, עוברים אל
מפעילים את BigQuery API.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים -
מפעילים את ממשקי ה-API של AI Platform Training and Prediction ושל Compute Engine.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - מתקינים את Google Cloud CLI ואת Google Cloud CLI.
יצירת מערך הנתונים
יוצרים מערך נתונים ב-BigQuery לאחסון מודל ה-ML.
המסוף
במסוף Google Cloud , עוברים לדף BigQuery.
בחלונית Explorer, לוחצים על שם הפרויקט.
לוחצים על הצגת פעולות > יצירת מערך נתונים.
בדף Create dataset, מבצעים את הפעולות הבאות:
בשדה Dataset ID (מזהה מערך הנתונים), מזינים
bqml_tutorial.בקטע Location type, בוחרים באפשרות Multi-region ואז בוחרים באפשרות US.
משאירים את הגדרות ברירת המחדל שנותרו כמו שהן ולוחצים על Create dataset (יצירת מערך נתונים).
BQ
כדי ליצור מערך נתונים חדש, משתמשים בפקודה bq mk --dataset.
יוצרים מערך נתונים בשם
bqml_tutorialעם מיקום הנתונים שמוגדר ל-US.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
בודקים שמערך הנתונים נוצר:
bq ls
API
מבצעים קריאה לשיטה datasets.insert
עם משאב מוגדר של מערך נתונים.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
אימון ופריסה של מודל רגרסיה לוגיסטית
בקטעים הבאים מוסבר איך לאמן מודל רגרסיה לוגיסטית ולפרוס אותו.
אימון המודל
מאמנים מודל רגרסיה לוגיסטית שמנבא את סוג האיריס באמצעות ההצהרה CREATE MODEL של BigQuery ML. השלמת משימת האימון הזו אמורה להימשך כדקה.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.iris_model` OPTIONS (model_type="logistic_reg", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
ייצוא המודל
מייצאים את המודל לקטגוריה של Cloud Storage באמצעות כלי שורת הפקודה של BigQuery. למידע על דרכים נוספות לייצא מודלים, אפשר לעיין במאמר ייצוא מודלים של BigQuery ML. השלמת עבודת החילוץ הזו אמורה להימשך פחות מדקה.
bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model
פריסה והצגה מקומיות
אפשר לפרוס מודלים של TensorFlow שייצאתם באמצעות קונטיינר TensorFlow Serving Docker. כדי לבצע את השלבים הבאים, צריך להתקין את Docker.
מורידים את קובצי המודל המיוצאים לספרייה זמנית
mkdir tmp_dir
gcloud storage cp gs://some/gcs/path/iris_model tmp_dir --recursive
יצירת ספריית משנה של גרסה
בשלב הזה מגדירים מספר גרסה (1 במקרה הזה) למודל.
mkdir -p serving_dir/iris_model/1
cp -r tmp_dir/iris_model/* serving_dir/iris_model/1
rm -r tmp_dir
שליפת קובץ האימג' של Docker
docker pull tensorflow/serving
הפעלת קונטיינר Docker
docker run -p 8500:8500 --network="host" --mount type=bind,source=`pwd`/serving_dir/iris_model,target=/models/iris_model -e MODEL_NAME=iris_model -t tensorflow/serving &
הרצת התחזית
curl -d '{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]}' -X POST http://localhost:8501/v1/models/iris_model:predict
פריסה והצגה אונליין
בקטע הזה נעשה שימוש ב-Google Cloud CLI כדי לפרוס את המודל המיוצא ולהריץ תחזיות.
מידע נוסף על פריסת מודל ב-Agent Platform לצורך תחזיות אונליין או תחזיות באצ' זמין במאמר פריסת מודל בנקודת קצה.
יצירת משאב מודל
MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
יצירת גרסת מודל
1) מגדירים את משתני הסביבה:
MODEL_DIR="gs://some/gcs/path/iris_model"
// Select a suitable version for this model
VERSION_NAME="v1"
FRAMEWORK="TENSORFLOW"
2) יוצרים את הגרסה:
gcloud ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --runtime-version=1.15 --framework=$FRAMEWORK
השלב הזה עשוי להימשך כמה דקות. ההודעה Creating version (this might take a few minutes)...... אמורה להופיע.
3) (אופציונלי) קבלת מידע על הגרסה החדשה:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
הפלט אמור להיראות כך:
createTime: '2020-02-28T16:30:45Z'
deploymentUri: gs://your_bucket_name
framework: TENSORFLOW
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/IRIS_MODEL/versions/v1
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
חיזוי אונליין
מידע נוסף על הפעלת תחזיות אונליין מול מודל שנפרס זמין במאמר קבלת מסקנות אונליין ממודל שעבר אימון בהתאמה אישית.
1) יוצרים קובץ JSON עם תווי מעבר שורה בין הרשומות לקלט, לדוגמה instances.json עם התוכן הבא:
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2) הגדרה של משתני סביבה לחיזוי:
INPUT_DATA_FILE="instances.json"
3) הרצת חיזוי:
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
אימון ופריסה של מודל סיווג של עץ מחוזק
בסעיפים הבאים נסביר איך לאמן ולפרוס מודל סיווג של עץ מחוזק.
אימון המודל
מאמנים מודל סיווג של עץ מחוזק שמנבא את סוג האיריס באמצעות ההצהרה
CREATE MODEL. השלמת משימת האימון הזו אמורה להימשך כ-7 דקות.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.boosted_tree_iris_model` OPTIONS (model_type="boosted_tree_classifier", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
ייצוא המודל
מייצאים את המודל לקטגוריה של Cloud Storage באמצעות כלי שורת הפקודה של BigQuery. למידע על דרכים נוספות לייצא מודלים, אפשר לעיין במאמר ייצוא מודלים של BigQuery ML.
bq extract --destination_format ML_XGBOOST_BOOSTER -m bqml_tutorial.boosted_tree_iris_model gs://some/gcs/path/boosted_tree_iris_model
פריסה והצגה מקומיות
בקובץ המיוצא, יש קובץ main.py להרצה מקומית.
הורדת קובצי המודל שיוצאו לספרייה מקומית
mkdir serving_dir
gcloud storage cp gs://some/gcs/path/boosted_tree_iris_model serving_dir --recursive
חילוץ נתונים לחיזוי
tar -xvf serving_dir/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz -C serving_dir/boosted_tree_iris_model/
התקנה של ספריית XGBoost
מתקינים את ספריית XGBoost – גרסה 0.82 ואילך.
הרצת התחזית
cd serving_dir/boosted_tree_iris_model/
python main.py '[{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]'
פריסה והצגה אונליין
בקטע הזה נעשה שימוש ב-Google Cloud CLI כדי לפרוס את המודל המיוצא ולהריץ תחזיות. מידע נוסף זמין במאמר בנושא קבלת מסקנות אונליין ממודל שעבר אימון בהתאמה אישית.
מידע נוסף על פריסת מודל ב-Agent Platform לחיזויים אונליין או לחיזויים באצווה באמצעות שגרות מותאמות אישית זמין במאמר בנושא פריסת מודל לנקודת קצה.
יצירת משאב מודל
MODEL_NAME="BOOSTED_TREE_IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
יצירת גרסת מודל
1) מגדירים את משתני הסביבה:
MODEL_DIR="gs://some/gcs/path/boosted_tree_iris_model"
VERSION_NAME="v1"
2) יוצרים את הגרסה:
gcloud beta ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --package-uris=${MODEL_DIR}/xgboost_predictor-0.1.tar.gz --prediction-class=predictor.Predictor --runtime-version=1.15
השלב הזה עשוי להימשך כמה דקות. ההודעה Creating version (this might take a few minutes)...... אמורה להופיע.
3) (אופציונלי) קבלת מידע על הגרסה החדשה:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
הפלט אמור להיראות כך:
createTime: '2020-02-07T00:35:42Z'
deploymentUri: gs://some/gcs/path/boosted_tree_iris_model
etag: rp090ebEnQk=
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/BOOSTED_TREE_IRIS_MODEL/versions/v1
packageUris:
- gs://some/gcs/path/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz
predictionClass: predictor.Predictor
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
חיזוי אונליין
מידע נוסף על הפעלת תחזיות אונליין מול מודל שפרסתם זמין במאמר קבלת מסקנות אונליין ממודל שאומן בהתאמה אישית.
1) יוצרים קובץ JSON עם קלט שמופרד בשורות חדשות. לדוגמה, קובץ instances.json עם התוכן הבא:
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2) מגדירים משתני סביבה לחיזוי:
INPUT_DATA_FILE="instances.json"
3) הרצת חיזוי:
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
איך מאמנים ופורסים מודל סיווג של AutoML
בסעיפים הבאים מוסבר איך לאמן ולפרוס מודל סיווג של AutoML.
אימון המודל
מאמנים מודל מסווג של AutoML שמנבא את סוג האיריס באמצעות ההצהרה
CREATE MODEL. כדי להשתמש במודלים של AutoML, צריך לפחות 1,000 שורות של נתוני קלט. מכיוון שלטבלה
ml_datasets.iris יש רק 150 שורות, אנחנו משכפלים את הנתונים 10 פעמים. השלמת משימת האימון הזו אמורה להימשך כ-שעתיים.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.automl_iris_model` OPTIONS (model_type="automl_classifier", budget_hours=1, input_label_cols=["species"]) AS SELECT * EXCEPT(multiplier) FROM `bigquery-public-data.ml_datasets.iris`, unnest(GENERATE_ARRAY(1, 10)) as multiplier;'
ייצוא המודל
מייצאים את המודל לקטגוריה של Cloud Storage באמצעות כלי שורת הפקודה של BigQuery. במאמר ייצוא מודלים של BigQuery ML מוסבר על דרכים נוספות לייצוא מודלים.
bq extract -m bqml_tutorial.automl_iris_model gs://some/gcs/path/automl_iris_model
פריסה והצגה מקומיות
פרטים על בניית מאגרי AutoML זמינים במאמר בנושא ייצוא מודלים טבלאיים של AutoML. כדי לבצע את השלבים הבאים, צריך להתקין את Docker.
העתקת קבצים של מודל שיוצאו לספרייה מקומית
mkdir automl_serving_dir
gcloud storage cp gs://some/gcs/path/automl_iris_model/* automl_serving_dir/ --recursive
שליפה של קובץ אימג' של Docker ל-AutoML
docker pull gcr.io/cloud-automl-tables-public/model_server
הפעלת קונטיינר Docker
docker run -v `pwd`/automl_serving_dir:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
הרצת התחזית
1) יוצרים קובץ JSON עם קלט שמופרד בשורות חדשות. לדוגמה, קובץ input.json עם התוכן הבא:
{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0},
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}]}
2) מבצעים את קריאת ה-predict:
curl -X POST --data @input.json http://localhost:8080/predict
פריסה והצגה אונליין
אין תמיכה בחיזוי אונליין למודלים של רגרסיה וסיווג ב-AutoML בפלטפורמת הסוכנים.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
- אתם יכולים למחוק את הפרויקט שיצרתם.
- אפשר גם להשאיר את הפרויקט ולמחוק את מערך הנתונים ואת קטגוריה של Cloud Storage.
עצירת קונטיינר Docker
1) מציגים רשימה של כל מאגרי Docker הפעילים.
docker ps
2) עוצרים את הקונטיינר עם מזהה הקונטיינר הרלוונטי מרשימת הקונטיינרים.
docker stop container_id
מחיקת משאבים של Agent Platform
1) מוחקים את גרסת המודל.
gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME
2) מוחקים את המודל.
gcloud ai-platform models delete $MODEL_NAME
מחיקת מערך נתונים
אם מוחקים פרויקט, כל מערכי הנתונים וכל הטבלאות בפרויקט נמחקים. אם אתם מעדיפים להשתמש מחדש בפרויקט, אתם יכולים למחוק את מערך הנתונים שיצרתם במדריך הזה:
אם צריך, פותחים את הדף BigQuery במסוףGoogle Cloud .
בחלונית הניווט, לוחצים על מערך הנתונים bqml_tutorial שיצרתם.
בצד שמאל של החלון, לוחצים על מחיקת מערך נתונים. הפעולה הזו מוחקת את מערך הנתונים, את הטבלה ואת כל הנתונים.
בתיבת הדו-שיח מחיקת מערך נתונים, מקלידים את שם מערך הנתונים (
bqml_tutorial) כדי לאשר את פקודת המחיקה, ואז לוחצים על מחיקה.
מחיקת קטגוריה של Cloud Storage
אם מוחקים את הפרויקט, כל הקטגוריות של Cloud Storage בפרויקט נמחקות. אם אתם מעדיפים לעשות שימוש חוזר בפרויקט, אתם יכולים למחוק את הקטגוריה שיצרתם במדריך הזה.
- במסוף Google Cloud , נכנסים לדף Buckets של Cloud Storage.
מסמנים את התיבה של הקטגוריה שרוצים למחוק.
לוחצים על Delete.
בחלון שכבת-העל, לוחצים על מחיקה כדי לאשר שרוצים למחוק את הקטגוריה ואת התוכן שלה.
מחיקת פרויקט
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
- סקירה כללית על BigQuery ML זמינה במאמר מבוא ל-BigQuery ML.
- מידע על ייצוא מודלים זמין במאמר ייצוא מודלים.
- מידע על יצירת מודלים זמין בדף התחביר
CREATE MODEL.