Skip to main content
NetApp Solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Detección de carriles: Formación distribuida con RUN:AI

Colaboradores

En esta sección se ofrecen detalles sobre la configuración de la plataforma para la realización de formación distribuida de detección de carriles a escala mediante EL orquestador de IA. Se trata de la instalación de todos los elementos de la solución y de la ejecución del trabajo de formación distribuido en dicha plataforma. EL versionado DE ML se completa utilizando SnapshotTM de NetApp vinculado A RUN: Experimentos de IA para conseguir la reproducibilidad de los datos y los modelos. LA creación de versiones DE ML desempeña un papel fundamental en el seguimiento de modelos, el intercambio de trabajo entre miembros del equipo, la reproducibilidad de resultados, la implementación de nuevas versiones de modelos a la producción y la procedencia de los datos. El control de versiones DE NetApp ML (Snapshot) puede capturar versiones puntuales de los datos, modelos entrenados y registros asociados con cada experimento. Cuenta con un amplio soporte en la API que facilita la integración con la plataforma DE IA RUN: Solo tiene que activar un evento basado en el estado de entrenamiento. También hay que capturar el estado de todo el experimento sin cambiar nada en el código o los contenedores que se ejecutan sobre Kubernetes (K8s).

Por último, este informe técnico se resume en la evaluación del rendimiento en varios nodos habilitados para GPU en toda la serie AKS.

Formación distribuida para el caso de uso de detección de carriles mediante el conjunto de datos TuSimple

En este informe técnico, la formación distribuida se realiza en el conjunto de datos TuSimple para la detección de carriles. Horovod se utiliza en el código de entrenamiento para realizar el entrenamiento con datos distribuidos en varios nodos de GPU simultáneamente en el clúster de Kubernetes a través de AKS. El código se presenta como imágenes de contenedor para la descarga y el procesamiento de datos de TuSimple. Los datos procesados se almacenan en volúmenes persistentes asignados por el complemento Trident de NetApp. Para el entrenamiento, se crea una imagen de contenedor más y utiliza los datos almacenados en volúmenes persistentes creados durante la descarga de los datos.

Para enviar el trabajo de datos y entrenamiento, use RUN: AI para orquestar la asignación y la gestión de recursos. RUN: AI le permite realizar operaciones de interfaz de paso de mensajes (MPI) que son necesarias para Horovod. Este diseño permite que varios nodos de GPU se comuniquen entre sí para actualizar los pesos de entrenamiento después de cada lote de entrenamiento. También permite supervisar el entrenamiento a través de la interfaz de usuario y la CLI, para facilitar la supervisión del progreso de los experimentos.

NetApp Snapshot se integra dentro del código de entrenamiento y captura el estado de los datos y el modelo entrenado para cada experimento. Esta funcionalidad le permite realizar un seguimiento de la versión de los datos y el código que se usan y del modelo entrenado asociado generado.

Instalación e instalación de AKS

