Saltar al contenido principal

Tutorial DBRX de Databricks: Guía paso a paso

Descubre cómo Databricks DBRX, un LLM de código abierto, puede gestionar tareas complejas y generar resultados inteligentes.
Actualizado 30 jul 2024  · 10 min de lectura

Databricks ha presentado recientemente DBRX, su gran modelo de lenguaje (LLM) abierto de propósito general, construido sobre una arquitectura de mezcla de expertos (MoE) con un enfoque de grano fino. En lugar de utilizar una única red neuronal para todas las tareas, el sistema consta de múltiples redes "expertas" especializadas, cada una optimizada para distintos tipos de tareas o datos.

Este modelo ha funcionado mejor que los LLM tradicionales, como GPT-3.5 y Llama 2, porque es más rápido y rentable. Según las pruebas, el DBRX obtiene una puntuación del 73,7%, superior a la del LLaMa2 (69,8%) en las tareas de comprensión lingüística.

En este artículo hablaremos con más detalle de sus posibilidades y de cómo empezar a utilizar Databricsk DBRX.

¿Qué es Databricks DBRX?

El DBRX utiliza una arquitectura de sólo descodificador basada en transformadores, entrenada mediante la predicción del siguiente token. Emplea una arquitectura de mezcla de expertos (MDE) de grano fino. Estos "expertos" se refieren a agentes especializados basados en LLM, mejorados con conocimientos específicos del dominio y habilidades de razonamiento.

DBRX tiene un gran número de expertos más pequeños (16 expertos en total) y elige un subconjunto de ellos (4 expertos) para cualquier entrada dada.

En pocas palabras, este enfoque de grano fino con 65 veces más combinaciones posibles de expertos mejora la calidad del modelo en comparación con otros modelos abiertos de ME como Mixtral y Grok-1, que tienen menos expertos y eligen menos expertos por entrada.

Aquí tienes algunos detalles clave sobre el DBRX:

  1. Tamaño del parámetro: El DBRX tiene un total de 132.000 millones de parámetros, de los cuales 36.000 millones están activos en cualquier entrada.
  2. Datos de preentrenamiento: Se preentrenó con 12 billones de tokens de datos cuidadosamente curados y una longitud de contexto de 32.000 tokens, lo que es al menos 2 veces mejor token por token que los datos utilizados para preentrenar la familia de modelos MPT.

¿Cómo se formó el DBRX?

El modelo se preentrenó en un conjunto de datos impresionantemente grande, que se calcula que es el doble de eficaz que los conjuntos de datos anteriores utilizados por Databricks. Para entrenar el modelo se utilizó un conjunto de herramientas Databricks, como Apache Spark y los cuadernos Databricks para el procesamiento de datos y Unity Catalog para el gobierno de datos.

Durante su formación, se empleó el aprendizaje curricular y se modificó la mezcla de datos para mejorar sustancialmente la calidad del modelo. Tales alteraciones estratégicas en la mezcla de datos de entrenamiento optimizaron la capacidad del modelo para manejar diversas entradas con eficacia.

Algunas de las tecnologías clave utilizadas para la formación previa de DBRX son:

  • Codificaciones de Posición Rotativa (RoPE): Un método en transformadores que codifica las posiciones de las fichas mediante transformaciones rotacionales en el espacio de alta dimensión, mejorando la comprensión de las secuencias.
  • Unidades Lineales Cerradas (UCL): Una capa de red neuronal que utiliza un mecanismo de compuerta para controlar el flujo de información, lo que ayuda a captar patrones complejos.
  • Atención a las Consultas Agrupadas (GQA): Un mecanismo de atención que computa pesos dentro de grupos de consultas para reducir el coste computacional y mejorar el enfoque.
  • tokenizador GPT-4 del repositorio tiktoken: Una implementación específica del tokenizador para GPT-4, que convierte el texto en tokens listos para el modelo, optimizados para las necesidades de procesamiento de GPT-4.

¿Cómo se compara el DBRX con modelos similares?

Databricks afirma que su modelo DBRX es superior a varios de los principales modelos de código abierto en términos de eficacia y rendimiento de las tareas.

Aquí tienes una comparación detallada de cómo se compara el DBRX con sus competidores:

1) DBRX vs. LLaMA2-70B

  • Conocimientos generales (MMLU): DBRX Instruct tiene una puntuación un 9,8% superior a LLaMA2-70B.
  • Razonamiento de sentido común (conjunto de datos HellaSwag): DBRX Instruct sigue en cabeza con una puntuación un 3,1% superior.
  • Databricks gauntlet (un modelo que evalúa las capacidades de los LLM preentrenados basándose en diferentes tareas): DBRX Instruct tiene una fuerte ventaja, un 14% más que LLaMA2-70B.
  • Programación y razonamiento matemático: DBRX Instruct destaca con un 37,9% en programación y un 40,2% en razonamiento matemático.

2) DBRX Instruct vs. Instrucción Mixtral

  • Conocimientos generales: DBRX Instruct supera a Mixtral Instruct con una puntuación un 2,3% superior.
  • Razonamiento de sentido común (conjunto de datos HellaSwag): DBRX Instruct se comporta mejor, con una puntuación un 1,4% superior.
  • Guantelete Databricks: DBRX Instruct supera a Mixtral Instruct por un notable margen del 6,1%.
  • Programación y razonamiento matemático: DBRX Instruct superó a Mixtral Instruct en un 15,3% en programación y en un 5,8% en razonamiento matemático.

3) DBRX vs Grok-1

  • Conocimientos generales: El rendimiento es en cierto modo similar, y DBRX Instruct tiene una ligera ventaja del 0,7% sobre Grok-1.
  • Programación y razonamiento matemático: DBRX Instruct superó a Grok-1 con un 6,9% de ventaja en programación y un 4% en razonamiento matemático.

4) DBRX vs Base Mixtral

  • Conocimientos generales: DBRX Instruct va ligeramente por delante, con una puntuación un 1,8% superior a la de Mixtral Base.
  • Razonamiento de sentido común (conjunto de datos HellaSwag): La puntuación de DBRX es superior, con una diferencia del 2,5%.
  • Guantelete Databricks: DBRX lidera con un 10% sobre Base Mixtral.
  • Programación y razonamiento matemático: DBRX Instruct muestra una notable ventaja de rendimiento, con una puntuación un 29,9% superior a la de Mixtral Base.

Tabla comparativa

A continuación, hemos recopilado las comparaciones en una tabla y mostrado un gráfico basado en algunos de los resultados:

Model Comparison

Conocimientos generales

Razonamiento de sentido común

Guantelete Databricks

Programación Razonamiento

Razonamiento matemático

DBRX vs LLaMA2-70B

+9.8%

+3.1%

+14%

+37.9%

+40.2%

DBRX vs Mixtral Instruct

+2.3%

+1.4%

+6.1%

+15.3%

+5.8%

DBRX vs Grok-1

+0.7%

No disponible

No disponible

+6.9%

+4%

DBRX vs Base Mixtral

+1.8%

+2.5%

+10%

+29.9%

No disponible

Comparación de la calidad de DBRX con otros LLM de código abierto

Comparación de la calidad de DBRX con otros LLM de código abierto - fuente

Cómo utilizar el DBRX: Guía paso a paso

Antes de acceder al DBRX, asegúrate de que tu sistema tiene al menos 320 GB de memoria. A continuación, sigue estos pasos para acceder al DBRX:

Accessing DBRX

  • Instala la biblioteca transformers
pip install "transformers>=4.40.0"
  • A continuación, solicita un token de acceso con permisos de lectura a Cara Abrazada (Es necesario para descargar el modelo).
  • Una vez que tengas acceso, importa y carga el modelo utilizando el siguiente código.
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

tokenizer = AutoTokenizer.from_pretrained("databricks/dbrx-base", token="hf_YOUR_TOKEN")
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-base", device_map="auto", torch_dtype=torch.bfloat16, token="hf_YOUR_TOKEN")

# Directing tensors to "cuda" (GPU) for faster computation as GPUs are better at handling parallel tasks.
input_text = "Databricks was founded in "
input_ids = tokenizer(input_text, return_tensors="pt").to("cuda")

# DBRX accepts a context length of up to 32768 tokens. Here`max_new_tokens` specifies the maximum number of tokens to generate.
outputs = model.generate(**input_ids, max_new_tokens=100)
print(tokenizer.decode(outputs[0]))

¿Quieres aprender a utilizar Transformers y Cara de Abrazo? Lee nuestro tutorial sobre el uso de Transformadores y Cara de Abrazo.

Tareas básicas con DBRX

DRBX puede ayudarte con tareas básicas de creación de contenidos y respuesta rápida como cualquier LLM. Esto es lo que puedes hacer con el DBRX:

  • Completar texto: El DBRX puede generar respuestas basadas en texto a partir de tus indicaciones.
  • Comprensión lingüística: Puede realizar tareas como analizar entradas de lenguaje natural, resumir documentos largos o traducir texto entre lenguajes de codificación o estilos de escritura.
  • Optimización de consultas: DBRX también puede optimizar las consultas a la base de datos para minimizar el tiempo de ejecución y ayudar a los ingenieros de datos a centrarse en otras tareas críticas sin comprometer el rendimiento.

Tareas de codificación con DBRX

El DBRX también puede realizar tareas avanzadas relacionadas con la codificación para ayudar a los profesionales o codificadores de datos:

  • Código y explicación: Puede generar código para diversas tareas de programación y explicar las funciones existentes o sugerir algoritmos para problemas específicos para comprender y optimizar el código.

El DBRX responde a comandos sencillos

DBRX respondiendo a comandos simples - fuente

  • Depurar con DBRX: Proporciona correcciones de código sugeridas para mejorar la productividad del desarrollador y acelerar su proceso de depuración.
  • Identificación de vulnerabilidades: También puede identificar problemas en el código y proponer soluciones para mitigarlos.

Cómo afinar el DBRX

