Vertex AI מציע קונטיינרים מוכנים מראש להצגת מסקנות והסברים ממודלים שאומנו באמצעות המסגרות הבאות של למידת מכונה (ML):
- TensorFlow
- PyTorch
- XGBoost
- scikit-learn
כדי להשתמש באחד מהקונטיינרים המוכנים מראש האלה, צריך לשמור את המודל בתור ארטיפקטים של מודל שעומדים בדרישות של הקונטיינר המובנה. הדרישות האלה חלות גם אם ארטיפקטים של המודל נוצרו ב-Vertex AI וגם אם לא.
אם אתם משתמשים במאגר תגים בהתאמה אישית כדי להציג מסקנות, אתם לא צריכים לעמוד בדרישות שבדף הזה, אבל אתם יכולים להשתמש בהן כהנחיות.
דרישות ספציפיות למסגרת לייצוא לקונטיינרים מוכנים מראש
בהתאם למסגרת הלמידה מחישובים (ML) שבה אתם מתכננים להשתמש להסקת מסקנות, אתם צריכים לייצא את ארטיפקטים של המודל בפורמטים שונים. בקטעים הבאים מפורטים פורמטים קבילים של מודלים לכל מסגרת ML.
TensorFlow
אם משתמשים ב-TensorFlow כדי לאמן מודל, צריך לייצא את המודל כספרייה של TensorFlow SavedModel.
יש כמה דרכים לייצא מודלים מסוג SavedModel מקוד אימון של TensorFlow. ברשימה הבאה מפורטות כמה דרכים שמתאימות לממשקי TensorFlow API שונים:
אם אתם משתמשים ב-Keras לאימון, צריך להשתמש ב-
tf.keras.Model.saveכדי לייצא SavedModel.אם משתמשים ב-Estimator לאימון, משתמשים ב-
tf.estimator.Estimator.export_saved_modelכדי לייצא SavedModel.אחרת, משתמשים ב-
tf.saved_model.saveאו ב-משתמשים ב-tf.compat.v1.saved_model.SavedModelBuilder.אם אתם לא משתמשים ב-Keras או ב-Estimator, הקפידו להשתמש בתג
serveובחתימהserving_defaultכשאתם מייצאים את SavedModel כדי לוודא ש-Vertex AI יכול להשתמש בארטיפקטים של המודל כדי להציג מסקנות. Keras ו-Estimator מטפלים בזה באופן אוטומטי. מידע נוסף על ציון חתימות במהלך ייצוא
כדי להציג מסקנות באמצעות הארטיפקטים האלה, צריך ליצור 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 כדי לאמן מודל, אפשר לייצא את המודל המאומן בדרכים הבאות:
- כדי לייצא קובץ בשם
model.bst, משתמשים בשיטהsave_modelשלxgboost.Booster. - משתמשים בספריית
joblibכדי לייצא קובץ בשםmodel.joblib.
שם הקובץ של ארטיפקט המודל צריך להיות זהה בדיוק לאחת מהאפשרויות האלה.
בדוגמאות הבאות אפשר לראות איך מאמנים מודל ומייצאים אותו:
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 שבה השתמשתם לאימון.
המאמרים הבאים
מידע נוסף על דרישות נוספות לקוד האימון שצריך לקחת בחשבון כשמבצעים אימון בלי שרת (serverless) ב-Vertex AI
כאן מוסבר איך ליצור
TrainingPipelineמשאב בהתאמה אישיתTrainingPipelineכדי להריץ את קוד האימון המותאם אישית וליצורModelמארטיפקטים של המודל שנוצרו.איך מייבאים
Modelמארטיפקטים של מודלים ב-Cloud Storage ההגדרה הזו חלה על ארטיפקטים של מודלים שיוצרים באמצעותCustomJobמשאב אוHyperparameterTuningJobמשאב, וגם על ארטיפקטים של מודלים שמאומנים מחוץ ל-Vertex AI.