Programa
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:
- 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.
- 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 - 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.
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:
- Un conjunto de datos disponible en el HuggingFace Hub.
- Un conjunto de datos que se almacena localmente en tu dispositivo o máquina.
- 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
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: