Dolly de Databricks es un modelo de lenguaje grande que sigue instrucciones y se entrena en la plataforma de aprendizaje automático de Databricks y que tiene licencia para uso comercial. Basado en pythia-12b
, Dolly está entrenada en ~15k registros de ajuste fino de instrucciones/respuestas databricks-dolly-15k
generados por empleados de Databricks en dominios de capacidad del documento InstructGPT, incluida la lluvia de ideas, la clasificación, el control de calidad cerrado, la generación, la extracción de información y el control de calidad abierto. y resumen. dolly-v2-12b
no es un modelo de última generación, pero muestra una instrucción de calidad sorprendentemente alta siguiendo un comportamiento que no es característico del modelo básico en el que se basa.
Databricks se compromete a garantizar que todas las organizaciones e individuos se beneficien del poder transformador de la inteligencia artificial. La familia de modelos Dolly representa nuestros primeros pasos en este viaje y estamos entusiasmados de compartir esta tecnología con el mundo.
El modelo está disponible en Hugging Face como databricks/dolly-v2-12b.
dolly-v2-12b
es un modelo de lenguaje causal de 12 mil millones de parámetros creado por Databricks que se deriva de Pythia-12b de EleutherAI y se afina en un corpus de instrucciones de registro de ~15 000 generado por empleados de Databricks y publicado bajo una licencia permisiva (CC-BY- SA)
dolly-v2-12b
no es un modelo de lenguaje generativo de última generación y, aunque se están realizando evaluaciones comparativas cuantitativas, no está diseñado para funcionar de manera competitiva con arquitecturas de modelos más modernas o modelos sujetos a corpus de preentrenamiento más grandes.
La familia de modelos Dolly está en desarrollo activo, por lo que es poco probable que cualquier lista de deficiencias sea exhaustiva, pero aquí incluimos limitaciones y fallos conocidos como un medio para documentar y compartir nuestros hallazgos preliminares con la comunidad. En particular, dolly-v2-12b
tiene dificultades con: indicaciones sintácticamente complejas, problemas de programación, operaciones matemáticas, errores fácticos, fechas y horas, respuestas a preguntas abiertas, alucinaciones, enumeración de listas de longitud específica, imitación estilística y sentido del humor. , etc. Además, encontramos que dolly-v2-12b
no tiene algunas capacidades, como la escritura de cartas bien formateadas, presentes en el modelo original.
Como todos los modelos de lenguaje, dolly-v2-12b
refleja el contenido y las limitaciones de sus corpus de entrenamiento.
The Pile : el corpus de preentrenamiento de GPT-J contiene contenido recopilado principalmente de la Internet pública y, como la mayoría de los conjuntos de datos a escala web, contiene contenido que muchos usuarios encontrarían objetable. Como tal, es probable que el modelo refleje estas deficiencias, potencialmente de manera abierta en el caso de que se le pida explícitamente que produzca contenido objetable, y a veces de manera sutil, como en el caso de asociaciones implícitas sesgadas o dañinas.
databricks-dolly-15k
: los datos de capacitación en los que se ajusta la instrucción dolly-v2-12b
representan instrucciones en lenguaje natural generadas por empleados de Databricks durante un período que abarca marzo y abril de 2023 e incluyen pasajes de Wikipedia como pasajes de referencia para categorías de instrucción como control de calidad cerrado y resumen. Hasta donde sabemos, no contiene obscenidad, propiedad intelectual o información de identificación personal sobre figuras no públicas, pero puede contener errores tipográficos y factuales. El conjunto de datos también puede reflejar sesgos encontrados en Wikipedia. Finalmente, el conjunto de datos probablemente refleje los intereses y las elecciones semánticas de los empleados de Databricks, un grupo demográfico que no es representativo de la población global en general.
Databricks está comprometido con los esfuerzos continuos de investigación y desarrollo para desarrollar tecnologías de IA útiles, honestas e inofensivas que maximicen el potencial de todos los individuos y organizaciones.
Si simplemente desea probar el modelo sin entrenamiento, el modelo está disponible en Hugging Face como databricks/dolly-v2-12b.
Para utilizar el modelo con la biblioteca transformers
en una máquina con GPU A100:
from transformers import pipeline
import torch
instruct_pipeline = pipeline(model="databricks/dolly-v2-12b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")
Luego puede utilizar la canalización para responder instrucciones:
instruct_pipeline("Explain to me the difference between nuclear fission and fusion.")
Los tipos de instancias A100 no están disponibles en todas las regiones de la nube o pueden ser difíciles de aprovisionar. La inferencia es posible en otros tipos de instancias de GPU.
Los modelos de parámetros 6.9B y 2.8B deberían funcionar tal como están.
Para generar usando el modelo de parámetros 12B en A10 (por ejemplo: g5.4xlarge
, 1 x A10 24 GB), es necesario cargar y ejecutar la generación usando pesos de 8 bits, lo que afecta ligeramente los resultados:
bitsandbytes
model_kwargs={'load_in_8bit': True}
al comando pipeline()
que se muestra arriba Cuando utilice V100 (por ejemplo: p3.2xlarge
, 1 x V100 16 GB, NC6s_v3
), en todos los casos, configure torch_dtype=torch.float16
en pipeline()
.
De lo contrario, siga los pasos anteriores. Es posible que el modelo de parámetro 12B no funcione bien en 8 bits en V100.
dolly
a Databricks (en Repositorios, haga clic en Agregar repositorio, ingrese https://github.com/databrickslabs/dolly.git
y luego haga clic en Crear repositorio).13.x ML (includes Apache Spark 3.4.0, GPU, Scala 2.12)
o posterior con un tipo de nodo que tenga 8 GPU A100 (por ejemplo, Standard_ND96asr_v4
o p4d.24xlarge
). Tenga en cuenta que es posible que estos tipos de instancias no estén disponibles en todas las regiones o que sean difíciles de aprovisionar. En Databricks, tenga en cuenta que primero debe seleccionar el tiempo de ejecución de GPU y anular la selección de "Usar Photon" para que aparezcan estos tipos de instancias (donde sean compatibles).train_dolly
en el repositorio (que es el archivo train_dolly.py
en el repositorio de Github dolly
), conéctelo a su clúster de GPU y ejecute todas las celdas. Cuando finalice el entrenamiento, el cuaderno guardará el modelo en /dbfs/dolly_training
.Los tipos de instancias A100 no están disponibles en todas las regiones de la nube o pueden ser difíciles de aprovisionar. El entrenamiento es posible en otros tipos de instancias de GPU, para modelos Dolly de menor tamaño y con pequeñas modificaciones para reducir el uso de memoria. Estas modificaciones no son óptimas, pero son sencillas de realizar.
Seleccione su tipo de familia de GPU en el widget gpu_family
, ingrese la cantidad de GPU disponibles en el widget num_gpus
y luego ejecute el resto del código. Se configurarán varias opciones diferentes para que pueda entrenar el modelo para uno de los siguientes tipos de GPU:
Los detalles de las diferentes configuraciones se encuentran a continuación.
Las GPU A100 son las preferidas para entrenar todos los tamaños de modelos y son las únicas GPU que pueden entrenar el modelo de parámetros 12B en un período de tiempo razonable. Como tal, esta es la configuración predeterminada, tal como se establece en el archivo de configuración de velocidad profunda a100_config.json
.
No se recomienda entrenar el modelo de parámetros 12B en los A10.
Para entrenar el modelo de parámetros 6.9B en instancias A10 (por ejemplo: g5.24xlarge
, 4 x A10 24 GB; Standard_NV72ads_A10_v5
, 2 x A10), simplemente seleccione a10
en el widget gpu_family
e ingrese la cantidad de GPU disponibles en el widget num_gpus
, luego ejecute el resto del código. Esto utilizará el archivo de configuración de velocidad profunda a10_config.json
, que realiza los siguientes cambios:
per-device-train-batch-size
y per-device-eval-batch-size
se establecen en 3 en la invocación train_dolly.py
de deepspeed
"zero_optimization"
de la configuración de velocidad profunda, hemos agregado: "offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
Para ejecutar en instancias V100 con 32 GB de memoria GPU (por ejemplo: p3dn.24xlarge
o Standard_ND40rs_v2
), simplemente seleccione v100
en el widget gpu_family
e ingrese la cantidad de GPU disponibles en el widget num_gpus
, y luego ejecute el resto del código. Esto utilizará el archivo de configuración de velocidad profunda v100_config.json
, que realiza los siguientes cambios:
per-device-train-batch-size
y per-device-eval-batch-size
en 3Es posible que pueda aumentar ligeramente el tamaño del lote con instancias de 32 GB, en comparación con lo que funciona arriba para las instancias A10 de 24 GB.
pyenv local 3.8.13
python -m venv .venv
. .venv/bin/activate
pip install -r requirements_dev.txt
./run_pytest.sh
@online{DatabricksBlog2023DollyV2,
author = {Mike Conover and Matt Hayes and Ankit Mathur and Jianwei Xie and Jun Wan and Sam Shah and Ali Ghodsi and Patrick Wendell and Matei Zaharia and Reynold Xin},
title = {Free Dolly: Introducing the World's First Truly Open Instruction-Tuned LLM},
year = {2023},
url = {https://www.databricks.com/blog/2023/04/12/dolly-first-open-commercially-viable-instruction-tuned-llm},
urldate = {2023-06-30}
}