Dolly do Databricks é um modelo de linguagem grande que segue instruções, treinado na plataforma de aprendizado de máquina Databricks e licenciado para uso comercial. Com base em pythia-12b
, Dolly é treinada em aproximadamente 15k registros de ajuste fino de instrução/resposta databricks-dolly-15k
gerados por funcionários da Databricks em domínios de capacidade do artigo InstructGPT, incluindo brainstorming, classificação, controle de qualidade fechado, geração, extração de informações, controle de qualidade aberto e resumo. dolly-v2-12b
não é um modelo de última geração, mas exibe instruções de alta qualidade surpreendentemente seguindo um comportamento não característico do modelo básico no qual se baseia.
A Databricks está empenhada em garantir que todas as organizações e indivíduos beneficiem do poder transformador da inteligência artificial. A família de modelos Dolly representa nossos primeiros passos nesta jornada e estamos entusiasmados em compartilhar esta tecnologia com o mundo.
O modelo está disponível no Hugging Face como databricks/dolly-v2-12b.
dolly-v2-12b
é um modelo de linguagem causal de 12 bilhões de parâmetros criado pela Databricks que é derivado do Pythia-12b da EleutherAI e ajustado em um corpus de instrução de registro de aproximadamente 15K gerado por funcionários da Databricks e lançado sob uma licença permissiva (CC-BY- SA)
dolly-v2-12b
não é um modelo de linguagem generativa de última geração e, embora o benchmarking quantitativo esteja em andamento, não foi projetado para funcionar de forma competitiva com arquiteturas de modelos mais modernas ou modelos sujeitos a corpus de pré-treinamento maiores.
A família de modelos Dolly está em desenvolvimento ativo e, portanto, é improvável que qualquer lista de deficiências seja exaustiva, mas incluímos aqui limitações e falhas de ignição conhecidas como um meio de documentar e compartilhar nossas descobertas preliminares com a comunidade. Em particular, dolly-v2-12b
luta com: prompts sintaticamente complexos, problemas de programação, operações matemáticas, erros factuais, datas e horas, resposta a perguntas abertas, alucinação, enumeração de listas de comprimento específico, mimetismo estilístico, senso de humor Além disso, descobrimos que dolly-v2-12b
não possui alguns recursos, como escrever cartas bem formatadas, presentes no modelo original.
Como todos os modelos de linguagem, dolly-v2-12b
reflete o conteúdo e as limitações de seus corpus de treinamento.
A pilha : o corpus de pré-treinamento do GPT-J contém conteúdo coletado principalmente da Internet pública e, como a maioria dos conjuntos de dados em escala da web, contém conteúdo que muitos usuários considerariam questionável. Como tal, é provável que o modelo reflita estas deficiências, potencialmente abertamente, no caso de ser explicitamente solicitado a produzir conteúdo questionável, e por vezes subtilmente, como no caso de associações implícitas tendenciosas ou prejudiciais.
databricks-dolly-15k
: Os dados de treinamento nos quais dolly-v2-12b
é ajustado para instrução representam instruções em linguagem natural geradas por funcionários da Databricks durante um período que vai de março a abril de 2023 e incluem passagens da Wikipedia como passagens de referência para categorias de instrução como controle de qualidade fechado e resumo. Até onde sabemos, não contém obscenidade, propriedade intelectual ou informações de identificação pessoal sobre figuras não públicas, mas pode conter erros de digitação e erros factuais. O conjunto de dados também pode refletir preconceitos encontrados na Wikipedia. Finalmente, o conjunto de dados provavelmente reflecte os interesses e escolhas semânticas dos funcionários da Databricks, um grupo demográfico que não é representativo da população global em geral.
A Databricks está comprometida com esforços contínuos de pesquisa e desenvolvimento para desenvolver tecnologias de IA úteis, honestas e inofensivas que maximizem o potencial de todos os indivíduos e organizações.
Se você quiser simplesmente testar o modelo sem treinamento, o modelo está disponível no Hugging Face como databricks/dolly-v2-12b.
Para usar o modelo com a biblioteca transformers
em uma máquina com GPUs 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")
Você pode então usar o pipeline para responder às instruções:
instruct_pipeline("Explain to me the difference between nuclear fission and fusion.")
Os tipos de instância A100 não estão disponíveis em todas as regiões de nuvem ou podem ser difíceis de provisionar. A inferência é possível em outros tipos de instância de GPU.
Os modelos de parâmetros 6,9B e 2,8B devem funcionar como estão.
Para gerar usando o modelo de parâmetros 12B no A10s (ex: g5.4xlarge
, 1 x A10 24GB), é necessário carregar e executar a geração usando pesos de 8 bits, o que impacta levemente os resultados:
bitsandbytes
model_kwargs={'load_in_8bit': True}
ao comando pipeline()
mostrado acima Ao usar V100s (ex: p3.2xlarge
, 1 x V100 16GB, NC6s_v3
), em todos os casos, defina torch_dtype=torch.float16
em pipeline()
.
Caso contrário, siga as etapas acima. O modelo de parâmetros 12B pode não funcionar bem em 8 bits nos V100s.
dolly
ao Databricks (em Repos, clique em Adicionar repositório, insira https://github.com/databrickslabs/dolly.git
e clique em Criar repositório).13.x ML (includes Apache Spark 3.4.0, GPU, Scala 2.12)
ou posterior com tipo de nó com 8 GPUs A100 (por exemplo, Standard_ND96asr_v4
ou p4d.24xlarge
). Observe que esses tipos de instância podem não estar disponíveis em todas as regiões ou podem ser difíceis de provisionar. No Databricks, observe que você deve selecionar primeiro o tempo de execução da GPU e desmarcar "Usar Photon" para que esses tipos de instância apareçam (quando houver suporte).train_dolly
no repositório (que é o arquivo train_dolly.py
no repositório dolly
do Github), anexe ao seu cluster de GPU e execute todas as células. Quando o treinamento terminar, o notebook salvará o modelo em /dbfs/dolly_training
.Os tipos de instância A100 não estão disponíveis em todas as regiões de nuvem ou podem ser difíceis de provisionar. O treinamento é possível em outros tipos de instância de GPU, para modelos Dolly menores e com pequenas modificações para reduzir o uso de memória. Essas modificações não são ideais, mas são simples de fazer.
Selecione o tipo de família de GPU no widget gpu_family
, insira o número de GPUs disponíveis no widget num_gpus
e execute o restante do código. Várias opções diferentes serão definidas para você treinar o modelo para um dos seguintes tipos de GPU:
Detalhes das diferentes configurações estão abaixo.
As GPUs A100 são preferidas para treinar todos os tamanhos de modelo e são as únicas GPUs que podem treinar o modelo de parâmetros de 12B em um período de tempo razoável. Como tal, esta é a configuração padrão, conforme definido no arquivo de configuração deepspeed a100_config.json
.
Treinar o modelo de parâmetros 12B não é recomendado em A10s.
Para treinar o modelo de parâmetro 6,9B em instâncias A10 (ex: g5.24xlarge
, 4 x A10 24GB; Standard_NV72ads_A10_v5
, 2 x A10), basta selecionar a10
no widget gpu_family
e inserir o número de GPUs disponíveis no widget num_gpus
e, em seguida, executar o resto do código. Isso usará o arquivo de configuração deepspeed a10_config.json
, que faz as seguintes alterações:
per-device-train-batch-size
e per-device-eval-batch-size
são definidos como 3 na invocação train_dolly.py
de deepspeed
"zero_optimization"
da configuração do deepspeed, adicionamos: "offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
Para executar em instâncias V100 com 32 GB de memória GPU (ex: p3dn.24xlarge
ou Standard_ND40rs_v2
), basta selecionar v100
no widget gpu_family
e inserir o número de GPUs disponíveis no widget num_gpus
e, em seguida, executar o restante do código. Isso usará o arquivo de configuração deepspeed v100_config.json
, que faz as seguintes alterações:
per-device-train-batch-size
e per-device-eval-batch-size
como 3Você pode aumentar ligeiramente o tamanho do lote com instâncias de 32 GB, em comparação com o que funciona acima para A10s 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}
}