Una plantilla de canalización es un recurso que puedes usar para publicar una definición de flujo de trabajo de forma que se pueda reutilizar varias veces, por un solo usuario o por varios usuarios.
El cliente de registro del SDK de Kubeflow Pipelines es una nueva interfaz de cliente que puedes usar con un servidor de registro compatible, como Artifact Registry, para controlar las versiones de tus plantillas de Kubeflow Pipelines (KFP). Para obtener más información, consulta Usar la plantilla en un cliente de registro del SDK de Kubeflow Pipelines.
En esta página se explica cómo hacer lo siguiente:
- Crear una plantilla de flujo de trabajo de KFP
- Usa el cliente de registro del SDK de Kubeflow Pipelines para subir la plantilla a un repositorio de plantillas de canalizaciones
- Usar la plantilla en el cliente de Kubeflow Pipelines
Antes de empezar
Antes de compilar y ejecutar tu canalización, sigue estas instrucciones para configurar tu proyecto y tu entorno de desarrollo en la consola. Google Cloud Google Cloud
Instala la versión 2 o una posterior del SDK de Kubeflow Pipelines.
pip install --upgrade "kfp>=2,<3"
Instala la versión 1.15.0 o una posterior del SDK de Vertex AI para Python.
(Opcional) Antes de instalarlo, ejecuta el siguiente comando para ver qué versión del SDK de Vertex AI para Python tienes instalada:pip freeze | grep google-cloud-aiplatform
(Opcional) Instala la versión 390.0.0 o posterior de Google Cloud CLI.
Configurar permisos
Si aún no has configurado tu proyecto de la CLI de gcloud para Vertex AI Pipelines, sigue las instrucciones de Configurar tu proyecto para Vertex AI Pipelines Google Cloud .
Además, asigna los siguientes permisos predefinidos de gestión de identidades y accesos para usar Artifact Registry como registro de plantillas:
roles/artifactregistry.admin
: asigna este rol para crear y gestionar un repositorio.roles/artifactregistry.repoAdmin
oroles/artifactregistry.writer
: asigna cualquiera de estos roles para gestionar las plantillas de un repositorio.roles/artifactregistry.reader
: asigna este rol para descargar plantillas de un repositorio.roles/artifactregistry.reader
: Asigna este rol a una cuenta de servicio asociada a Vertex AI Pipelines para crear una ejecución de un flujo de trabajo a partir de una plantilla.
Para obtener más información sobre los roles predefinidos de Identity and Access Management de Artifact Registry, consulta el artículo Roles predefinidos de Artifact Registry.
Usa el siguiente ejemplo para asignar roles:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Haz los cambios siguientes:
- PROJECT_ID: el proyecto en el que quieres crear la canalización.
- PRINCIPAL: la entidad a la que vas a añadir permisos.
- ROLE: el rol de gestión de identidades y accesos que quieres conceder al principal.
Consulta Roles y permisos en la documentación de Artifact Registry para obtener más información sobre lo siguiente:
- Conceder permisos en todo el proyecto
- Conceder permisos específicos de un repositorio
- Conceder roles básicos de gestión de identidades y accesos a usuarios concretos
Crear un repositorio en Artifact Registry
A continuación, creará un repositorio en Artifact Registry para sus plantillas de canalización.
Consola
Abre Vertex AI Pipelines en la Google Cloud consola.
Haz clic en la pestaña Tus plantillas.
Para abrir el panel Seleccionar repositorio, haz clic en Seleccionar repositorio.
Haz clic en Crear repositorio.
Especifica
quickstart-kfp-repo
como nombre del repositorio.En Formato, selecciona
Kubeflow Pipelines
.En Location Type (Tipo de ubicación), selecciona Region (Región).
En la lista desplegable Región, selecciona
us-central1
.Haz clic en Crear.
Google Cloud CLI
Ejecuta el siguiente comando para crear un repositorio.
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
- LOCATION: la ubicación o la región en la que quieres crear el repositorio. Por ejemplo,
us-central1
.
Ejecuta el comando gcloud artifacts repositories create:
Linux, macOS o Cloud Shell
gcloud artifacts repositories create quickstart-kfp-repo --location=LOCATION_ID --repository-format=KFP
Windows (PowerShell)
gcloud artifacts repositories create quickstart-kfp-repo --location=LOCATION_ID --repository-format=KFP
Windows (cmd.exe)
gcloud artifacts repositories create quickstart-kfp-repo --location=LOCATION_ID --repository-format=KFP
Crear una plantilla
Usa el siguiente código de ejemplo para definir una canalización con un solo componente. Para obtener información sobre cómo definir una canalización con KFP, consulta Crear una canalización.
from kfp import dsl
from kfp import compiler
@dsl.component()
def hello_world(text: str) -> str:
print(text)
return text
@dsl.pipeline(name='hello-world', description='A simple intro pipeline')
def pipeline_hello_world(text: str = 'hi there'):
"""Pipeline that passes small pipeline parameter string to consumer op."""
consume_task = hello_world(
text=text) # Passing pipeline parameter as argument to consumer op
compiler.Compiler().compile(
pipeline_func=pipeline_hello_world,
package_path='hello_world_pipeline.yaml')
Cuando ejecutas el ejemplo, la instrucción compiler.Compiler().compile(...)
compila la canalización "hello-world" en el archivo YAML local llamado hello_world_pipeline.yaml
.
Subir la plantilla
Consola
Abre Vertex AI Pipelines en la Google Cloud consola.
Haz clic en Subir para abrir el panel Subir flujo de procesamiento o componente.
En la lista desplegable Repositorio, selecciona el repositorio
quickstart-kfp-repo
.Especifica un nombre para la plantilla de canalización.
En el campo Archivo, haga clic en Elegir para seleccionar y subir el archivo YAML de la plantilla de canalización compilada desde su sistema de archivos local.
Una vez que hayas subido la plantilla de la canalización, aparecerá en la página Tus plantillas.
Cliente del SDK de Kubeflow Pipelines
Para configurar el cliente de registro del SDK de Kubeflow Pipelines, ejecuta los siguientes comandos:
from kfp.registry import RegistryClient client = RegistryClient(host=f"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo")
Sube el archivo YAML compilado a tu repositorio en Artifact Registry.
templateName, versionName = client.upload_pipeline( file_name="hello_world_pipeline.yaml", tags=["v1", "latest"], extra_headers={"description":"This is an example pipeline template."})
Para comprobar que la plantilla se ha subido, sigue estos pasos:
Abre Vertex AI Pipelines en la Google Cloud consola.
Haz clic en la pestaña Tus plantillas.
Haz clic en Seleccionar repositorio.
En la lista, selecciona el repositorio
quickstart-kfp-repo
y, a continuación, haz clic en Seleccionar.En la lista, debería aparecer el paquete de plantilla que ha subido
hello-world
.Para ver la lista de versiones de la plantilla de canalización, haga clic en la plantilla
hello-world
.Para ver la topología de la canalización, haz clic en la versión.
Usar la plantilla en Vertex AI
Una vez que haya subido su plantilla de canalización a su repositorio en Artifact Registry, podrá usarla en Vertex AI Pipelines.
Crea un segmento de almacenamiento provisional para tu plantilla
Antes de poder usar tu plantilla de flujo de trabajo, tendrás que crear un segmento de Cloud Storage para las ejecuciones de flujo de trabajo de staging.
Para crear el bucket, sigue las instrucciones de Configurar un bucket de Cloud Storage para los artefactos de la canalización y, a continuación, ejecuta el siguiente comando:
STAGING_BUCKET="gs://BUCKET_NAME"
Sustituye BUCKET_NAME por el nombre del bucket que acabas de crear.
Crear una ejecución de flujo de trabajo a partir de tu plantilla
Puedes usar el SDK de Vertex AI para Python o la Google Cloud consola para crear una ejecución de una canalización a partir de tu plantilla en Artifact Registry.
Consola
Abre Vertex AI Pipelines en la Google Cloud consola.
Haz clic en la pestaña Tus plantillas.
Para abrir el panel Seleccionar repositorio, haz clic en Seleccionar repositorio.
Selecciona el repositorio
quickstart-kfp-repo
y, a continuación, haz clic en Seleccionar.Haz clic en el paquete
hello-world
.Junto a la versión
4f245e8f9605
, haz clic en Crear ejecución.Haz clic en Configuración de tiempo de ejecución.
En Ubicación de Cloud Storage, introduce lo siguiente:
gs://BUCKET_NAME
Sustituye BUCKET_NAME por el nombre del segmento que has creado para organizar las ejecuciones de tu canalización.
Haz clic en Enviar.
SDK de Vertex AI para Python
Usa el siguiente ejemplo para crear una ejecución de la canalización a partir de tu plantilla:
from google.cloud import aiplatform
# Initialize the aiplatform package
aiplatform.init(
project="PROJECT_ID",
location='us-central1',
staging_bucket=STAGING_BUCKET)
# Create a pipeline job using a version ID.
job = aiplatform.PipelineJob(
display_name="hello-world-latest",
template_path="https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world@SHA256_TAG" + \
versionName)
# Alternatively, create a pipeline job using a tag.
job = aiplatform.PipelineJob(
display_name="hello-world-latest",
template_path="https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/TAG")
job.submit()
Haz los cambios siguientes:
PROJECT_ID: el Google Cloud proyecto en el que se ejecuta esta canalización.
SHA256_TAG: el valor de hash sha256 de la versión de la plantilla.
TAG: etiqueta de versión de la plantilla.
Ver las ejecuciones de flujos de procesamiento creadas
Puedes ver las ejecuciones creadas por una versión de una canalización específica en el SDK de Vertex AI para Python.
Consola
Abre Vertex AI Pipelines en la Google Cloud consola.
Haz clic en la pestaña Tus plantillas.
Haz clic en Seleccionar repositorio.
En la lista, selecciona el repositorio
quickstart-kfp-repo
y, a continuación, haz clic en Seleccionar.Para ver la lista de versiones de la plantilla de canalización
hello-world
, haga clic en la plantillahello world
.Haz clic en la versión para la que quieras ver las ejecuciones de la canalización.
Para ver las ejecuciones de la canalización de la versión seleccionada, haga clic en Ver ejecuciones y, a continuación, en la pestaña Ejecuciones.
SDK de Vertex AI para Python
Para enumerar las ejecuciones de los flujos de procesamiento, ejecuta el comando pipelineJobs.list como se muestra en uno o varios de los siguientes ejemplos:
from google.cloud import aiplatform
# To filter all runs created from a specific version
filter = 'template_uri:"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/*" AND ' + \
'template_metadata.version="%s"' % versionName
aiplatform.PipelineJob.list(filter=filter)
# To filter all runs created from a specific version tag
filter = 'template_uri="https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/latest"'
aiplatform.PipelineJob.list(filter=filter)
# To filter all runs created from a package
filter = 'template_uri:"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/hello-world/*"'
aiplatform.PipelineJob.list(filter=filter)
# To filter all runs created from a repo
filter = 'template_uri:"https://us-central1-kfp.pkg.dev/PROJECT_ID/quickstart-kfp-repo/*"'
aiplatform.PipelineJob.list(filter=filter)
Usar la plantilla en un cliente de registro del SDK de Kubeflow Pipelines
Puedes usar un cliente de registro del SDK de Kubeflow Pipelines junto con Artifact Registry para descargar y usar tu plantilla de canalización.
Para enumerar los recursos del repositorio, ejecuta los siguientes comandos:
templatePackages = client.list_packages() templatePackage = client.get_package(package_name = "hello-world") versions = client.list_versions(package_name="hello-world") version = client.get_version(package_name="hello-world", version=versionName) tags = client.list_tags(package_name = "hello-world") tag = client.get_tag(package_name = "hello-world", tag="latest")
Para ver la lista completa de métodos y documentos disponibles, consulta los
proto
archivos de Artifact Registry en el repositorio de GitHub.Para descargar la plantilla en tu sistema de archivos local, ejecuta los siguientes comandos:
# Sample 1 filename = client.download_pipeline( package_name = "hello-world", version = versionName) # Sample 2 filename = client.download_pipeline( package_name = "hello-world", tag = "v1") # Sample 3 filename = client.download_pipeline( package_name = "hello-world", tag = "v1", file_name = "hello-world-template.yaml")
Usar la API REST de Artifact Registry
En las siguientes secciones se resume cómo usar la API REST de Artifact Registry para gestionar las plantillas de canalización en tu repositorio de Artifact Registry.
Subir una plantilla de canalización con la API REST de Artifact Registry
Para subir una plantilla de flujo de trabajo, crea una solicitud HTTP con los valores de los parámetros que se describen en esta sección.
- PROJECT_ID es el Google Cloud proyecto en el que se ejecuta esta canalización.
- REPO_ID es el ID de tu repositorio de Artifact Registry.
Solicitud curl de ejemplo
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-F tags=v1,latest \
-F content=@pipeline_spec.yaml \
https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID
Crear la solicitud de subida
La solicitud es una solicitud multiparte HTTP o HTTPS. Debe incluir el token de autenticación en el encabezado de la solicitud. Para obtener más información, consulta gcloud auth print-access-token.
La carga útil de la solicitud es el contenido del archivo pipeline_spec.yaml
(o del paquete .zip). El límite de tamaño recomendado es de 10 MiB.
El nombre del paquete se toma de la entrada pipeline_spec.pipeline_info.name
del archivo pipeline_spec.yaml
. El nombre del paquete identifica de forma única el paquete y no se puede cambiar entre versiones. Puede tener entre 4 y 128 caracteres y debe coincidir con la siguiente expresión regular: ^[a-z0-9][a-z0-9-]{3,127}$
.
El paquete tags
es una lista de hasta ocho etiquetas separadas por comas.
Cada etiqueta debe coincidir con la siguiente expresión regular: ^[a-zA-Z0-9\-._~:@+]{1,128}$
.
Si existe una etiqueta y apunta a una canalización que ya se ha subido, la etiqueta se actualiza para que apunte a la canalización que estás subiendo. Por ejemplo, si la etiqueta latest
apunta a una canalización que ya has subido y subes una nueva versión con --tag=latest
, la etiqueta latest
se elimina de la canalización que habías subido y se asigna a la nueva canalización que estás subiendo.
Si la canalización que estás subiendo es idéntica a una que ya has subido, la subida se completará correctamente. Los metadatos de la canalización subida, incluidas sus etiquetas de versión, se actualizan para que coincidan con los valores de los parámetros de la solicitud de subida.
Subir respuesta
Si la solicitud de subida se realiza correctamente, devuelve un estado HTTP OK
. El cuerpo de la respuesta es el siguiente:
{packageName}/{versionName=sha256:abcdef123456...}
donde versionName
es el digest sha256 de pipeline_spec.yaml
con formato de cadena hexadecimal.
Descargar una plantilla de canalización con la API REST de Artifact Registry
Para descargar una plantilla de flujo de trabajo, crea una solicitud HTTP con los valores de los parámetros que se describen en esta sección.
- PROJECT_ID es el Google Cloud proyecto en el que se ejecuta esta canalización.
- REPO_ID es el ID de tu repositorio de Artifact Registry.
- PACKAGE_ID es el ID de paquete de la plantilla que ha subido.
- TAG es la etiqueta de versión.
- VERSION es la versión de la plantilla en el formato
sha256:abcdef123456...
.
Para descargar Artifact Registry de forma estándar, debe crear el enlace de descarga de la siguiente manera:
url = https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/VERSION
url = https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/TAG
Ejemplos de solicitudes curl
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/VERSION
Puedes sustituir VERSION por TAG y descargar la misma plantilla, como se muestra en el siguiente ejemplo:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
https://us-central1-kfp.pkg.dev/PROJECT_ID/REPO_ID/PACKAGE_ID/TAG
Descargar respuesta
Si la solicitud de descarga se realiza correctamente, devuelve el estado HTTP OK
. El cuerpo de la respuesta es el contenido del archivo pipeline_spec.yaml
.
Enlaces de referencia
- Consulta Artifact Registry: descripción general de los repositorios para obtener más información sobre cómo gestionar tus repositorios.
- API Repository
- La palabra clave format es "KFP"
- API Package
- API Version
- API Tag
- Definiciones de proto en GitHub