Para la configuración e instalación del clúster de AKS, vaya a. "Cree un clúster de AKS". A continuación, siga estos pasos:

  1. Al seleccionar el tipo de nodos (ya sean nodos del sistema (CPU) o de trabajadores (GPU), seleccione lo siguiente:

    1. Añada el nodo del sistema principal llamado agentpool en la Standard_DS2_v2 tamaño. Utilice los tres nodos predeterminados.

    2. Agregar nodo de trabajo gpupool con the Standard_NC6s_v3 el tamaño del pool. Utilice un mínimo de tres nodos para los nodos GPU.

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    Nota La implementación tarda entre 5 y 10 minutos.
  2. Una vez completada la implementación, haga clic en Connect to Cluster. Para conectarse al clúster AKS recién creado, instale la herramienta de línea de comandos Kubernetes desde su entorno local (portátil/PC). Visite "Instalar herramientas" Para instalarlo según el sistema operativo.

  3. "Instale el CLI de Azure en su entorno local".

  4. Para acceder al clúster AKS desde el terminal, primero introduzca az login y coloque las credenciales.

  5. Ejecute los dos comandos siguientes:

    az account set --subscription xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx
    aks get-credentials --resource-group resourcegroup --name aksclustername
  6. Introduzca este comando en la CLI de Azure:

    kubectl get nodes
    Nota Si los seis nodos están en funcionamiento como se ve aquí, su clúster de AKS estará listo y conectado a su entorno local.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

Cree una subred delegada para Azure NetApp Files

Para crear una subred delegada para Azure NetApp Files, siga esta serie de pasos:

  1. Acceda a redes virtuales en el portal de Azure. Busque la red virtual que acaba de crear. Debería tener un prefijo como el de los robles-vnet, como se ve aquí. Haga clic en el nombre de la red virtual.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  2. Haga clic en subredes y seleccione +Subnet en la barra de herramientas superior.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  3. Proporcione la subred con un nombre como ANF.sn Y en el encabezado Delegación de subred, seleccione Microsoft.NetApp/volumes. No cambie nada más. Haga clic en Aceptar.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

Los volúmenes Azure NetApp Files se asignan al clúster de aplicaciones y se consumen como reclamaciones de volúmenes persistentes (RVP) en Kubernetes. A su vez, esta asignación nos proporciona la flexibilidad para asignar volúmenes a diferentes servicios, ya sea ordenadores portátiles Jupyter, funciones sin servidor, etc.

Los usuarios de servicios pueden consumir almacenamiento desde la plataforma de muchas maneras. Las principales ventajas de Azure NetApp Files son:

  • Ofrece a los usuarios la capacidad de usar copias Snapshot.

  • Permite a los usuarios almacenar grandes cantidades de datos en volúmenes de Azure NetApp Files.

  • Obtenga las ventajas en el rendimiento de los volúmenes de Azure NetApp Files cuando ejecute sus modelos en conjuntos de archivos de gran tamaño.

Configuración de Azure NetApp Files

Para completar la configuración de Azure NetApp Files, primero debe configurarlo como se describe en "Inicio rápido: Configure Azure NetApp Files y cree un volumen NFS".

Sin embargo, puede omitir los pasos para crear un volumen NFS para Azure NetApp Files a medida que creará volúmenes a través de Trident. Antes de continuar, asegúrese de que dispone de:

Agrupación de la red virtual de AKS y la red virtual de Azure NetApp Files

A continuación, conecte la red virtual AKS (vnet) con Azure NetApp Files vnet siguiendo estos pasos:

  1. En el cuadro de búsqueda de la parte superior del portal de Azure, escriba redes virtuales.

  2. Haga clic en vnet aks- vnet-name y, a continuación, escriba peerings en el campo de búsqueda.

  3. Haga clic en +Agregar e introduzca la información proporcionada en la siguiente tabla:

    Campo

    Valor o descripción #

    Nombre de enlace de relación entre iguales

    aks-vnet-name_to_anf

    SubscriptionId

    Suscripción de la red virtual de Azure NetApp Files a la que se está creando una relación de paridad

    Partner de vnet peering

    Red virtual de Azure NetApp Files

    Nota Deje todas las secciones que no sean asteriscos por defecto
  4. Haga clic en AGREGAR o en Aceptar para agregar la conexión a la red virtual.

Trident

Trident es un proyecto de código abierto que NetApp mantiene para el almacenamiento persistente en contenedores para aplicaciones. Trident se ha implementado como una controladora de aprovisionamiento externa que se ejecuta como un "pod", supervisando volúmenes y automatizando totalmente el proceso de aprovisionamiento.

Trident de NetApp permite una integración sin problemas con K8S mediante la creación y el montaje de volúmenes persistentes para almacenar conjuntos de datos de entrenamiento y modelos entrenados. Esta funcionalidad facilita a los científicos e ingenieros de datos el uso de K8 sin los problemas de almacenar y gestionar manualmente conjuntos de datos. Trident también elimina la necesidad que tienen los científicos de datos de aprender a gestionar nuevas plataformas de datos a medida que integra las tareas relacionadas con la gestión de datos a través de la integración lógica de las API.

Instale Trident

Para instalar el software Trident, realice los pasos siguientes:

  1. "Primero instale el timón".

  2. Descargue y extraiga el instalador de Trident 21.01.1.

    wget https://github.com/NetApp/trident/releases/download/v21.01.1/trident-installer-21.01.1.tar.gz
    tar -xf trident-installer-21.01.1.tar.gz
  3. Cambie el directorio a. trident-installer.

    cd trident-installer
  4. Copiar tridentctl a un directorio del sistema $PATH.

    cp ./tridentctl /usr/local/bin
  5. Instale Trident en el clúster K8s con Helm:

    1. Cambiar el directorio al directorio del timón.

      cd helm
    2. Instale Trident.

      helm install trident trident-operator-21.01.1.tgz --namespace trident --create-namespace
    3. Compruebe el estado de Trident pods de la manera habitual K8s:

      kubectl -n trident get pods
    4. Si todos los pods están ya en funcionamiento, se instala Trident y se podrá seguir avanzando.

Configure el back-end de Azure NetApp Files y la clase de almacenamiento

Para configurar el back-end de Azure NetApp Files y la clase de almacenamiento, complete los siguientes pasos:

  1. Vuelva al directorio inicial.

    cd ~
  2. Clone el "repositorio de proyectos" lane-detection-SCNN-horovod.

  3. Vaya a la trident-config directorio.

    cd ./lane-detection-SCNN-horovod/trident-config
  4. Crear un principio de servicio de Azure (el principio del servicio es cómo Trident se comunica con Azure para acceder a sus recursos de Azure NetApp Files).

    az ad sp create-for-rbac --name

    El resultado debería ser como el ejemplo siguiente:

    {
      "appId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
       "displayName": "netapptrident",
        "name": "http://netapptrident",
        "password": "xxxxxxxxxxxxxxx.xxxxxxxxxxxxxx",
        "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
     }
  5. Cree Trident backend json archivo.

  6. Con el editor de texto preferido, complete los siguientes campos de la tabla siguiente dentro de la anf-backend.json archivo.

    Campo Valor

    SubscriptionId

    Su ID de suscripción de Azure

    ID de tenantID

    Su ID de inquilino de Azure (de la salida de az ad sp en el paso anterior)

    ID del Cliente

    Su AppID (de la salida de az ad sp en el paso anterior)

    ClientSecret

    Su contraseña (de la salida de az ad sp en el paso anterior)

    El archivo debería tener el siguiente ejemplo:

    {
        "version": 1,
        "storageDriverName": "azure-netapp-files",
        "subscriptionID": "fakec765-4774-fake-ae98-a721add4fake",
        "tenantID": "fakef836-edc1-fake-bff9-b2d865eefake",
        "clientID": "fake0f63-bf8e-fake-8076-8de91e57fake",
        "clientSecret": "SECRET",
        "location": "westeurope",
        "serviceLevel": "Standard",
        "virtualNetwork": "anf-vnet",
        "subnet": "default",
        "nfsMountOptions": "vers=3,proto=tcp",
        "limitVolumeSize": "500Gi",
        "defaults": {
        "exportRule": "0.0.0.0/0",
        "size": "200Gi"
    }
  7. Indique a Trident que cree el back-end de Azure NetApp Files en la trident espacio de nombres, utilizar anf-backend.json como el archivo de configuración de la siguiente manera:

    tridentctl create backend -f anf-backend.json -n trident
  8. Cree la clase de almacenamiento:

    1. Los usuarios de K8 aprovisionan volúmenes mediante el uso de EVs que especifican una clase de almacenamiento por nombre. Indique a K8S que cree una clase de almacenamiento azurenetappfiles Que hará referencia al back-end de Azure NetApp Files creado en el paso anterior utilizando lo siguiente:

      kubectl create -f anf-storage-class.yaml
    2. Compruebe que la clase de almacenamiento se haya creado mediante el siguiente comando:

      kubectl get sc azurenetappfiles

      El resultado debería ser como el ejemplo siguiente:

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

Ponga en marcha y configure componentes snapshot para volúmenes en AKS

Si el clúster no viene preinstalado con los componentes Snapshot de volumen correctos, puede realizar la instalación manual de estos componentes ejecutando los siguientes pasos:

Nota AKS 1.18.14 no tiene una controladora Snapshot instalada previamente.
  1. Instale los CRD de la versión beta de instantánea utilizando los siguientes comandos:

    kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
    kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
    kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
  2. Instale el controlador Snapshot con los siguientes documentos de GitHub:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-3.0/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
  3. Configurar K8s volumesnapshotclass: Antes de crear una instantánea de volumen, a. "clase de snapshot de volumen" debe estar configurado. Cree una clase de copia Snapshot de volumen para Azure NetApp Files y utilícela para crear versiones ML con la tecnología Snapshot de NetApp. Cree volumesnapshotclass netapp-csi-snapclass y configúrelo como predeterminado "volumesnapshotclass "como tal:

    kubectl create -f netapp-volume-snapshot-class.yaml

    El resultado debería ser como el ejemplo siguiente:

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  4. Compruebe que la clase de copia Snapshot de volumen se haya creado con el siguiente comando:

    kubectl get volumesnapshotclass

    El resultado debería ser como el ejemplo siguiente:

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

EJECUCIÓN:instalación de IA

Para instalar RUN:AI, realice los siguientes pasos:

  1. "Instalar EJECUTAR:clúster AI en AKS".

  2. Vaya a app.runai.ai, haga clic en Crear nuevo proyecto y asigne un nombre a la detección de carriles. Creará un espacio de nombres en un clúster K8s a partir de runai- seguido del nombre del proyecto. En este caso, el espacio de nombres creado sería la detección de pistas en ejecución.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  3. "INSTALAR RUN:AI CLI".

  4. En el terminal, establezca la detección de carriles como UNA EJECUCIÓN predeterminada: Proyecto de IA mediante el siguiente comando:

    `runai config project lane-detection`

    El resultado debería ser como el ejemplo siguiente:

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  5. Crear ClusterRole y ClusterRoleBinding para el espacio de nombres del proyecto (por ejemplo, lane-detection) por lo tanto, la cuenta de servicio predeterminada que pertenece a runai-lane-detection el espacio de nombres tiene permiso para ejecutar volumesnapshot operaciones durante la ejecución de trabajos:

    1. Enumere los espacios de nombres para comprobarlo runai-lane-detection existe usando este comando:

      kubectl get namespaces

      El resultado debería aparecer como el ejemplo siguiente:

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  6. Crear función de clúster netappsnapshot Y ClusterRoleBinding netappsnapshot con los siguientes comandos:

    `kubectl create -f runai-project-snap-role.yaml`
    `kubectl create -f runai-project-snap-role-binding.yaml`

Descargue y procese el conjunto de datos de TuSimple como RUN:AI job

El proceso para descargar y procesar el conjunto de datos TuSimple COMO UNA EJECUCIÓN: El trabajo de IA es opcional. Se trata de los siguientes pasos:

  1. Cree y empuje la imagen del docker, o omita este paso si desea utilizar una imagen del docker existente (por ejemplo, muneer7589/download-tusimple:1.0)

    1. Cambie al directorio principal:

      cd ~
    2. Vaya al directorio de datos del proyecto lane-detection-SCNN-horovod:

      cd ./lane-detection-SCNN-horovod/data
    3. Modificar build_image.sh script de shell y cambiar el repositorio de docker a la suya. Por ejemplo, sustituir muneer7589 con el nombre de repositorio de docker. También puede cambiar el nombre y LA ETIQUETA de la imagen del docker (por ejemplo download-tusimple y.. 1.0):

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    4. Ejecute el script para crear la imagen de docker y empújela al repositorio de docker mediante los siguientes comandos:

      chmod +x build_image.sh
      ./build_image.sh
  2. Envíe el TRABAJO RUN: AI para descargar, extraer, preprocesar y almacenar el conjunto de datos de detección de carriles TuSimple en un `pvc`Creado dinámicamente por Trident de NetApp:

    1. Use los siguientes comandos para enviar LA EJECUCIÓN: AI job:

      runai submit
      --name download-tusimple-data
      --pvc azurenetappfiles:100Gi:/mnt
      --image muneer7589/download-tusimple:1.0
    2. Introduzca la información de la siguiente tabla para enviar EL trabajo RUN:AI:

      Campo Valor o descripción

      -name

      Nombre del trabajo

      -pvc

      PVC del formato [StorageClassName]:Size:ContainerMountPath en el envío de trabajos anterior, está creando un PVC basado en demanda usando Trident con archivos azurenetappfiles de la clase de almacenamiento. La capacidad de volumen persistente aquí es 100Gi y está montada en path /mnt.

      -imagen

      Imagen de Docker que se utilizará al crear el contenedor para este trabajo

      El resultado debería ser como el ejemplo siguiente:

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    3. Enumere los trabajos ENVIADOS RUN:AI.

      runai list jobs

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    4. Compruebe los registros de trabajos enviados.

      runai logs download-tusimple-data -t 10

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    5. Enumere la pvc creado. Utilice esto pvc comando para la formación en el siguiente paso.

      kubectl get pvc | grep download-tusimple-data

      El resultado debería ser como el ejemplo siguiente:

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    1. Compruebe el trabajo EN RUN: AI UI (o. app.run.ai).

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

Realice la formación de detección de carriles distribuidos con Horovod

El entrenamiento de detección de carriles distribuidos con Horovod es un proceso opcional. Sin embargo, estos son los pasos implicados:

  1. Cree y empuje la imagen del docker o omita este paso si desea utilizar la imagen del docker existente (por ejemplo, muneer7589/dist-lane-detection:3.1):

    1. Cambie al directorio inicial.

      cd ~
    2. Vaya al directorio del proyecto lane-detection-SCNN-horovod.

      cd ./lane-detection-SCNN-horovod
    3. Modifique el build_image.sh script de shell y cambie el repositorio de docker a la suya (por ejemplo, reemplace muneer7589 con el nombre del repositorio del docker). También puede cambiar el nombre y LA ETIQUETA de la imagen del docker (dist-lane-detection y.. 3.1, for example).

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    4. Ejecute la secuencia de comandos para crear la imagen de docker y empújela al repositorio de docker.

      chmod +x build_image.sh
      ./build_image.sh
  2. Enviar LA CARRERA: AI job para llevar a cabo la formación distribuida (MPI):

    1. Uso de envío DE LA EJECUCIÓN: La inteligencia artificial para la creación automática de la RVP en el paso anterior (para la descarga de datos) solo le permite tener acceso a RWO, que no permite que varios POD o nodos accedan al mismo RVP para el entrenamiento distribuido. Actualice el modo de acceso a ReadWriteMany y utilice el parche Kubernetes para hacerlo.

    2. En primer lugar, ejecute el siguiente comando para obtener el nombre del volumen de la RVP:

      kubectl get pvc | grep download-tusimple-data

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    3. Aplicar patches al modo de acceso de volumen y actualización a ReadWriteMany (reemplace el nombre del volumen por el suyo en el siguiente comando):

      kubectl patch pv pvc-bb03b74d-2c17-40c4-a445-79f3de8d16d5 -p '{"spec":{"accessModes":["ReadWriteMany"]}}'
    4. Envíe el TRABAJO RUN: AI MPI para la ejecución del trabajo de formación distribuida utilizando la información de la tabla siguiente:

      runai submit-mpi
      --name dist-lane-detection-training
      --large-shm
      --processes=3
      --gpu 1
      --pvc pvc-download-tusimple-data-0:/mnt
      --image muneer7589/dist-lane-detection:3.1
      -e USE_WORKERS="true"
      -e NUM_WORKERS=4
      -e BATCH_SIZE=33
      -e USE_VAL="false"
      -e VAL_BATCH_SIZE=99
      -e ENABLE_SNAPSHOT="true"
      -e PVC_NAME="pvc-download-tusimple-data-0"
      Campo Valor o descripción

      nombre

      Nombre del trabajo de formación distribuido

      gran km

      Monte un dispositivo /dev/sm de gran tamaño. Es un sistema de archivos compartidos montado en la RAM y proporciona memoria compartida lo suficientemente grande para que varios trabajadores de CPU procesen y carguen lotes en la RAM de la CPU.

      procesos

      Número de procesos de formación distribuidos

      gpu

      Número de GPU/procesos que se van a asignar para la tarea en esta tarea, hay tres procesos de trabajo de GPU (--process=3), cada uno asignado con una única GPU (--gpu 1)

      rvp

      Utilice el volumen persistente existente (pvc-download-tusimple-data-0) creado por el trabajo anterior (download-tusimple-data) y se monta en la ruta /mnt

      imagen

      Imagen de Docker que se utilizará al crear el contenedor para este trabajo

      Defina las variables de entorno que se van a establecer en el contenedor

      USE_WORKERS

      Al establecer el argumento en true, se activa la carga de datos multiproceso

      NÚM_TRABAJADORES

      Número de procesos de trabajo del cargador de datos

      TAMAÑO_LOTE

      Tamaño de lote de entrenamiento

      VALOR_USO

      Establecer el argumento en true permite la validación

      VAL_BATCH_SIZE

      Tamaño del lote de validación

      ENABLE_SNAPSHOT

      Establecer el argumento en true permite tomar instantáneas de datos y modelos entrenados para el control de versiones EN ML

      NOMBRE_PVC

      Nombre de la rvp de la que se va a realizar una instantánea. En la presentación de trabajos anterior, está tomando una instantánea de pvc-download-tusimple-data-0, que consta de conjuntos de datos y modelos entrenados

      El resultado debería ser como el ejemplo siguiente:

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    5. Enumera el trabajo enviado.

      runai list jobs

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    6. Registros de trabajos enviados:

      runai logs dist-lane-detection-training

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    7. Compruebe la tarea de entrenamiento EN EJECUCIÓN: Interfaz gráfica de usuario de IA (o app.runai.ai): RUN: Consola de IA, como se puede ver en las siguientes figuras. La primera figura detalla tres GPU asignadas para el trabajo de entrenamiento distribuido, repartidos en tres nodos en AKS, y la segunda EJECUCIÓN: Trabajos de IA:

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    8. Una vez finalizada la formación, compruebe la copia de Snapshot de NetApp que se creó y vinculado con RUN: Trabajo de IA.

      runai logs dist-lane-detection-training --tail 1

      Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

    kubectl get volumesnapshots | grep download-tusimple-data-0

Restaure datos de la copia Snapshot de NetApp

Para restaurar datos de la copia Snapshot de NetApp, complete los siguientes pasos:

  1. Cambie al directorio inicial.

    cd ~
  2. Vaya al directorio del proyecto lane-detection-SCNN-horovod.

    cd ./lane-detection-SCNN-horovod
  3. Modificar restore-snaphot-pvc.yaml y actualícelo dataSource name Campo de la copia Snapshot desde la que desea restaurar datos. También puede cambiar el nombre del PVC al que se restaurarán los datos, en este ejemplo su restored-tusimple.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  4. Cree una nueva RVP mediante restore-snapshot-pvc.yaml.

    kubectl create -f restore-snapshot-pvc.yaml

    El resultado debería ser como el ejemplo siguiente:

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  5. Si desea utilizar los datos recién restaurados para el entrenamiento, el envío de trabajos sigue siendo el mismo que antes; sólo sustituya el PVC_NAME con el restaurado PVC_NAME al enviar el trabajo de formación, como se muestra en los siguientes comandos:

    runai submit-mpi
    --name dist-lane-detection-training
    --large-shm
    --processes=3
    --gpu 1
    --pvc restored-tusimple:/mnt
    --image muneer7589/dist-lane-detection:3.1
    -e USE_WORKERS="true"
    -e NUM_WORKERS=4
    -e BATCH_SIZE=33
    -e USE_VAL="false"
    -e VAL_BATCH_SIZE=99
    -e ENABLE_SNAPSHOT="true"
    -e PVC_NAME="restored-tusimple"

Evaluación del rendimiento

Para mostrar la escalabilidad lineal de la solución, se han realizado pruebas de rendimiento para dos supuestos: Una GPU y tres GPU. La asignación de GPU, la utilización de la GPU y la memoria, se han capturado diferentes métricas de uno y tres nodos durante el entrenamiento en el conjunto de datos de detección de carriles TuSimple. Los datos se incrementan cinco veces sólo por analizar la utilización de los recursos durante los procesos de entrenamiento.

La solución permite a los clientes comenzar con un conjunto de datos pequeño y unas pocas GPU. Cuando aumentan la cantidad de datos y la demanda de GPU, los clientes pueden escalar horizontalmente de forma dinámica los terabytes del nivel estándar y escalar rápidamente hasta el nivel Premium para obtener el cuádruple de rendimiento por terabyte sin necesidad de mover datos. Este proceso se explica más detalladamente en la sección, "Niveles de servicio de Azure NetApp Files".

El tiempo de procesamiento en una GPU era de 12 horas y 45 minutos. El tiempo de procesamiento en tres GPU en tres nodos era de aproximadamente 4 horas y 30 minutos.

Las cifras que se muestran a lo largo del resto de este documento muestran ejemplos de rendimiento y escalabilidad basados en las necesidades empresariales individuales.

La siguiente figura muestra la asignación de 1 GPU y la utilización de memoria.

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

La siguiente figura ilustra el uso de GPU de un solo nodo.

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

La siguiente figura ilustra el tamaño de la memoria de un solo nodo (16 GB).

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

La siguiente figura muestra el número de GPU de nodo único (1).

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

La siguiente figura muestra la asignación de GPU de un solo nodo (%).

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

La siguiente figura muestra tres GPU en tres nodos: Asignación de GPU y memoria.

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

La siguiente figura muestra tres GPU en la utilización de tres nodos (%).

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

La siguiente figura muestra tres GPU en una utilización de la memoria de tres nodos (%).

Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

Niveles de servicio de Azure NetApp Files

Es posible cambiar el nivel de servicio de un volumen existente si se mueve el volumen a otro pool de capacidad que utiliza "nivel de servicio" se desea para el volumen. Este cambio de nivel de servicio existente del volumen no requiere la migración de los datos. Además, no afecta el acceso al volumen.

Cambie dinámicamente el nivel de servicio de un volumen

Para cambiar el nivel de servicio de un volumen, siga estos pasos:

  1. En la página Volumes, haga clic con el botón derecho en el volumen cuyo nivel de servicio desea cambiar. Seleccione Cambiar pool.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

  2. En la ventana Cambiar pool, seleccione el pool de capacidad al que desea mover el volumen. A continuación, haga clic en Aceptar.

    Figura que muestra el cuadro de diálogo de entrada/salida o que representa el contenido escrito

Automatizar el cambio de nivel de servicio

El cambio de nivel de servicio dinámico se encuentra actualmente en la vista previa pública, pero no está habilitado de forma predeterminada. Para activar esta función en la suscripción a Azure, siga estos pasos proporcionados en el documento “ "Cambie dinámicamente el nivel de servicio de un volumen".”

  • También puede utilizar los siguientes comandos para Azure: CLI. Para obtener más información sobre cómo cambiar el tamaño del pool de Azure NetApp Files, visite "volumen de archivos de az netapparchivo: Gestione los recursos de volúmenes del Azure NetApp Files (ANF)".

    az netappfiles volume pool-change -g mygroup
    --account-name myaccname
    -pool-name mypoolname
    --name myvolname
    --new-pool-resource-id mynewresourceid
  • La set- aznetappfilesvolumepool El cmdlet que se muestra aquí puede cambiar el pool de un volumen Azure NetApp Files. Para obtener más información sobre el cambio del tamaño del pool de volúmenes y Azure PowerShell, visite "Cambiar el pool de un volumen Azure NetApp Files".

    Set-AzNetAppFilesVolumePool
    -ResourceGroupName "MyRG"
    -AccountName "MyAnfAccount"
    -PoolName "MyAnfPool"
    -Name "MyAnfVolume"
    -NewPoolResourceId 7d6e4069-6c78-6c61-7bf6-c60968e45fbf