Более 20 высокопроизводительных программ LLM с рецептами для предварительного обучения, точной настройки и масштабного развертывания.
✅ Реализации с нуля ✅ Никаких абстракций ✅ Подходит для начинающих ✅ Вспышка внимания ✅ FSDP ✅ LoRA, QLoRA, Адаптер ✅ Уменьшите память графического процессора (fp4/8/16/32) ✅ 1-1000+ графических процессоров/TPU ✅ 20+ LLM
Быстрый старт • Модели • Точная настройка • Развертывание • Все рабочие процессы • Возможности • Рецепты (YAML) • Lightning AI • Учебные пособия
Каждый LLM реализуется с нуля, без каких-либо абстракций и с полным контролем , что делает их невероятно быстрыми, минимальными и производительными в масштабе предприятия.
✅ Готовность к корпоративному использованию — Apache 2.0 для неограниченного корпоративного использования.
✅ Удобство для разработчиков — простая отладка без слоев абстракции и реализаций в одном файле.
✅ Оптимизированная производительность. Модели созданы для максимизации производительности, снижения затрат и ускорения тренировок.
✅ Проверенные рецепты — высокооптимизированные рецепты обучения/тонкой настройки, протестированные в масштабах предприятия.
Установить ЛитГПТ
pip install 'litgpt[all]'
Загрузите и используйте любой из более чем 20 LLM:
from litgpt import LLM
llm = LLM . load ( "microsoft/phi-2" )
text = llm . generate ( "Fix the spelling: Every fall, the familly goes to the mountains." )
print ( text )
# Corrected Sentence: Every fall, the family goes to the mountains.
✅ Оптимизирован для быстрого вывода
✅ Квантование
✅ Работает на графических процессорах с низким объемом памяти
✅ Никаких слоев внутренних абстракций
✅ Оптимизирован для масштабов производства
Установить из исходников:
git clone https://github.com/Lightning-AI/litgpt
cd litgpt
pip install -e ' .[all] '
Изучите полную документацию по API Python.
Каждая модель пишется с нуля, чтобы максимизировать производительность и удалить уровни абстракции:
Модель | Размер модели | Автор | Ссылка |
---|---|---|---|
Лама 3, 3.1, 3.2 | 1Б, 3Б, 8Б, 70Б, 405Б | Мета ИИ | Мета ИИ 2024 |
Код Ламы | 7Б, 13Б, 34Б, 70Б | Мета ИИ | Розьер и др. 2023 год |
Микстрал МО | 8х7Б | Мистраль ИИ | Мистраль ИИ 2023 |
Мистраль | 7Б, 123Б | Мистраль ИИ | Мистраль ИИ 2023 |
КодДжемма | 7Б | Команда Google, Google Deepmind | |
Джемма 2 | 2Б, 9Б, 27Б | Команда Google, Google Deepmind | |
Фи 3 и 3,5 | 3,8Б | Майкрософт | Абдин и др. 2024 год |
... | ... | ... | ... |
Модель | Размер модели | Автор | Ссылка |
---|---|---|---|
КодДжемма | 7Б | Команда Google, Google Deepmind | |
Код Ламы | 7Б, 13Б, 34Б, 70Б | Мета ИИ | Розьер и др. 2023 год |
Сокол | 7Б, 40Б, 180Б | ТИИ ОАЭ | ТИИ 2023 |
FreeWilly2 (Конюшня Белуга 2) | 70Б | Стабильность ИИ | Стабильность ИИ 2023 |
Вызов функции Лама 2 | 7Б | Трелис | Трелис и др. 2023 год |
Джемма | 2Б, 7Б | Команда Google, Google Deepmind | |
Джемма 2 | 9Б, 27Б | Команда Google, Google Deepmind | |
Лама 2 | 7Б, 13Б, 70Б | Мета ИИ | Туврон и др. 2023 год |
Лама 3.1 | 8Б, 70Б | Мета ИИ | Мета ИИ 2024 |
Лама 3.2 | 1Б, 3Б | Мета ИИ | Мета ИИ 2024 |
Матстрал | 7Б | Мистраль ИИ | Мистраль АИ 2024 |
МикроЛама | 300М | Кен Ван | Репо МикроЛлама |
Микстрал МО | 8х7Б | Мистраль ИИ | Мистраль ИИ 2023 |
Мистраль | 7Б, 123Б | Мистраль ИИ | Мистраль ИИ 2023 |
ОЛМо | 1Б, 7Б | Институт Аллена по искусственному интеллекту (AI2) | Гроеневелд и др. 2024 год |
OpenLLaMA | 3Б, 7Б, 13Б | Исследования OpenLM | Гэн и Лю 2023 |
Фи 1,5 и 2 | 1,3Б, 2,7Б | Microsoft Исследования | Ли и др. 2023 год |
Фи 3 | 3,8Б | Microsoft Исследования | Абдин и др. 2024 год |
Утконос | 7Б, 13Б, 70Б | Ли и др. | Ли, Хантер и Руис, 2023 г. |
Пифия | {14,31,70,160,410}М, {1,1.4,2.8,6.9,12}Б | ЭлеутерAI | Бидерман и др. 2023 год |
Стабильный код | 3Б | Стабильность ИИ | Стабильность ИИ 2023 |
СтабильныйLM | 3Б, 7Б | Стабильность ИИ | Стабильность ИИ 2023 |
СтабильныйLM Зефир | 3Б | Стабильность ИИ | Стабильность ИИ 2023 |
КрошечныйЛама | 1.1Б | Чжан и др. | Чжан и др. 2023 год |
Совет . Вы можете просмотреть все доступные модели, выполнив команду litgpt download list
.
Точная настройка • Предварительное обучение • Продолжение предварительного обучения • Оценка • Развертывание • Тестирование
Используйте интерфейс командной строки для запуска расширенных рабочих процессов, таких как предварительное обучение или точная настройка собственных данных.
После установки LitGPT выберите модель и рабочий процесс для запуска (точная настройка, предварительное обучение, оценка, развертывание и т. д.):
# ligpt [action] [model]
litgpt serve meta-llama/Llama-3.2-3B-Instruct
litgpt finetune meta-llama/Llama-3.2-3B-Instruct
litgpt pretrain meta-llama/Llama-3.2-3B-Instruct
litgpt chat meta-llama/Llama-3.2-3B-Instruct
litgpt evaluate meta-llama/Llama-3.2-3B-Instruct
Точная настройка — это процесс использования предварительно обученной модели ИИ и ее дальнейшего обучения на небольшом специализированном наборе данных, адаптированном к конкретной задаче или приложению.
# 0) setup your dataset
curl -L https://huggingface.co/datasets/ksaw008/finance_alpaca/resolve/main/finance_alpaca.json -o my_custom_dataset.json
# 1) Finetune a model (auto downloads weights)
litgpt finetune microsoft/phi-2
--data JSON
--data.json_path my_custom_dataset.json
--data.val_split_fraction 0.1
--out_dir out/custom-model
# 2) Test the model
litgpt chat out/custom-model/final
# 3) Deploy the model
litgpt serve out/custom-model/final
Прочитайте полную документацию по тонкой настройке
Разверните предварительно обученный или точно настройте LLM, чтобы использовать его в реальных приложениях. Развертывание автоматически настраивает веб-сервер, к которому может получить доступ веб-сайт или приложение.
# deploy an out-of-the-box LLM
litgpt serve microsoft/phi-2
# deploy your own trained model
litgpt serve path/to/microsoft/phi-2/checkpoint
Протестируйте сервер в отдельном терминале и интегрируйте API модели в свой AI-продукт:
# 3) Use the server (in a separate Python session)
import requests , json
response = requests . post (
"http://127.0.0.1:8000/predict" ,
json = { "prompt" : "Fix typos in the following sentence: Exampel input" }
)
print ( response . json ()[ "output" ])
Прочтите полную документацию по развертыванию.
Оцените LLM, чтобы проверить его производительность при выполнении различных задач и увидеть, насколько хорошо он понимает и генерирует текст. Проще говоря, мы можем оценить такие вещи, как, например, насколько хорошо он будет работать на уровне колледжа по химии, программированию и т. д. (MMLU, Truthful QA и т. д.).
litgpt evaluate microsoft/phi-2 --tasks ' truthfulqa_mc2,mmlu '
Прочтите полную оценочную документацию.
Проверьте, насколько хорошо работает модель, через интерактивный чат. Используйте команду chat
для общения, извлечения вложений и т. д.
Вот пример, показывающий, как использовать Phi-2 LLM:
litgpt chat microsoft/phi-2
>> Prompt: What do Llamas eat ?
# 1) List all supported LLMs
litgpt download list
# 2) Use a model (auto downloads weights)
litgpt chat microsoft/phi-2
>> Prompt: What do Llamas eat ?
Для загрузки некоторых моделей требуется дополнительный токен доступа. Подробнее об этом можно прочитать в документации по загрузке.
Прочтите полную документацию чата.
Предварительное обучение — это процесс обучения модели ИИ путем предоставления ей большого объема данных перед ее точной настройкой для конкретных задач.
mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt
# 1) Download a tokenizer
litgpt download EleutherAI/pythia-160m
--tokenizer_only True
# 2) Pretrain the model
litgpt pretrain EleutherAI/pythia-160m
--tokenizer_dir EleutherAI/pythia-160m
--data TextFiles
--data.train_data_path " custom_texts/ "
--train.max_tokens 10_000_000
--out_dir out/custom-model
# 3) Test the model
litgpt chat out/custom-model/final
Прочтите полную предварительную документацию
Продолжение предварительного обучения — это еще один способ точной настройки, который специализируется на уже предварительно обученной модели путем обучения на пользовательских данных:
mkdir -p custom_texts
curl https://www.gutenberg.org/cache/epub/24440/pg24440.txt --output custom_texts/book1.txt
curl https://www.gutenberg.org/cache/epub/26393/pg26393.txt --output custom_texts/book2.txt
# 1) Continue pretraining a model (auto downloads weights)
litgpt pretrain EleutherAI/pythia-160m
--tokenizer_dir EleutherAI/pythia-160m
--initial_checkpoint_dir EleutherAI/pythia-160m
--data TextFiles
--data.train_data_path " custom_texts/ "
--train.max_tokens 10_000_000
--out_dir out/custom-model
# 2) Test the model
litgpt chat out/custom-model/final
Прочтите полную документацию по продолжению предварительной подготовки.
✅ Самые современные оптимизации: Flash Attention v2, поддержка нескольких графических процессоров посредством полного параллелизма данных, дополнительная разгрузка процессора, а также поддержка TPU и XLA.
✅ Предварительная подготовка, точная настройка и развертывание
✅ Сократите требования к вычислительным ресурсам с помощью настроек низкой точности: смешанные FP16, BF16 и FP16/FP32.
✅ Снижение требований к памяти благодаря квантованию: 4-битные числа с плавающей запятой, 8-битные целые числа и двойное квантование.
✅ Файлы конфигурации для отличной производительности «из коробки».
✅ Точная настройка с эффективным использованием параметров: LoRA, QLoRA, адаптер и адаптер v2.
✅ Экспорт в другие популярные форматы веса модели.
✅ Множество популярных наборов данных для предварительной подготовки и точной настройки, а также поддержка пользовательских наборов данных.
✅ Читабельный и легко модифицируемый код, позволяющий экспериментировать с новейшими исследовательскими идеями.
LitGPT поставляется с проверенными рецептами (конфигурациями YAML) для обучения моделей в различных условиях. Мы создали эти рецепты на основе параметров, которые, по нашему мнению, лучше всего подходят для различных условий тренировок.
Посмотреть все рецепты тренировок можно здесь.
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
Конфигурации позволяют настраивать обучение по всем детальным параметрам, например:
# The path to the base model's checkpoint directory to load for finetuning. (type: <class 'Path'>, default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir : checkpoints/meta-llama/Llama-2-7b-hf
# Directory in which to save checkpoints and logs. (type: <class 'Path'>, default: out/lora)
out_dir : out/finetune/qlora-llama2-7b
# The precision to use for finetuning. Possible choices: "bf16-true", "bf16-mixed", "32-true". (type: Optional[str], default: null)
precision : bf16-true
...
# The path to the base model's checkpoint directory to load for finetuning. (type: <class 'Path'>, default: checkpoints/stabilityai/stablelm-base-alpha-3b)
checkpoint_dir : checkpoints/meta-llama/Llama-2-7b-hf
# Directory in which to save checkpoints and logs. (type: <class 'Path'>, default: out/lora)
out_dir : out/finetune/qlora-llama2-7b
# The precision to use for finetuning. Possible choices: "bf16-true", "bf16-mixed", "32-true". (type: Optional[str], default: null)
precision : bf16-true
# If set, quantize the model with this algorithm. See ``tutorials/quantize.md`` for more information. (type: Optional[Literal['nf4', 'nf4-dq', 'fp4', 'fp4-dq', 'int8-training']], default: null)
quantize : bnb.nf4
# How many devices/GPUs to use. (type: Union[int, str], default: 1)
devices : 1
# How many nodes to use. (type: int, default: 1)
num_nodes : 1
# The LoRA rank. (type: int, default: 8)
lora_r : 32
# The LoRA alpha. (type: int, default: 16)
lora_alpha : 16
# The LoRA dropout value. (type: float, default: 0.05)
lora_dropout : 0.05
# Whether to apply LoRA to the query weights in attention. (type: bool, default: True)
lora_query : true
# Whether to apply LoRA to the key weights in attention. (type: bool, default: False)
lora_key : false
# Whether to apply LoRA to the value weights in attention. (type: bool, default: True)
lora_value : true
# Whether to apply LoRA to the output projection in the attention block. (type: bool, default: False)
lora_projection : false
# Whether to apply LoRA to the weights of the MLP in the attention block. (type: bool, default: False)
lora_mlp : false
# Whether to apply LoRA to output head in GPT. (type: bool, default: False)
lora_head : false
# Data-related arguments. If not provided, the default is ``litgpt.data.Alpaca``.
data :
class_path : litgpt.data.Alpaca2k
init_args :
mask_prompt : false
val_split_fraction : 0.05
prompt_style : alpaca
ignore_index : -100
seed : 42
num_workers : 4
download_dir : data/alpaca2k
# Training-related arguments. See ``litgpt.args.TrainArgs`` for details
train :
# Number of optimizer steps between saving checkpoints (type: Optional[int], default: 1000)
save_interval : 200
# Number of iterations between logging calls (type: int, default: 1)
log_interval : 1
# Number of samples between optimizer steps across data-parallel ranks (type: int, default: 128)
global_batch_size : 8
# Number of samples per data-parallel rank (type: int, default: 4)
micro_batch_size : 2
# Number of iterations with learning rate warmup active (type: int, default: 100)
lr_warmup_steps : 10
# Number of epochs to train on (type: Optional[int], default: 5)
epochs : 4
# Total number of tokens to train on (type: Optional[int], default: null)
max_tokens :
# Limits the number of optimizer steps to run (type: Optional[int], default: null)
max_steps :
# Limits the length of samples (type: Optional[int], default: null)
max_seq_length : 512
# Whether to tie the embedding weights with the language modeling head weights (type: Optional[bool], default: null)
tie_embeddings :
# (type: float, default: 0.0003)
learning_rate : 0.0002
# (type: float, default: 0.02)
weight_decay : 0.0
# (type: float, default: 0.9)
beta1 : 0.9
# (type: float, default: 0.95)
beta2 : 0.95
# (type: Optional[float], default: null)
max_norm :
# (type: float, default: 6e-05)
min_lr : 6.0e-05
# Evaluation-related arguments. See ``litgpt.args.EvalArgs`` for details
eval :
# Number of optimizer steps between evaluation calls (type: int, default: 100)
interval : 100
# Number of tokens to generate (type: Optional[int], default: 100)
max_new_tokens : 100
# Number of iterations (type: int, default: 100)
max_iters : 100
# The name of the logger to send metrics to. (type: Literal['wandb', 'tensorboard', 'csv'], default: csv)
logger_name : csv
# The random seed to use for reproducibility. (type: int, default: 1337)
seed : 1337
litgpt finetune
--config https://raw.githubusercontent.com/Lightning-AI/litgpt/main/config_hub/finetune/llama-2-7b/lora.yaml
--lora_r 4
LiGPT лежит в основе многих замечательных проектов, инициатив, задач и, конечно же, предприятий в области искусственного интеллекта. Отправьте запрос на включение, чтобы его рассмотрели для новой функции.
Проект Samba, разработанный исследователями из Microsoft, построен на основе кодовой базы LitGPT и сочетает в себе модели пространства состояний со скользящим окном, что превосходит модели чистого пространства состояний.
Репозиторий LitGPT был официальным стартовым комплектом для конкурса NeurIPS 2023 LLM Efficiency Challenge, который представляет собой соревнование, направленное на точную настройку существующего LLM, не настраиваемого без инструкций, в течение 24 часов на одном графическом процессоре.
LitGPT послужил основой для проекта TinyLlama и исследовательской работы TinyLlama: модель малого языка с открытым исходным кодом.
MicroLlama — это модель Llama размером 300 млн, предварительно обученная на токенах 50 B на базе TinyLlama и LitGPT.
В исследовательской работе «Предварительное обучение малых базовых LM с меньшим количеством токенов», в которой используется LitGPT, разрабатываются модели базового языка меньшего размера путем наследования нескольких блоков преобразователей от более крупных моделей и обучения на небольшой части данных, используемых более крупными моделями. Это демонстрирует, что эти меньшие модели могут работать сравнимо с более крупными моделями, несмотря на использование значительно меньшего количества обучающих данных и ресурсов.
Мы приветствуем всех индивидуальных участников, независимо от их уровня опыта и оборудования. Ваш вклад ценен, и мы рады видеть, чего вы можете достичь в этой среде сотрудничества и поддержки.
Начать
⚡️ Тонкая настройка, в т.ч. LoRA, QLoRA и адаптеры
? Предварительная подготовка
Оценка модели
Поддерживаемые и пользовательские наборы данных
? Квантование
? Советы по устранению ошибок нехватки памяти (OOM)
?? Использование облачных TPU
Эта реализация распространяется на Lit-LLaMA и nanoGPT и работает на базе Lightning Fabric⚡ .
LitGPT выпускается под лицензией Apache 2.0.
Если вы используете LitGPT в своих исследованиях, пожалуйста, дайте ссылку на следующую работу:
@misc { litgpt-2023 ,
author = { Lightning AI } ,
title = { LitGPT } ,
howpublished = { url{https://github.com/Lightning-AI/litgpt} } ,
year = { 2023 } ,
}