Esta página ha sido traducida por una máquina.

Traiga su propio contenedor (BYOC) para pipelines

Además de definir pasos de pipeline basados en trabajos y scripts, puede utilizar imágenes de contenedor personalizadas para definir el tiempo de ejecución del paso.

Puede seleccionar la imagen de contenedor, el comando o el punto de entrada para la ejecución del contenedor. Puede proporcionar el código personalizado en un script o un archivo comprimido, lo que le permite actualizar el código sin volver a crear la imagen.

Configuración de Paso BYOC

  1. (Opcional) Seleccione De contenedor.
  2. En Configuración de contenedor, seleccione Configurar.
  3. En el panel Configurar el entorno de contenedor:
    1. Seleccione un repositorio de la lista. Si el repositorio está en otro compartimento, seleccione Cambiar compartimento.
    2. Seleccione una imagen de la lista.
    3. (Opcional) Introduzca un punto de entrada. Para agregar otro, seleccione +Add parameter.
    4. (Opcional) Introduzca un CMD. Para agregar otro, seleccione +Add parameter.
    5. (Opcional) Introduzca un resumen de imagen.
    6. (Opcional) Si utiliza la verificación de firma, introduzca el OCID de la firma de imagen. Por ejemplo, ocid1.containerimagesignature.oc1.iad.aaaaaaaaab....
    7. Seleccione Seleccionar.
  4. (Opcional) Cargue el artefacto de paso arrastrándolo al cuadro. Este paso es opcional solo si BYOC está configurado.

artefacto de modelos

La carga de un artefacto de paso al utilizar BYOC es opcional. Sin embargo, le permite cambiar el código que se ejecuta dentro del contenedor sin volver a crear la imagen.

Los artefactos de paso se montan en el contenedor en la carpeta /home/datascience/. Si un artefacto es un archivo, su contenido se extrae en la carpeta /home/datascience/decompressed_artifact.

Imagen de docker común
Es conveniente crear una imagen de contenedor genérica con el entorno necesario (por ejemplo, Python 3.8 y bibliotecas básicas como se muestra en Inicio rápido) y agregar scripts de Python más tarde como artefactos de paso.
Artefactos personalizados: sustitución de carpeta
Al utilizar un artefacto de paso personalizado, el servicio monta un volumen con el artefacto en la carpeta /home/datascience, sustituyendo la carpeta de la imagen de contenedor. Los artefactos de archivo (zip/tar/...) se descomprimen y el contenido se presenta en la carpeta /home/datascience/decompressed_artifact.

Creación de un pipeline de contenedor - Inicio rápido

Siga estos pasos para crear un paso de pipeline de contenedor.

Creación del contenedor

  1. Utilice una imagen existente en OCI Registry o cree una nueva imagen con el archivo Dockerfile de ejemplo. Este es el código de ejemplo que crea una imagen que permite ejecutar scripts de Python.
    Archivo Dockerfile:
    FROM python:3.8-slim AS base
     
    ENV DATASCIENCE_USER datascience
    ENV DATASCIENCE_UID 1000
    ENV HOME /home/$DATASCIENCE_USER
     
    RUN python -m pip install \
            oci \
            ocifs
     
    COPY simplest.py .
    CMD ["python", "simplest.py"]
    Dockerfile asume que el script, simplest.py, está en la misma carpeta. A continuación, se muestra un código de ejemplo para simplest.py:
    import datetime
    import os
    import time
     
    pipe_id = os.environ.get("PIPELINE_RUN_OCID", "LOCAL")
    print(f"Starting pipeline run: {pipe_id}")
    print(f"Current timestamp in UTC: {datetime.datetime.utcnow()}")
     
    print("Delay 5s")
     
    time.sleep(5)
     
    print("Environment variables:")
     
    for item, value in os.environ.items():
        print(f"\t {item}: {value}")
  2. Ejecute el comando de creación de docker:
    docker build -t byoc:1.0.0 .

Prueba del contenedor

Antes de transferir la imagen a un registro de contenedor, puede probarla localmente.

  1. Ejecute la imagen localmente:
    docker run --rm -it -v "/home/lin/.oci:/home/datascience/.oci" byoc:1.0.0
  2. Confirme que la salida es similar a:
    Starting pipeline run: LOCAL
    Current timestamp in UTC: 2024-03-07 14:44:08.506191
    Delay 5s
    Environment variables:
             PATH: /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
             HOSTNAME: ae441d10f33e
             TERM: xterm
             LANG: C.UTF-8
             GPG_KEY: E3FF2839C048B25C084DEBE9B26995E310250568
             PYTHON_VERSION: 3.8.18
             PYTHON_PIP_VERSION: 23.0.1
             PYTHON_SETUPTOOLS_VERSION: 57.5.0
             PYTHON_GET_PIP_URL: https://github.com/pypa/get-pip/raw/dbf0c85f76fb6e1ab42aa672ffca6f0a675d9ee4/public/get-pip.py
             PYTHON_GET_PIP_SHA256: dfe9fd5c28dc98b5ac17979a953ea550cec37ae1b47a5116007395bfacff2ab9
             DATASCIENCE_USER: datascience
             DATASCIENCE_UID: 1000
             HOME: /home/datascience

