כשמשתמשים ב Google Cloud רכיבי צינור עיבוד נתונים (GCPC), אפשר להשתמש בתכונות הבאות של Vertex AI ושל Google Cloud כדי לאבטח את הרכיבים והארטיפקטים.
ציון חשבון שירות לרכיב
כשמשתמשים ברכיב, אפשר לציין חשבון שירות.
הרכיב יופעל ויפעל עם ההרשאות של חשבון השירות הזה.
לדוגמה, אפשר להשתמש בקוד הבא כדי לציין את חשבון השירות של רכיב ModelDeploy:
model_deploy_op = ModelDeployOp(model=training_job_run_op.outputs["model"],
endpoint=endpoint_op.outputs["endpoint"],
automatic_resources_min_replica_count=1,
automatic_resources_max_replica_count=1,
service_account="SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com")
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_ACCOUNT_ID: המזהה של חשבון השירות.
- PROJECT_ID: מזהה הפרויקט.
מידע נוסף על שימוש בחשבון שירות בהתאמה אישית ועל הגדרת חשבון שירות לשימוש עם Vertex AI Pipelines
שימוש ב-VPC Service Controls כדי למנוע זליגת נתונים
VPC Service Controls יכול לעזור לכם לצמצם את הסיכון לזליגת נתונים מ-Vertex AI Pipelines. כשמשתמשים ב-VPC Service Controls כדי ליצור גבולות גזרה לשירות, המשאבים והנתונים שנוצרים על ידי Vertex AI Pipelines ורכיבי הצינור של Google Cloud מוגנים באופן אוטומטי. לדוגמה, כשמשתמשים ב-VPC Service Controls כדי להגן על צינור העברת הנתונים, אי אפשר להוציא את הפריטים הבאים מתוך גבולות גזרה לשירות:
- נתוני אימון למודל AutoML
- מודלים שיצרתם
- תוצאות מבקשת תחזית באצווה
מידע נוסף על VPC Service Controls עם Vertex AI
הגדרת קישור בין רשתות VPC שכנות (peering)
אפשר להגדיר רכיבי צינור לעיבוד נתונים כדי ליצור קשר עם ענן וירטואלי פרטי (VPC) על ידי ציון פרמטרים נוספים. Google Cloud לדוגמה, אפשר להשתמש בקוד הבא כדי לציין רשת VPC לרכיב EndpointCreate:
endpoint_create_op = EndpointCreateOp(
project="PROJECT_ID",
location="REGION",
display_name="endpoint-display-name",
network="NETWORK")
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט.
- REGION: האזור שבו אתם משתמשים ב-Vertex AI.
- NETWORK: רשת ה-VPC, למשל
"projects/12345/global/networks/myVPC".
מידע נוסף על קישור בין רשתות VPC שכנות (peering) ב-Vertex AI
שימוש במפתחות הצפנה בניהול הלקוח (CMEK)
כברירת מחדל, Google Cloud הנתונים מוצפנים באופן אוטומטי כשהם במצב מנוחה באמצעות מפתחות הצפנה שמנוהלים על ידי Google. אם יש לכם דרישות ספציפיות בנושא תאימות או רגולציה שקשורות למפתחות שמגנים על הנתונים שלכם, אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) עבור המשאבים שלכם. לפני שמתחילים להשתמש במפתחות הצפנה בניהול הלקוח, כדאי לקרוא על היתרונות של CMEK ב-Vertex AI ועל המשאבים הנוכחיים שתומכים ב-CMEK.
הגדרת הרכיב באמצעות CMEK
אחרי שיוצרים מחזיק מפתחות ומפתח ב-Cloud Key Management Service, ומעניקים הרשאות הצפנה ופענוח של Vertex AI למפתח, אפשר ליצור רכיב חדש עם תמיכה ב-CMEK על ידי ציון המפתח כאחד מפרמטרים היצירה. לדוגמה, אפשר להשתמש בקוד הבא כדי לציין מפתח לרכיב ModelBatchPredict:
model_batch_predict_op = ModelBatchPredictOp(project="PROJECT_ID",
model=model_upload_op.outputs["model"],
encryption_spec_key_name="projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME")
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION_ID: מזהה מיקום או אזור תקין, לדוגמה,
us-central1. - KEY_RING_NAME: השם של אוסף המפתחות של CMEK. מידע נוסף על מחזיקי מפתחות זמין במאמר משאבי Cloud KMS.
- KEY_NAME: השם של מפתח ה-CMEK.
הערה: יכול להיות שרכיבי Google Cloud שאינם רכיבי Vertex AI ידרשו הרשאות נוספות. לדוגמה, יכול להיות שרכיב BigQuery ידרוש הרשאה להצפנה ולפענוח. בנוסף, המיקום של מפתח ה-CMEK צריך להיות זהה למיקום של הרכיב. לדוגמה, אם רכיב BigQuery טוען נתונים ממערך נתונים שמבוסס על מיקום בארה"ב במספר אזורים, גם מפתח ה-CMEK צריך להיות מבוסס על מיקום בארה"ב במספר אזורים.
צריכה או יצירה של ארטיפקטים ברכיב
Google Cloud SDK מגדיר קבוצה של סוגי ארטיפקטים של מטא-נתונים של ML שמשמשים כקלט ופלט של רכיבים. חלק מ Google Cloud רכיבי צינור עיבוד הנתונים צורכים את הארטיפקטים האלה כקלט או מייצרים אותם כפלט.
בדף הזה מוסבר איך להשתמש בארטיפקטים האלה ואיך ליצור אותם.
שימוש בפריט מידע שנוצר בתהליך פיתוח (Artifact) של למידת מכונה
שימוש בפריט מידע שנוצר בתהליך פיתוח (Artifact) בקובץ YAML של רכיב
המטא-נתונים של הארטיפקט יכולים לשמש כקלט לרכיב. כדי להכין ארטיפקט לשימוש כקלט, צריך לחלץ אותו ולהכניס אותו לקובץ YAML של רכיב.
לדוגמה, הרכיב ModelUploadOp יוצר ארטיפקט google.VertexModel שאפשר להשתמש בו ברכיב ModelDeployOp. משתמשים בקוד הבא בקובץ YAML של רכיב כדי לאחזר משאב Model של Vertex AI מהקלט (הפניה):
"model": "',"{{$.inputs.artifacts['model'].metadata['resourceName']}}", '"'
לסכימה המלאה של המטא-נתונים של הארטיפקט, אפשר לעיין בקובץ artifact_types.py במאגר Kubeflow GitHub.
שימוש בארטיפקט ברכיב Python קליל
from kfp.dsl import Artifact, Input
@dsl.component
def classification_model_eval_metrics(
project: str,
location: str, # "us-central1",
model: Input[Artifact],
) :
# Consumes the `resourceName` metadata
model_resource_path = model.metadata["resourceName"]
דוגמה לשימוש בסוגי ארטיפקטים של מטא-נתונים של Vertex ML מופיעה במאמר אימון מודל סיווג באמצעות נתונים טבלאיים ו-Vertex AI AutoML.
יצירת פריט מידע שנוצר בתהליך פיתוח (Artifact) של למידת מכונה
בדוגמאות הקוד הבאות מוצג איך ליצור ארטיפקט של Vertex ML Metadata שאפשר להעביר כקלט לרכיב GCPC.
שימוש בצומת ייבוא
בדוגמה הבאה נוצר צומת Importer שרושם רשומה חדשה של ארטיפקט ב-Vertex ML Metadata. צומת הייבוא מקבל את ה-URI ואת המטא-נתונים של הארטיפקט כפרימיטיבים, ואורז אותם בארטיפקט.
from google_cloud_pipeline_components import v1
from google_cloud_pipeline_components.types import artifact_types
from kfp.components import importer_node
from kfp import dsl
@dsl.pipeline(name=_PIPELINE_NAME)
def pipeline():
# Using importer and UnmanagedContainerModel artifact for model upload
# component.
importer_spec = importer_node.importer(
artifact_uri='gs://managed-pipeline-gcpc-e2e-test/automl-tabular/model',
artifact_class=artifact_types.UnmanagedContainerModel,
metadata={
'containerSpec': {
'imageUri':
'us-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server:prod'
}
})
# Consuming the UnmanagedContainerModel artifact for the previous step
model_upload_with_artifact_op = v1.model.ModelUploadOp(
project=_GCP_PROJECT_ID,
location=_GCP_REGION,
display_name=_MODEL_DISPLAY_NAME,
unmanaged_container_model=importer_spec.outputs['artifact'])
שימוש ברכיבים מבוססי-פונקציות של Python
בדוגמה הבאה אפשר לראות איך להפיק פלט של ארטיפקט של Vertex ML Metadata ישירות מרכיב Python.
from google_cloud_pipeline_components import v1
from kfp.components import importer_node
from kfp import dsl
@dsl.component(
base_image='python:3.9',
packages_to_install=['google-cloud-aiplatform'],
)
# Note currently KFP SDK doesn't support outputting artifacts in `google` namespace.
# Use the base type dsl.Artifact instead.
def return_unmanaged_model(model: dsl.Output[dsl.Artifact]):
model.metadata['containerSpec'] = {
'imageUri':
'us-docker.pkg.dev/vertex-ai/automl-tabular/prediction-server:prod'
}
model.uri = f'gs://automl-tabular-pipeline/automl-tabular/model'
@dsl.pipeline(name=_PIPELINE_NAME)
def pipeline():
unmanaged_model_op = return_unmanaged_model()
# Consuming the UnmanagedContainerModel artifact for the previous step
model_upload_with_artifact_op = v1.model.ModelUploadOp(
project=_GCP_PROJECT_ID,
location=_GCP_REGION,
display_name=_MODEL_DISPLAY_NAME,
unmanaged_container_model=unmanaged_model_op.outputs['model'])
שימוש ברכיב משלכם שמבוסס על קונטיינר
בדוגמה הבאה מוצג איך ליצור פריט VertexBatchPredictionJob כפלט מרכיב מבוסס-קונטיינר באמצעות מחלקת כלי השירות artifact_types.py.
bp_job_artifact = VertexBatchPredictionJob(
'batchpredictionjob', vertex_uri_prefix + get_job_response.name,
get_job_response.name, get_job_response.output_info.bigquery_output_table,
get_job_response.output_info.bigquery_output_dataset,
get_job_response.output_info.gcs_output_directory)
output_artifacts = executor_input_json.get('outputs', {}).get('artifacts', {})
executor_output['artifacts'] = bp_job_artifact.to_executor_output_artifact(output_artifacts[bp_job_artifact.name])