Exploración de modelos de lenguaje grande con Azure Databricks

Los modelos de lenguaje grande (LLM) pueden ser un recurso eficaz para las tareas de procesamiento del lenguaje natural (NLP) cuando se integran con Azure Databricks y Hugging Face Transformers. Azure Databricks proporciona una plataforma sin fisuras para acceder, ajustar e implementar LLM, incluidos los modelos entrenados previamente de la amplia biblioteca de Hugging Face. En el caso de inferencia de modelos, la clase de canalizaciones de Hugging Face simplifica el uso de modelos entrenados previamente, lo que admite una amplia gama de tareas de NLP directamente dentro del entorno de Databricks.

Este laboratorio se tarda aproximadamente 30 minutos en completarse.

Nota: la interfaz de usuario de Azure Databricks está sujeta a una mejora continua. Es posible que la interfaz de usuario haya cambiado desde que se escribieron las instrucciones de este ejercicio.

Antes de empezar

Necesitará una suscripción de Azure en la que tenga acceso de nivel administrativo.

Aprovisiona un área de trabajo de Azure Databricks.

Sugerencia: si ya tienes un área de trabajo de Azure Databricks, puedes omitir este procedimiento y usar el área de trabajo existente.

En este ejercicio, se incluye un script para aprovisionar una nueva área de trabajo de Azure Databricks. El script intenta crear un recurso de área de trabajo de Azure Databricks de nivel Premium en una región en la que la suscripción de Azure tiene cuota suficiente para los núcleos de proceso necesarios en este ejercicio, y da por hecho que la cuenta de usuario tiene permisos suficientes en la suscripción para crear un recurso de área de trabajo de Azure Databricks. Si se produjese un error en el script debido a cuota o permisos insuficientes, intenta crear un área de trabajo de Azure Databricks de forma interactiva en Azure Portal.

  1. En un explorador web, inicia sesión en Azure Portal en https://portal.azure.com.
  2. Usa el botón [>_] situado a la derecha de la barra de búsqueda en la parte superior de la página para crear una nueva instancia de Cloud Shell en Azure Portal, para lo que deberás seleccionar un entorno de PowerShell. Cloud Shell proporciona una interfaz de línea de comandos en un panel situado en la parte inferior de Azure Portal, como se muestra a continuación:

    Azure Portal con un panel de Cloud Shell

    Nota: si has creado anteriormente una instancia de Cloud Shell que usa un entorno de Bash, cámbiala a PowerShell.

  3. Ten en cuenta que puedes cambiar el tamaño de la instancia de Cloud Shell. Para ello, arrastra la barra de separación de la parte superior del panel o utiliza los iconos , y X de la parte superior derecha del panel para minimizar, maximizar y cerrar el panel. Para obtener más información sobre el uso de Azure Cloud Shell, consulta la documentación de Azure Cloud Shell.

  4. En el panel de PowerShell, introduce los siguientes comandos para clonar este repositorio:

     rm -r mslearn-databricks -f
     git clone https://github.com/MicrosoftLearning/mslearn-databricks
    
  5. Una vez clonado el repositorio, escribe el siguiente comando para ejecutar el script setup.ps1, que aprovisiona un área de trabajo de Azure Databricks en una región disponible:

     ./mslearn-databricks/setup.ps1
    
  6. Si se solicita, elige la suscripción que quieres usar (esto solo ocurrirá si tienes acceso a varias suscripciones de Azure).

  7. Espera a que se complete el script: normalmente puede tardar entre 5 y 10 minutos, pero en algunos casos puede tardar más. Mientras esperas, revisa el artículo Introducción a Delta Lake en la documentación de Azure Databricks.

Crear un clúster

Azure Databricks es una plataforma de procesamiento distribuido que usa clústeres* de Apache Spark para procesar datos en paralelo en varios nodos. Cada clúster consta de un nodo de controlador para coordinar el trabajo y nodos de trabajo para hacer tareas de procesamiento. En este ejercicio, crearás un clúster de *nodo único para minimizar los recursos de proceso usados en el entorno de laboratorio (en los que se pueden restringir los recursos). En un entorno de producción, normalmente crearías un clúster con varios nodos de trabajo.

Sugerencia: Si ya dispone de un clúster con una versión de runtime 13.3 LTS ML o superior en su área de trabajo de Azure Databricks, puede utilizarlo para completar este ejercicio y omitir este procedimiento.

  1. En Azure Portal, vaya al grupo de recursos msl-xxxxxxx que se creó con el script (o al grupo de recursos que contiene el área de trabajo de Azure Databricks existente)
  2. Selecciona el recurso Azure Databricks Service (llamado databricks-xxxxxxx si usaste el script de instalación para crearlo).
  3. En la página Información general del área de trabajo, usa el botón Inicio del área de trabajo para abrir el área de trabajo de Azure Databricks en una nueva pestaña del explorador; inicia sesión si se solicita.

    Sugerencia: al usar el portal del área de trabajo de Databricks, se pueden mostrar varias sugerencias y notificaciones. Descártalas y sigue las instrucciones proporcionadas para completar las tareas de este ejercicio.

  4. En la barra lateral de la izquierda, selecciona la tarea (+) Nuevo y luego selecciona Clúster.
  5. En la página Nuevo clúster, crea un clúster con la siguiente configuración:
    • Nombre del clúster: clúster del Nombre de usuario (el nombre del clúster predeterminado)
    • Directiva: Unrestricted (Sin restricciones)
    • Modo de clúster de un solo nodo
    • Modo de acceso: usuario único (con la cuenta de usuario seleccionada)
    • Versión de runtime de Databricks: Seleccione la edición de ML de la última versión no beta más reciente del runtime (No una versión de runtime estándar) que:
      • No usa una GPU
      • Incluye Scala > 2.11
      • Incluye Spark > 3.4
    • Utilizar la Aceleración de fotones: No seleccionada
    • Tipo de nodo: Standard_D4ds_v5
    • Finaliza después de 20 minutos de inactividad
  6. Espera a que se cree el clúster. Esto puede tardar un par de minutos.