Transferencia del contenedor a OCIR

Siga los pasos de la documentación de Container Registry para generar un token de autenticación y conectarse a OCIR.

  1. Conéctese al repositorio de contenedores de Oracle (OCIR):
    docker login -u '<tenant_namespace>/<username>' <region>.ocir.io
    Para obtener más información, consulte la documentación de Container Registry.
  2. Etiquete la imagen de contenedor local:
    docker tag <local_image_name>:<local_version>
     <region>.ocir.io/<tenancy_ocir_namespace>/<repo>:<version>
    docker tag byoc:1.0.0 iad.ocir.io/testtenancy/byoc:1.0.0
    Para obtener más información, consulte la documentación de Container Registry.
  3. Transfiera la imagen etiquetada a OCI:
    docker push <region>.ocir.io/<tenancy_ocid_namespace>/<repo>:<version>
    docker push byoc:1.0.0 iad.ocir.io/testtenancy/byoc:1.0.0
    Para obtener más información, consulte la documentación de Container Registry.

Creación del pipeline

Consulte la sección Políticas de pipeline para asegurarse de que tiene políticas que permiten al pipeline ejecutar el recurso extraer imágenes de contenedor del registro de contenedor.

Cree un pipeline para utilizar el contenedor.
  1. Cree un pipeline con un nombre adecuado, por ejemplo, BYOC Demo name.
  2. Seleccione Agregar pasos de pipeline.
  3. Asigne un nombre al paso, por ejemplo, Step 1.
  4. Para utilizar Bring Your Own Container, seleccione From container.
  5. En Configuración de contenedor, seleccione Configurar.
  6. En Configurar el entorno de contenedor:
    1. Seleccione el inicio rápido o el byoc del repositorio de la lista. Si el repositorio está en otro compartimento, seleccione Cambiar compartimento.
    2. Seleccione la imagen, iad.ocir.io/idtlxnfdweil/quickstart/byoc:1.0.0, de la lista.
    3. Seleccione Seleccionar.
  7. Seleccione Guardar.
  8. Opcional: defina el registro.
  9. Haga clic en Crear.

Activación de los logs de pipeline

Cree un pipeline e inícielo.
Esta tarea es opcional, si no desea generar los logs, puede ignorarla.
  1. En la lista de pipelines, seleccione el pipeline que desea activar.
  2. En la página de detalles del pipeline, seleccione Logs.
  3. Seleccione Activar Logs.

Configuraciones Soportadas

Información importante sobre las configuraciones admitidas.

  • Los pipelines de aprendizaje automático solo soportan imágenes de contenedor que residan en OCI Registry.
  • El tamaño de la imagen de contenedor está limitado a 40 GB sin comprimir.
  • El usuario que crea el recurso de pipeline de aprendizaje automático debe tener acceso a la imagen de contenedor en OCI Registry. Si no es así, cree una política de IAM de acceso de usuario antes de crear el recurso de pipeline de aprendizaje automático.

Imágenes de contenedor en Apple Silicon M1 Mac

Para obtener más información, consulte Imagen de Docker en Apple y M1 MacBook.

Resúmenes de imagen

Las imágenes de un registro de contenedores se identifican por repositorio, nombre y etiqueta. Además, Docker proporciona a cada versión de una imagen un resumen alfanumérico único. Al transferir una imagen de contenedor actualizada, recomendamos proporcionar a la imagen actualizada una nueva etiqueta para identificarla, en lugar de reutilizar una etiqueta existente, como mejores prácticas. Sin embargo, aunque introduzca una imagen actualizada y le asigne el mismo nombre y la etiqueta que una versión anterior, la nueva versión transferida tiene un resumen diferente de la versión anterior.

Al crear un recurso de pipeline, se especifica el nombre y la etiqueta de una versión concreta de una imagen. Para evitar inconsistencias más adelante, los pipelines también registran el resumen único de esa versión concreta de la imagen. También puede proporcionar el resumen de la imagen al crear el recurso de pipeline.

Por defecto, si transfiere una versión actualizada de una imagen al registro de Docker con el mismo nombre y etiqueta que la versión original de la imagen, los pipelines siguen utilizando el resumen original para extraer la versión original de la imagen. Este podría ser el comportamiento que requiere. Sin embargo, si desea que los pipelines extraigan la versión posterior de la imagen, puede cambiar explícitamente el nombre de la imagen con la etiqueta y el resumen que utilizan los pipelines para identificar qué versión de la imagen desea extraer.