ייצוא פריטי מידע שנוצרו בתהליך פיתוח (Artifact) של מודל להסקת מסקנות ולהסבר

‫Vertex AI מציע קונטיינרים מוכנים מראש להצגת מסקנות והסברים ממודלים שאומנו באמצעות המסגרות הבאות של למידת מכונה (ML):

  • TensorFlow
  • PyTorch
  • XGBoost
  • scikit-learn

כדי להשתמש באחד מהקונטיינרים המוכנים מראש האלה, צריך לשמור את המודל בתור ארטיפקטים של מודל שעומדים בדרישות של הקונטיינר המובנה. הדרישות האלה חלות גם אם ארטיפקטים של המודל נוצרו ב-Vertex AI וגם אם לא.

אם אתם משתמשים במאגר תגים בהתאמה אישית כדי להציג מסקנות, אתם לא צריכים לעמוד בדרישות שבדף הזה, אבל אתם יכולים להשתמש בהן כהנחיות.

דרישות ספציפיות למסגרת לייצוא לקונטיינרים מוכנים מראש

בהתאם למסגרת הלמידה מחישובים (ML) שבה אתם מתכננים להשתמש להסקת מסקנות, אתם צריכים לייצא את ארטיפקטים של המודל בפורמטים שונים. בקטעים הבאים מפורטים פורמטים קבילים של מודלים לכל מסגרת ML.

TensorFlow

אם משתמשים ב-TensorFlow כדי לאמן מודל, צריך לייצא את המודל כספרייה של TensorFlow SavedModel.

יש כמה דרכים לייצא מודלים מסוג SavedModel מקוד אימון של TensorFlow. ברשימה הבאה מפורטות כמה דרכים שמתאימות לממשקי TensorFlow API שונים:

כדי להציג מסקנות באמצעות הארטיפקטים האלה, צריך ליצור Model עם קונטיינר מוכן מראש למסקנות שתואם לגרסה של TensorFlow שבה השתמשתם לאימון.

‫TensorFlow ל-Vertex AI ניתן להסברה

אם רוצים לקבל הסברים מModel שמשתמש במאגר מובנה מראש של TensorFlow כדי להציג היקשים, כדאי לקרוא את הדרישות הנוספות לייצוא מודל TensorFlow ל-Vertex AI ניתן להסברה.

הפעלת אצווה של בקשות בצד השרת עבור TensorFlow

אם רוצים להפעיל את האפשרות של שליחת בקשות בקבוצות עבור Model שמשתמש במאגר TensorFlow מוכן מראש כדי להציג מסקנות, צריך לכלול את config/batching_parameters_config באותה תיקייה ב-Cloud Storage שבה נמצא הקובץ saved_model.pb. מידע על הגדרת קובץ התצורה של אצווה מופיע במסמכים הרשמיים של TensorFlow.

PyTorch

צריך לארוז את הארטיפקטים של המודל בקובץ ארכיון מודל (.mar). הארכיון הזה חייב לכלול סקריפט של handler, מסוג default או custom, שמגדיר איך המודל מעבד בקשות הסקה. לזרימות עבודה מתקדמות יותר, כדאי להשתמש בקונטיינרים בהתאמה אישית במקום להסתמך על אימג' מוכן מראש של PyTorch serving.

התמונות המוכנות מראש של PyTorch מצפות שהארכיון ייקרא model.mar, לכן חשוב לוודא ששם המודל מוגדר כ-'model' כשיוצרים את הארכיון.

מידע על אופטימיזציה של השימוש בזיכרון, זמן האחזור או קצב העברת הנתונים של מודל PyTorch שמוצג באמצעות TorchServe זמין במדריך הביצועים של PyTorch.

XGBoost

אם משתמשים בקונטיינר מוכן מראש של XGBoost כדי לאמן מודל, אפשר לייצא את המודל המאומן בדרכים הבאות:

שם הקובץ של ארטיפקט המודל צריך להיות זהה בדיוק לאחת מהאפשרויות האלה.

בדוגמאות הבאות אפשר לראות איך מאמנים מודל ומייצאים אותו:

xgboost.Booster

import os

from google.cloud import storage
from sklearn import datasets
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.bst'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
bst.save_model(local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

joblib

import os

from google.cloud import storage
from sklearn import datasets
import joblib
import xgboost as xgb

digits = datasets.load_digits()
dtrain = xgb.DMatrix(digits.data, label=digits.target)
bst = xgb.train({}, dtrain, 20)

artifact_filename = 'model.joblib'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
joblib.dump(bst, local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

כדי להציג מסקנות באמצעות הארטיפקט הזה, צריך ליצור Model עם קונטיינר מוכן מראש להסקת מסקנות שתואם לגרסה של XGBoost שבה השתמשתם לאימון.

scikit-learn

אם משתמשים במודל מוכן מראש של scikit-learn כדי לאמן מודל, אפשר לייצא אותו באמצעות הספרייה joblib כדי לייצא קובץ בשם model.joblib.

שם הקובץ של ארטיפקט המודל צריך להיות זהה בדיוק לאחת מהאפשרויות האלה. אפשר לייצא אומדנים סטנדרטיים של scikit-learn או צינורות של scikit-learn.

בדוגמה הבאה אפשר לראות איך מאמנים ומייצאים מודל:

joblib

import os

from google.cloud import storage
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier
import joblib

digits = datasets.load_digits()
classifier = RandomForestClassifier()
classifier.fit(digits.data, digits.target)

artifact_filename = 'model.joblib'

# Save model artifact to local filesystem (doesn't persist)
local_path = artifact_filename
joblib.dump(classifier, local_path)

# Upload model artifact to Cloud Storage
model_directory = os.environ['AIP_MODEL_DIR']
storage_path = os.path.join(model_directory, artifact_filename)
blob = storage.blob.Blob.from_string(storage_path, client=storage.Client())
blob.upload_from_filename(local_path)

כדי להציג מסקנות באמצעות הארטיפקט הזה, צריך ליצור Model עם קונטיינר מוכן מראש להסקת מסקנות שתואם לגרסה של scikit-learn שבה השתמשתם לאימון.

המאמרים הבאים