Puedes ajustar DBRX con la fundición LLM de código abierto de Github. Sin embargo, el ajuste fino requiere que los ejemplos de entrenamiento se formateen como diccionarios:

formatted_example = {'prompt': <prompt_text>, 'response': <response_text>}

Prompt: Es la pregunta o instrucción inicial que das al modelo.

Respuesta: Esta es la respuesta que el modelo está entrenado para generar.

Puedes utilizar tres conjuntos de datos diferentes para afinar cualquier LLM:

  1. Un conjunto de datos disponible en el HuggingFace Hub.
  2. Un conjunto de datos que se almacena localmente en tu dispositivo o máquina.
  3. Un conjunto de datos en formato StreamingDataset .mds.

1) Utilizar el Hugging Face Hub

Si quieres afinar utilizando un conjunto de datos del Hub HuggingFace, y la función

conjunto de datos tiene una función de preprocesamiento predefinida o ya sigue la

formato "pregunta"/"respuesta", puedes simplemente dirigir el cargador de datos a ese conjunto de datos.

train_loader:
    name: finetuning
    dataset:
        hf_name: tatsu-lab/alpaca
        split: train
        ...

Si no se define ninguna función de preprocesamiento, utiliza preprocessing_fn para especificar una función de preprocesamiento personalizada para el cargador de datos.

train_loader:
    name: finetuning
    dataset:
        hf_name: mosaicml/doge-facts
        preprocessing_fn: my_data.formatting:dogefacts_prep_fn
        split: train
        ...

2) Utilizar un conjunto de datos local

Si ya tienes un conjunto de datos de ajuste fino en tu dispositivo, define archivos JSONL locales en

la configuración YAML yamls/finetune/1b_local_data_sft.yaml.

train_loader:
    name: finetuning
    dataset:
        hf_name: json # assuming data files are json formatted
        hf_kwargs:
            data_dir: /path/to/data/dir/
        preprocessing_fn: my.import.path:my_preprocessing_fn
        split: train
        ...

Omite preprocessing_fn si tus datos locales ya están en formato "pregunta"/"respuesta".

3) Utilizar StreamingDataset

Convierte tu conjunto de datos HuggingFace al formato MDS utilizando la función

convert_finetuning_dataset.py guión.

Después de convertir tu conjunto de datos HuggingFace a un formato de flujo, sólo tienes que ajustar tu configuración YAML de la siguiente manera.

train_loader:
    name: finetuning
    dataset:
        remote: s3://my-bucket/my-copy-doge-facts
        local: /tmp/mds-cache/
        split: train
        ...

Si quieres ver el ajuste completo de los parámetros, consulta la configuración YAML en

dbrx-full-ft.yaml

Conclusión

Databricks DBRX utiliza múltiples redes especializadas para mejorar la velocidad y la rentabilidad del modelo. Este enfoque de grano fino le permite superar a otros LLM en el manejo de tareas complejas.

¿Quieres saber más sobre los grandes modelos lingüísticos y cómo afinarlos? Consulta estos recursos:

Temas

¡Continúa hoy tu viaje por la IA!

curso

Generative AI Concepts

2 hr
47.3K
Discover how to begin responsibly leveraging generative AI. Learn how generative AI models are developed and how they will impact society moving forward.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

Los mejores 8 LLM de código abierto para 2024 y sus usos

Descubre algunos de los LLM de código abierto más potentes y por qué serán cruciales para el futuro de la IA generativa
Javier Canales Luna's photo

Javier Canales Luna

13 min

blog

Introducción a PandasAI

Mejora tu experiencia pandas con el análisis de datos potenciado por IA.
Abid Ali Awan's photo

Abid Ali Awan

7 min

blog

Certificaciones Databricks en 2024: La guía completa

Descubre cómo obtener certificaciones Databricks, explora las ventajas profesionales y aprende a elegir la certificación adecuada para tus objetivos en 2024.
Gus Frazer's photo

Gus Frazer

24 min

tutorial

Tutorial de Chroma DB: guía paso a paso

Con Chroma DB, puedes gestionar fácilmente documentos de texto, convertir texto en incrustaciones y hacer búsquedas por similitud.
Abid Ali Awan's photo

Abid Ali Awan

10 min

tutorial

Tutorial Mistral 7B: Guía paso a paso para utilizar y ajustar Mistral 7B

El tutorial cubre el acceso, la cuantización, el ajuste fino, la fusión y el almacenamiento de este potente modelo lingüístico de código abierto con 7300 millones de parámetros.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

Guía introductoria para el ajuste preciso de los LLM

El ajuste preciso de los grandes modelos lingüísticos (LLM) ha revolucionado el procesamiento del lenguaje natural (PLN) y ofrece capacidades sin precedentes en tareas como la traducción lingüística, el análisis del sentimiento y la generación de textos. Este enfoque transformador aprovecha modelos preentrenados como el GPT-2 y mejora su rendimiento en dominios específicos mediante el proceso de ajuste preciso.
Josep Ferrer's photo

Josep Ferrer

12 min

Ver másVer más