Твиттер (он же X)
Следуйте за нами на X | |
Установка | unsloth/README.md |
Бенчмаркинг | Таблицы производительности |
Выпущенные модели | Релизы Unsloth |
Блог | Читайте наши блоги |
Все ядра написаны на языке OpenAI Triton. Ручной обратный двигатель .
Потеря точности 0% – никаких методов аппроксимации – все точно.
Никаких изменений оборудования. Поддерживает графические процессоры NVIDIA с 2018 года. Минимальная поддержка CUDA 7.0 (V100, T4, Titan V, RTX 20, 30, 40x, A100, H100, L40 и т. д.) Проверьте свой графический процессор! GTX 1070, 1080 работает, но медленно.
Работает в Linux и Windows через WSL.
Поддерживает точную настройку 4-битных и 16-битных QLoRA/LoRA с помощью битов и байтов.
Обучение с открытым исходным кодом происходит в 5 раз быстрее — посмотрите Unsloth Pro, чтобы ускорить обучение до 30 раз !
Если вы тренировали модель с помощью «Unsloth», вы можете использовать эту крутую наклейку!
Полный список воспроизводимых таблиц сравнительного анализа можно найти на нашем веб-сайте.
1 А100 40 ГБ | ?Обнимающее лицо | Вспышка внимания | ?Unsloth с открытым исходным кодом | ?Unsloth Pro |
---|---|---|---|---|
Альпака | 1x | 1,04x | 1,98x | 15,64x |
ЛАИОН Чип2 | 1x | 0,92x | 1,61x | 20,73x |
ОАССТ | 1x | 1,19x | 2,17x | 14,83x |
Тонкая косатка | 1x | 1,18x | 2,22x | 14,82x |
Таблица сравнительного анализа, приведенная ниже, была проведена компанией «Hugging Face».
Бесплатный Колаб Т4 | Набор данных | ?Обнимающее лицо | Питорч 2.1.1 | ?Неленивый | ? Уменьшение видеопамяти |
---|---|---|---|---|---|
Лама-2 7б | ОАССТ | 1x | 1,19x | 1,95x | -43,3% |
Мистраль 7б | Альпака | 1x | 1,07x | 1,56x | -13,7% |
Крошечная лама 1.1b | Альпака | 1x | 2,06x | 3,87x | -73,8% |
ДПО с Зефиром | Ультра Чат | 1x | 1,09x | 1,55x | -18,6% |
Для стабильных выпусков используйте pip install unsloth
. Однако для большинства установок мы рекомендуем pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"
.
️Only use Conda if you have it. If not, use Pip
. Выберите pytorch-cuda=11.8,12.1
для CUDA 11.8 или CUDA 12.1. Мы поддерживаем python=3.10,3.11,3.12
.
conda create --name unsloth_env питон=3.11 pytorch-cuda=12.1 pytorch cudatoolkit xformers -c pytorch -c nvidia -c xformers -у Конда активирует unsloth_env pip install "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"pip install --no-deps trl peft ускорения bitsandbytes
mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 rm -rf ~/miniconda3/miniconda.sh~/miniconda3/bin/conda init bash~/miniconda3/bin/conda init zsh
️Do **NOT** use this if you have Conda.
Pip немного сложнее, поскольку есть проблемы с зависимостями. Команда pip отличается для версий torch 2.2,2.3,2.4,2.5
и CUDA.
Для других версий факела мы поддерживаем torch211
, torch212
, torch220
, torch230
, torch240
, а для версий CUDA — cu118
, cu121
и cu124
. Для устройств с силой тока (A100, H100, RTX3090) и выше используйте cu118-ampere
, cu121-ampere
или cu124-ampere
.
Например, если у вас есть torch 2.4
и CUDA 12.1
, используйте:
pip install --upgrade pip pip install "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"
Другой пример: если у вас есть torch 2.5
и CUDA 12.4
, используйте:
pip install --upgrade pip pip install "unsloth[cu124-torch250] @ git+https://github.com/unslothai/unsloth.git"
И другие примеры:
pip install "unsloth[cu121-ampere-torch240] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu118-ampere-torch240] @ git+https://github.com/ unslothai/unsloth.git"pip install "unsloth[cu121-torch240] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu118-torch240] @ git+https://github.com/unslothai/unsloth.git" pip install "unsloth[cu121-torch230] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu121-ampere-torch230] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu121] -torch250] @ git+https://github.com/unslothai/unsloth.git"pip install "unsloth[cu124-ampere-torch250] @ git+https://github.com/unslothai/unsloth.git"
Или запустите приведенную ниже команду в терминале, чтобы получить оптимальную команду установки pip:
wget -qO- https://raw.githubusercontent.com/unslothai/unsloth/main/unsloth/_auto_install.py | питон -
Или запустите приведенную ниже команду вручную в REPL Python:
попробуйте: импортировать TorchException: поднять ImportError('Установить факел через `pip install torch`') из package.version import Version как Vv = V(torch.__version__)cuda = str(torch.version.cuda)is_ampere = torch.cuda. get_device_capability()[0] >= 8if cuda != "12.1" и cuda != "11.8" и cuda != "12.4": поднять RuntimeError(f"CUDA = {cuda} не поддерживается!")if v <= V('2.1.0'): поднять RuntimeError(f"Torch = {v} слишком старый!")elif v <= V('2.1.1'): x = 'cu{}{}-torch211'elif v <= V('2.1.2'): x = 'cu{}{}-torch212'elif v < V('2.3.0'): x = 'cu{}{}-torch220'elif v < V('2.4.0'): x = 'cu{} {}-torch230'elif v < V('2.5.0'): x = 'cu{}{}-torch240'elif v < V('2.6.0'): x = 'cu{}{}-torch250'else: поднять RuntimeError(f"Torch = {v} слишком новый!")x = x.format(cuda.replace(".", ""), "-ampere" if is_ampere else "")print(f'pip install --upgrade pip && pip install "unsloth[{x}] @ git+https://github.com/unslothai/unsloth.git"')
Чтобы запустить Unsloth непосредственно в Windows:
Установите Triton из этой вилки Windows и следуйте инструкциям: https://github.com/woct0rdho/triton-windows.
В SFTTrainer установите dataset_num_proc=1
чтобы избежать сбоя:
тренер = SFTTrainer(dataset_num_proc=1, ... )
Дополнительные инструкции по установке или если вы видите странные ошибки во время установки:
Установите torch
и triton
. Перейдите на https://pytorch.org, чтобы установить его. Например pip install torch torchvision torchaudio triton
Убедитесь, что CUDA установлен правильно. Попробуйте nvcc
. Если это не помогло, вам необходимо установить cudatoolkit
или драйверы CUDA.
Установите xformers
вручную. Вы можете попробовать установить vllm
и посмотреть, удастся ли vllm
. Проверьте, удалось ли выполнить xformers
с помощью python -m xformers.info
Перейдите на https://github.com/facebookresearch/xformers. Другой вариант — установить flash-attn
для графических процессоров Ampere.
Наконец, установите bitsandbytes
и проверьте его с помощью python -m bitsandbytes
Перейдите в нашу официальную документацию для сохранения в GGUF, проверки контрольных точек, оценки и многого другого!
Мы поддерживаем TRL, Trainer, Seq2SeqTrainer и даже код Pytorch от Huggingface!
Мы находимся в официальной документации Hugging Face! Ознакомьтесь с документацией SFT и документацией DPO!
from unsloth import FastLanguageModel from unsloth import is_bfloat16_supportedimport torchfrom trl import SFTTrainerfrom Transformers import TrainingArgumentsfrom datasets import load_datasetmax_seq_length = 2048 # Поддерживает внутреннее масштабирование RoPE, поэтому выбирайте любое!# Get LAION dataseturl = "https://huggingface.co/datasets/laion/OIG/resolve/main/unified_chip2.jsonl"dataset = load_dataset("json", data_files = {"train" : url}, Split = "train")# 4bit pre квантованные модели, которые мы поддерживаем для ускорения загрузки в 4 раза + отсутствие OOM.fourbit_models = ["unsloth/mistral-7b-v0.3-bnb-4bit", # Новый Mistral v3 в 2 раза быстрее!"unsloth/mistral-7b-instruct-v0.3-bnb-4bit","unsloth/llama-3-8b -bnb-4bit", # Лама-3 15 триллионов токенов модель 2x быстрее!"unsloth/llama-3-8b-Instruct-bnb-4bit","unsloth/llama-3-70b-bnb-4bit","unsloth/Phi-3-mini-4k-instruct", # Phi-3 2x быстрее!"unsloth/Phi-3-medium-4k-instruct","unsloth/mistral-7b-bnb-4bit","unsloth/gemma-7b-bnb-4bit", # Gemma в 2,2 раза быстрее!] # Еще модели на https://huggingface.co/unslothmodel, tokenizer = FastLanguageModel.from_pretrained(model_name = «unsloth/llama-3-8b-bnb-4bit»,max_seq_length = max_seq_length,dtype = None,load_in_4bit = True, )# Выполните исправление модели и добавьте быстрые веса LoRAmodel = FastLanguageModel.get_peft_model(model,r = 16,target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj" ",],lora_alpha = 16,lora_dropout = 0, # Поддерживает любые, но = 0 оптимизированbias = "none", # Поддерживает любые, но = "none" оптимизирован# [НОВОЕ] "unsloth" использует на 30 % меньше видеопамяти, подходит для пакетов в 2 раза большего размера!use_gradient_checkpointing = "unsloth", # True или "unsloth" для очень длинный contextrandom_state = 3407,max_seq_length = max_seq_length,use_rslora = False, # Мы поддерживаем ранг стабилизированный LoRAloftq_config = None, # И LoftQ)trainer = SFTTrainer(model = model,train_dataset = dataset,dataset_text_field = "text",max_seq_length = max_seq_length,tokenizer = tokenizer,args = TrainingArguments(per_device_train_batch_size = 2,gradient_accumulation_steps = 4,warmup_steps = 10,max_steps = 60,fp16 = not is_bfloat16_supported(),bf16 = is_bfloat16_supported(),logging_steps = 1,output_dir = "outputs",optim = "adamw_8bit",seed = 3407, ), )trainer.train()# Перейдите на https://github.com/unslothai/unsloth/wiki для получения дополнительных советов, таких как# (1) Сохранение в GGUF / слияние с 16-битной версией для vLLM# (2) Продолжение обучения с использованием сохраненного адаптера LoRA # (3) Добавление цикла оценки/OOM# (4) Индивидуальные шаблоны чата
DPO (прямая оптимизация предпочтений), PPO, моделирование вознаграждений, похоже, работают согласно независимому тестированию третьей стороны от Llama-Factory. У нас есть предварительный блокнот Google Colab для воспроизведения Zephyr на Tesla T4 здесь: блокнот.
Мы находимся в официальной документации Hugging Face! Мы работаем с документами SFT и документами DPO!
import osos.environ["CUDA_VISIBLE_DEVICES"] = "0" # Необязательно установить идентификатор устройства графического процессора из unsloth import FastLanguageModel, PatchDPOTrainerfrom unsloth import is_bfloat16_supportedPatchDPOTrainer()import torch from Transformers import TrainingArgumentsfrom trl import DPOTrainermodel, tokenizer = FastLanguageModel.from_pretrained(model_name = "unsloth/zephyr-sft-bnb-4bit",max_seq_length = max_seq_length,dtype = None,load_in_4bit = True, )# Выполните исправление модели и добавьте быстрые веса LoRAmodel = FastLanguageModel.get_peft_model(model,r = 64,target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj" ",],lora_alpha = 64,lora_dropout = 0, # Поддерживает любые, но = 0 оптимизированbias = "none", # Поддерживает любые, но = "none" оптимизирован# [НОВОЕ] "unsloth" использует на 30 % меньше видеопамяти, подходит для пакетов в 2 раза большего размера!use_gradient_checkpointing = "unsloth", # True или "unsloth" для очень длинный contextrandom_state = 3407,max_seq_length = max_seq_length, )dpo_trainer = DPOtrainer(model = model,ref_model = None,args = TrainingArguments(per_device_train_batch_size = 4,gradient_accumulation_steps = 8, Warmup_ratio = 0.1,num_train_epochs = 3,fp16 = not is_bfloat16_supported(),bf16 = is_bfloat16_supported(), logging_steps = 1, optim = "adamw_8bit", начальное число = 42,output_dir = "выходы", ),beta = 0,1,train_dataset = YOUR_DATASET_HERE, # eval_dataset = YOUR_DATASET_HERE, tokenizer = tokenizer, max_length = 1024, max_prompt_length = 512, )dpo_trainer.train()
Нажмите «Код», чтобы просмотреть полностью воспроизводимые примеры.
«Unsloth Equal» — это предварительная версия нашей PRO-версии с урезанным кодом. Все настройки и кривая потерь остаются идентичными.
Полный список сравнительных таблиц можно найти на нашем сайте.
1 А100 40 ГБ | ?Обнимающее лицо | Вспышка внимания 2 | ?Неленивый открытый | Неленивый Равный | Неленивый Про | Неленивый Макс |
---|---|---|---|---|---|---|
Альпака | 1x | 1,04x | 1,98x | 2,48x | 5,32x | 15,64x |
код | Код | Код | Код | Код | ||
секунды | 1040 | 1001 | 525 | 419 | 196 | 67 |
память МБ | 18235 | 15365 | 9631 | 8525 | ||
% сохранено | 15,74 | 47,18 | 53,25 |
Ссылка на таблицу производительности. TGS: токенов на каждый графический процессор в секунду. Модель: LLaMA2-7B. Графический процессор: NVIDIA A100 * 1. Размер пакета: 4. Накопление градиента: 2. Ранг LoRA: 8. Максимальная длина: 1024.
Метод | Биты | ТГС | ГРАММ | Скорость |
---|---|---|---|---|
ВЧ | 16 | 2392 | 18 ГБ | 100% |
ВЧ+ФА2 | 16 | 2954 | 17 ГБ | 123% |
Неленивость+FA2 | 16 | 4007 | 16 ГБ | 168% |
ВЧ | 4 | 2415 | 9 ГБ | 101% |
Неленивость+FA2 | 4 | 3726 | 7 ГБ | 160% |
1 А100 40 ГБ | Обнимающее лицо | Вспышка внимания 2 | Неленивый Открытый | Неленивый Равный | Неленивый Про | Неленивый Макс |
---|---|---|---|---|---|---|
Мистраль 7Б Тонкий Орка | 1x | 1,15x | 2,15x | 2,53x | 4,61x | 13,69x |
код | Код | Код | Код | Код | ||
секунды | 1813 г. | 1571 г. | 842 | 718 | 393 | 132 |
память МБ | 32853 | 19385 | 12465 | 10271 | ||
% сохранено | 40,99 | 62.06 | 68,74 |
1 А100 40 ГБ | Обнимающее лицо | Вспышка внимания 2 | Неленивый Открытый | Неленивый Равный | Неленивый Про | Неленивый Макс |
---|---|---|---|---|---|---|
Код Лама 34Б | ООМ | 0,99x | 1,87x | 2,61x | 4,27x | 12,82x |
код | Код | Код | Код | |||
секунды | 1953 год | 1982 год | 1043 | 748 | 458 | 152 |
память МБ | 40000 | 33217 | 27413 | 22161 | ||
% сохранено | 16.96 | 31.47 | 44,60 |
1 Т4 16 ГБ | Обнимающее лицо | Вспышка внимания | Неленивый Открытый | Неленивый Про Равный | Неленивый Про | Неленивый Макс |
---|---|---|---|---|---|---|
Альпака | 1x | 1,09x | 1,69x | 1,79x | 2,93x | 8,3x |
код | Код | Код | Код | |||
секунды | 1599 г. | 1468 | 942 | 894 | 545 | 193 |
память МБ | 7199 | 7059 | 6459 | 5443 | ||
% сохранено | 1,94 | 10.28 | 24.39 |
2 Т4 ДДП | Обнимающее лицо | Вспышка внимания | Неленивый Открытый | Неленивый Равный | Неленивый Про | Неленивый Макс |
---|---|---|---|---|---|---|
Альпака | 1x | 0,99x | 4,95x | 4,44x | 7,28x | 20,61x |
код | Код | Код | ||||
секунды | 9882 | 9946 | 1996 год | 2227 | 1357 | 480 |
память МБ | 9176 | 9128 | 6904 | 6782 | ||
% сохранено | 0,52 | 24.76 | 26.09 |
Одна Tesla T4 в Google Colab bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10
Система | графический процессор | Альпака (52К) | ЛАИОН ОИГ (210К) | Открытый помощник (10 тыс.) | СлимОрка (518K) |
---|---|---|---|---|---|
Обнимающее лицо | 1 Т4 | 23 часа 15 минут | 56ч 28м | 8ч 38м | 391ч 41м |
Неленивый Открытый | 1 Т4 | 13 часов 7 минут (1,8x) | 31ч 47м (1,8x) | 4 часа 27 минут (1,9x) | 240ч 4м (1,6x) |
Неленивый Про | 1 Т4 | 3 часа 6 минут (7,5x) | 5ч 17м (10,7x) | 1 час 7 минут (7,7x) | 59ч 53м (6,5x) |
Неленивый Макс | 1 Т4 | 2 часа 39 минут (8,8x) | 4 часа 31 минута (12,5x) | 0ч 58м (8,9x) | 51ч 30м (7,6x) |
Пиковое использование памяти
Система | графический процессор | Альпака (52К) | ЛАИОН ОИГ (210К) | Открытый помощник (10 тыс.) | СлимОрка (518K) |
---|---|---|---|---|---|
Обнимающее лицо | 1 Т4 | 7,3 ГБ | 5,9 ГБ | 14,0 ГБ | 13,3 ГБ |
Неленивый Открытый | 1 Т4 | 6,8 ГБ | 5,7 ГБ | 7,8 ГБ | 7,7 ГБ |
Неленивый Про | 1 Т4 | 6,4 ГБ | 6,4 ГБ | 6,4 ГБ | 6,4 ГБ |
Неленивый Макс | 1 Т4 | 11,4 ГБ | 12,4 ГБ | 11,9 ГБ | 14,4 ГБ |
Два Tesla T4 на Kaggle bsz = 2, ga = 4, max_grad_norm = 0.3, num_train_epochs = 1, seed = 3047, lr = 2e-4, wd = 0.01, optim = "adamw_8bit", schedule = "linear", schedule_steps = 10
Система | графический процессор | Альпака (52К) | ЛАИОН ОИГ (210К) | Открытый помощник (10 тыс.) | СлимОрка (518К) * |
---|---|---|---|---|---|
Обнимающее лицо | 2 Т4 | 84 часа 47 минут | 163ч 48м | 30ч 51м | 13:01ч 24м * |
Неленивый Про | 2 Т4 | 3 часа 20 минут (25,4x) | 5ч 43м (28,7х) | 1 час 12 минут (25,7x) | 71ч 40м (18,1x) * |
Неленивый Макс | 2 Т4 | 3 часа 4 минуты (27,6x) | 5ч 14м (31,3х) | 1ч 6м (28,1х) | 54 часа 20 минут (23,9x) * |
Пиковое использование памяти в системе с несколькими графическими процессорами (2 графических процессора)
Система | графический процессор | Альпака (52К) | ЛАИОН ОИГ (210К) | Открытый помощник (10 тыс.) | СлимОрка (518К) * |
---|---|---|---|---|---|
Обнимающее лицо | 2 Т4 | 8,4 ГБ | 6 ГБ | 7,2 ГБ | 5,3 ГБ | 14,3 ГБ | 6,6 ГБ | 10,9 ГБ | 5,9 ГБ * |
Неленивый Про | 2 Т4 | 7,7 ГБ | 4,9 ГБ | 7,5 ГБ | 4,9 ГБ | 8,5 ГБ | 4,9 ГБ | 6,2 ГБ | 4,7 ГБ * |
Неленивый Макс | 2 Т4 | 10,5 ГБ | 5 ГБ | 10,6 ГБ | 5 ГБ | 10,6 ГБ | 5 ГБ | 10,5 ГБ | 5 ГБ * |
Slim Orca bsz=1
для всех тестов, начиная с bsz=2
OOM. Мы можем обработать bsz=2
, но для согласованности мы сравниваем его с bsz=1
.
HuyNguyen хочет сделать RoPE Embeddings на 28% быстрее
RandomInternetPreson для подтверждения поддержки WSL
152334H для экспериментальной поддержки DPO.
atgctg для подсветки синтаксиса