Dolly от Databricks — это большая языковая модель, выполняющая инструкции, обученная на платформе машинного обучения Databricks, которая лицензирована для коммерческого использования. На основе pythia-12b
Долли обучена примерно 15 тысячам записей точной настройки инструкций/ответов databricks-dolly-15k
созданных сотрудниками Databricks в областях возможностей из статьи InstructGPT, включая мозговой штурм, классификацию, закрытый контроль качества, генерацию, извлечение информации, открытый контроль качества. и обобщение. dolly-v2-12b
не является современной моделью, но демонстрирует удивительно высокое качество выполнения инструкций, не характерное для базовой модели, на которой она основана.
Databricks стремится обеспечить, чтобы каждая организация и каждый человек извлекали выгоду из преобразующей силы искусственного интеллекта. Семейство моделей Dolly представляет собой наши первые шаги на этом пути, и мы рады поделиться этой технологией со всем миром.
Модель доступна на Hugging Face как databricks/dolly-v2-12b.
dolly-v2-12b
— это причинно-языковая модель с 12 миллиардами параметров, созданная Databricks, которая является производной от Pythia-12b от EleutherAI и точно настроена на корпусе команд записи размером около 15 000, созданном сотрудниками Databricks и выпущенном под разрешительной лицензией (CC-BY- СА)
dolly-v2-12b
не является современной моделью генеративного языка и, хотя количественный анализ продолжается, она не предназначена для конкуренции с более современными архитектурами моделей или моделями, подлежащими более крупным корпусам предварительного обучения.
Семейство моделей Dolly находится в стадии активной разработки, поэтому список недостатков вряд ли будет исчерпывающим, но мы включаем сюда известные ограничения и осечки, чтобы задокументировать и поделиться нашими предварительными выводами с сообществом. В частности, dolly-v2-12b
борется с: синтаксически сложными подсказками, проблемами программирования, математическими операциями, фактическими ошибками, датами и временем, открытыми ответами на вопросы, галлюцинациями, перечислением списков определенной длины, стилистической мимикой, чувством юмора. и т. д. Более того, мы обнаруживаем, что dolly-v2-12b
нет некоторых возможностей, таких как правильное написание писем, присутствующих в исходной модели.
Как и все языковые модели, dolly-v2-12b
отражает содержание и ограничения своих обучающих корпусов.
Куча : корпус предварительного обучения GPT-J содержит контент, в основном собранный из общедоступного Интернета, и, как и большинство наборов данных веб-масштаба, он содержит контент, который многие пользователи сочтут нежелательным. Таким образом, модель, скорее всего, будет отражать эти недостатки, возможно, открыто в случае, если от нее явно требуют создания нежелательного контента, а иногда и скрыто, как в случае предвзятых или вредных неявных ассоциаций.
databricks-dolly-15k
: данные обучения, на которых настроены инструкции dolly-v2-12b
представляют собой инструкции на естественном языке, созданные сотрудниками Databricks в период с марта по апрель 2023 года, и включают отрывки из Википедии в качестве справочных отрывков для таких категорий инструкций, как закрытый контроль качества и обобщение. Насколько нам известно, он не содержит нецензурной лексики, интеллектуальной собственности или личной информации о непубличных деятелях, но может содержать опечатки и фактические ошибки. Набор данных может также отражать предвзятости, обнаруженные в Википедии. Наконец, набор данных, вероятно, отражает интересы и семантический выбор сотрудников Databricks, демографической группы, которая не является репрезентативной для населения мира в целом.
Databricks стремится к постоянным исследованиям и разработкам для разработки полезных, честных и безвредных технологий искусственного интеллекта, которые максимизируют потенциал всех людей и организаций.
Если вы хотите просто протестировать модель без обучения, она доступна на Hugging Face как databricks/dolly-v2-12b.
Чтобы использовать модель с библиотекой transformers
на машине с графическими процессорами 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")
Затем вы можете использовать конвейер для ответа на инструкции:
instruct_pipeline("Explain to me the difference between nuclear fission and fusion.")
Типы экземпляров A100 доступны не во всех облачных регионах, или их может быть сложно подготовить. Вывод возможен для других типов экземпляров графического процессора.
Модели параметров 6.9B и 2.8B должны работать как есть.
Для генерации с использованием модели параметров 12B на A10 (например: g5.4xlarge
, 1 x A10 24 ГБ) необходимо загрузить и запустить генерацию с использованием 8-битных весов, что незначительно влияет на результаты:
bitsandbytes
model_kwargs={'load_in_8bit': True}
в команду pipeline()
показанную выше. При использовании V100 (например: p3.2xlarge
, 1 x V100 16 ГБ, NC6s_v3
) во всех случаях вместо этого установите torch_dtype=torch.float16
в pipeline()
.
В противном случае выполните действия, описанные выше. Модель параметров 12B может не работать должным образом в 8-битном режиме на V100.
dolly
в Databricks (в разделе «Репозитории» нажмите «Добавить репо», введите https://github.com/databrickslabs/dolly.git
, затем нажмите «Создать репо»).13.x ML (includes Apache Spark 3.4.0, GPU, Scala 2.12)
или более поздней версии с типом узла, имеющим 8 графических процессоров A100 (например, Standard_ND96asr_v4
или p4d.24xlarge
). Обратите внимание, что эти типы экземпляров могут быть доступны не во всех регионах или их может быть сложно подготовить. Обратите внимание, что в Databricks необходимо сначала выбрать среду выполнения графического процессора и снять флажок «Использовать Photon», чтобы эти типы экземпляров отображались (если они поддерживаются).train_dolly
в репозитории (это файл train_dolly.py
в dolly
Github), присоедините его к кластеру графического процессора и запустите все ячейки. По завершении обучения блокнот сохранит модель в папке /dbfs/dolly_training
.Типы экземпляров A100 доступны не во всех облачных регионах, или их может быть сложно подготовить. Обучение возможно на других типах экземпляров графического процессора, для моделей Dolly меньшего размера и с небольшими изменениями для уменьшения использования памяти. Эти модификации не являются оптимальными, но их легко осуществить.
Выберите тип семейства графических процессоров в виджете gpu_family
, введите количество доступных графических процессоров в виджете num_gpus
, а затем запустите остальную часть кода. Для обучения модели для одного из следующих типов графических процессоров будет установлен ряд различных параметров:
Подробная информация о различных конфигурациях приведена ниже.
Графические процессоры A100 предпочтительны для обучения моделей всех размеров и являются единственными графическими процессорами, которые могут обучать модель параметров 12B за разумное время. Таким образом, это конфигурация по умолчанию, заданная в файле конфигурации deepspeed a100_config.json
.
Обучение модели параметров 12B не рекомендуется на A10.
Чтобы обучить модель параметров 6.9B на экземплярах A10 (например: g5.24xlarge
, 4 x A10 24 ГБ; Standard_NV72ads_A10_v5
, 2 x A10), просто выберите a10
в виджете gpu_family
и введите количество доступных графических процессоров в виджете num_gpus
, затем запустите остальная часть кода. При этом будет использоваться файл конфигурации deepspeed a10_config.json
, который вносит следующие изменения:
per-device-train-batch-size
и per-device-eval-batch-size
установлены на 3 при вызове deepspeed
train_dolly.py
"zero_optimization"
конфигурации deepspeed мы добавили: "offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
Чтобы работать на экземплярах V100 с 32 ГБ памяти графического процессора (например: p3dn.24xlarge
или Standard_ND40rs_v2
), просто выберите v100
в виджете gpu_family
и введите количество доступных графических процессоров в виджете num_gpus
, а затем запустите остальную часть кода. При этом будет использоваться файл конфигурации v100_config.json
deepspeed, который вносит следующие изменения:
per-device-train-batch-size
и per-device-eval-batch-size
равным 3.Возможно, вам удастся немного увеличить размер пакета с экземплярами емкостью 32 ГБ по сравнению с тем, что работает выше для экземпляров A10 с объемом памяти 24 ГБ.
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}
}