Nota: si el clúster no se inicia, es posible que la suscripción no tenga cuota suficiente en la región donde se aprovisiona el área de trabajo de Azure Databricks. Para obtener más información, consulta El límite de núcleos de la CPU impide la creación de clústeres. Si esto sucede, puedes intentar eliminar el área de trabajo y crear una nueva en otra región. Puedes especificar una región como parámetro para el script de configuración de la siguiente manera: ./mslearn-databricks/setup.ps1 eastus

Instalación de bibliotecas necesarias

  1. En la página del clúster, selecciona la pestaña Bibliotecas.

  2. Selecciona Instalar nueva.

  3. Selecciona PyPi como origen de la biblioteca y escribe transformers==4.44.0 en el campo Paquete.

  4. Seleccione Instalar.

Carga de modelos previamente entrenados

  1. En el área de trabajo de Databricks, ve a la sección Área de trabajo.

  2. Selecciona Crear y, después, selecciona Cuaderno.

  3. Asigna un nombre al cuaderno y selecciona Python como lenguaje.

  4. En la primera celda de código, escribe y ejecuta el código siguiente:

     from transformers import pipeline
    
     # Load the summarization model
     summarizer = pipeline("summarization")
    
     # Load the sentiment analysis model
     sentiment_analyzer = pipeline("sentiment-analysis")
    
     # Load the translation model
     translator = pipeline("translation_en_to_fr")
    
     # Load a general purpose model for zero-shot classification and few-shot learning
     classifier = pipeline("zero-shot-classification")
    

    Esto cargará todos los modelos necesarios para las tareas de NLP presentadas en este ejercicio.

Resumir texto

Una canalización de resumen genera resúmenes concisos de textos más largos. Al especificar un intervalo de longitud (min_length, max_length) y si usará el muestreo o no (do_sample), podemos determinar la precisión o creatividad que tendrá el resumen generado.

  1. En una celda de código nueva, escribe el código siguiente:

     text = "Large language models (LLMs) are advanced AI systems capable of understanding and generating human-like text by learning from vast datasets. These models, which include OpenAI's GPT series and Google's BERT, have transformed the field of natural language processing (NLP). They are designed to perform a wide range of tasks, from translation and summarization to question-answering and creative writing. The development of LLMs has been a significant milestone in AI, enabling machines to handle complex language tasks with increasing sophistication. As they evolve, LLMs continue to push the boundaries of what's possible in machine learning and artificial intelligence, offering exciting prospects for the future of technology."
     summary = summarizer(text, max_length=75, min_length=25, do_sample=False)
     print(summary)
    
  2. Ejecuta la celda para ver el texto resumido.

Análisis de opinión

La canalización de análisis de sentimiento determina la opinión de un texto determinado. Clasifica el texto en categorías como positivas, negativas o neutras.

  1. En una celda de código nueva, escribe el código siguiente:

     text = "I love using Azure Databricks for NLP tasks!"
     sentiment = sentiment_analyzer(text)
     print(sentiment)
    
  2. Ejecuta la celda para ver el resultado del análisis de sentimiento.

Traducción de texto

La canalización de traducción convierte texto de un idioma a otro. En este ejercicio, la tarea utilizada era translation_en_to_fr, lo que significa que traducirá cualquier texto dado del inglés al francés.

  1. En una celda de código nueva, escribe el código siguiente:

     text = "Hello, how are you?"
     translation = translator(text)
     print(translation)
    
  2. Ejecuta la celda para ver el texto traducido en francés.

Clasificación de texto

La canalización de clasificación de captura cero permite a un modelo clasificar texto en categorías que no ha visto durante el entrenamiento. Por lo tanto, requiere etiquetas predefinidas como parámetro candidate_labels.

  1. En una celda de código nueva, escribe el código siguiente:

     text = "Azure Databricks is a powerful platform for big data analytics."
     labels = ["technology", "health", "finance"]
     classification = classifier(text, candidate_labels=labels)
     print(classification)
    
  2. Ejecuta la celda para ver los resultados de clasificación de captura cero.

Limpieza

En el portal de Azure Databricks, en la página Proceso, selecciona el clúster y ■ Finalizar para apagarlo.

Si has terminado de explorar Azure Databricks, puedes eliminar los recursos que has creado para evitar costes innecesarios de Azure y liberar capacidad en tu suscripción.