Декларативная среда глубокого обучения, созданная для масштабирования и эффективности.
Важный
Наше сообщество переехало в Discord — присоединяйтесь к нам!
Ludwig — это платформа с низким кодом для создания пользовательских моделей искусственного интеллекта, таких как LLM и другие глубокие нейронные сети.
Ключевые особенности:
Людвиг организован Linux Foundation AI & Data.
Установите из PyPi. Имейте в виду, что Людвигу требуется Python 3.8+.
pip install ludwig
Или установите со всеми дополнительными зависимостями:
pip install ludwig[full]
Пожалуйста, ознакомьтесь с более подробными инструкциями по установке.
Хотите кратко взглянуть на некоторые возможности Людвига 0.8? Посмотрите этот блокнот Colab
Хотите доработать Ламу-2 или Мистраль? Посмотрите эти блокноты:
Полное руководство можно найти в официальном руководстве по началу работы или в сквозных примерах.
Давайте настроим предварительно обученную большую языковую модель LLaMA-2-7b так, чтобы она следовала инструкциям, подобным чат-боту («настройка инструкций»).
Мы будем использовать набор данных Стэнфордской альпаки, который будет отформатирован в виде табличного файла, который выглядит следующим образом:
инструкция | вход | выход |
---|---|---|
Дайте три совета, как оставаться здоровым. | 1. Соблюдайте сбалансированную диету и обязательно включайте в нее... | |
Расположите приведенные ниже предметы в таком порядке, чтобы... | торт, я, ем | Я ем торт. |
Напишите вступительный абзац о знаменитом... | Мишель Обама | Мишель Обама – вдохновляющая женщина, которая... |
... | ... | ... |
Создайте файл конфигурации YAML с именем model.yaml
со следующим:
model_type : llm
base_model : meta-llama/Llama-2-7b-hf
quantization :
bits : 4
adapter :
type : lora
prompt :
template : |
Below is an instruction that describes a task, paired with an input that may provide further context.
Write a response that appropriately completes the request.
### Instruction:
{instruction}
### Input:
{input}
### Response:
input_features :
- name : prompt
type : text
output_features :
- name : output
type : text
trainer :
type : finetune
learning_rate : 0.0001
batch_size : 1
gradient_accumulation_steps : 16
epochs : 3
learning_rate_scheduler :
decay : cosine
warmup_fraction : 0.01
preprocessing :
sample_ratio : 0.1
backend :
type : local
А теперь давайте обучим модель:
export HUGGING_FACE_HUB_TOKEN = " <api_token> "
ludwig train --config model.yaml --dataset " ludwig://alpaca "
Давайте создадим нейронную сеть, которая предсказывает, была ли рецензия кинокритика на «Гнилые помидоры» положительной или отрицательной.
Наш набор данных будет представлять собой файл CSV, который выглядит следующим образом:
название_фильма | контент_рейтинг | жанры | время выполнения | топ_критик | обзор_контента | рекомендуется |
---|---|---|---|---|---|---|
Избавь нас от зла | Р | Боевики и Приключения, Ужасы | 117,0 | истинный | Режиссер Скотт Дерриксон и его соавтор сценария Пол Харрис Бордман демонстрируют рутинную процедуру с ничем не примечательным страхом. | 0 |
Барбара | PG-13 | Арт Хаус и Интернационал, Драма | 105,0 | ЛОЖЬ | Каким-то образом в этом захватывающем повествовании Барбаре удается сохранить свои принципы, человечность и смелость, и она борется за спасение девочки-подростка-диссидента, чью жизнь пытаются разрушить коммунисты. | 1 |
Ужасные боссы | Р | Комедия | 98,0 | ЛОЖЬ | Эти боссы не могут оправдать ни убийство, ни длительные комические воспоминания, фатально скомпрометировав фарс, который мог бы быть отличным, но в итоге оказался посредственным. | 0 |
... | ... | ... | ... | ... | ... | ... |
Загрузите образец набора данных отсюда.
wget https://ludwig.ai/latest/data/rotten_tomatoes.csv
Затем создайте файл конфигурации YAML с именем model.yaml
со следующим:
input_features :
- name : genres
type : set
preprocessing :
tokenizer : comma
- name : content_rating
type : category
- name : top_critic
type : binary
- name : runtime
type : number
- name : review_content
type : text
encoder :
type : embed
output_features :
- name : recommended
type : binary
Вот и все! Теперь давайте обучим модель:
ludwig train --config model.yaml --dataset rotten_tomatoes.csv
Счастливого моделирования
Попробуйте применить Людвига к своим данным. Если у вас есть вопросы, обращайтесь в Discord.
Минимальный шаблон машинного обучения
Людвиг сразу берет на себя инженерную сложность машинного обучения, позволяя ученым-исследователям сосредоточиться на построении моделей на самом высоком уровне абстракции. Предварительная обработка данных, оптимизация гиперпараметров, управление устройствами и распределенное обучение для моделей torch.nn.Module
предоставляются совершенно бесплатно.
Легко создавайте свои тесты
Создать современную базовую версию и сравнить ее с новой моделью — это простое изменение конфигурации.
Легко применять новые архитектуры для решения множества задач и наборов данных.
Применяйте новые модели к обширному набору задач и наборов данных, которые поддерживает Людвиг. Ludwig включает в себя полный набор инструментов для сравнительного анализа, доступный любому пользователю, для проведения экспериментов с несколькими моделями в нескольких наборах данных с помощью простой настройки.
Широкие возможности настройки предварительной обработки данных, моделирования и показателей.
Любые аспекты архитектуры модели, цикла обучения, поиска гиперпараметров и внутренней инфраструктуры можно изменить как дополнительные поля в декларативной конфигурации, чтобы настроить конвейер в соответствии с вашими требованиями. Подробную информацию о том, что можно настроить, можно найти в документации Ludwig Configuration.
Мультимодальное, многозадачное обучение «из коробки»
Смешивайте и сопоставляйте табличные данные, текст, изображения и даже аудио в сложных конфигурациях моделей без написания кода.
Расширенный экспорт и отслеживание моделей
Автоматически отслеживайте все испытания и показатели с помощью таких инструментов, как Tensorboard, Comet ML, Weights & Biases, MLFlow и Aim Stack.
Автоматически масштабируйте обучение для кластеров с несколькими графическими процессорами и несколькими узлами.
Перейдите от обучения на локальном компьютере к облаку без изменения кода.
Интерфейс Low-code для самых современных моделей, включая предварительно обученные трансформеры Huggingface.
Людвиг также изначально интегрируется с предварительно обученными моделями, такими как те, которые доступны в Huggingface Transformers. Пользователи могут выбирать из обширной коллекции современных предварительно обученных моделей PyTorch, которые можно использовать без необходимости писать какой-либо код. Например, обучение модели анализа настроений на основе BERT с помощью Людвига так же просто, как:
ludwig train --dataset sst5 --config_str " {input_features: [{name: sentence, type: text, encoder: bert}], output_features: [{name: label, type: category}]} "
Интерфейс Low-code для AutoML
Ludwig AutoML позволяет пользователям получать обученные модели, предоставляя только набор данных, целевой столбец и бюджет времени.
auto_train_results = ludwig . automl . auto_train ( dataset = my_dataset_df , target = target_column_name , time_limit_s = 7200 )
Простое производство
Ludwig упрощает обслуживание моделей глубокого обучения, в том числе на графических процессорах. Запустите REST API для вашей обученной модели Людвига.
ludwig serve --model_path=/path/to/model
Людвиг поддерживает экспорт моделей в эффективные пакеты Torchscript.
ludwig export_torchscript -–model_path=/path/to/model
Прочтите наши публикации о тестах Ludwig, декларативного машинного обучения и SoTA Ludwig.
Узнайте больше о том, как работает Людвиг, как начать работу, и разберитесь с другими примерами.
Если вы хотите внести свой вклад, у вас есть вопросы, комментарии или мысли, которыми вы можете поделиться, или вы просто хотите быть в курсе событий, рассмотрите возможность присоединения к нашему сообществу Discord и следите за нами на X!
Ludwig — это активно управляемый проект с открытым исходным кодом, который опирается на вклад таких же людей, как вы. Подумайте о том, чтобы присоединиться к активной группе участников Ludwig, чтобы сделать Ludwig еще более доступной и многофункциональной средой, которую сможет использовать каждый!