Открыты для сотрудничества с яркими инициативными командами.
info@interactrivemedia.dev
t.me/InteractiveMedia_dev
PyTorch, Hugging Face, Unsloth, Axolotl и другие — что выбрать для быстрого и эффективного обучения 1-7B моделей.
Обучение маленькой модели — это не научное исследование, а инженерная задача. Вам нужны инструменты, которые максимально ускоряют итерации: от подготовки данных до развертывания обученной модели. Вот полный стек, проверенный в бою.
Уровень 1: Фундамент (Библиотеки низкого уровня)
1. PyTorch / TensorFlow
PyTorch — де-факто стандарт для исследований и обучения LLM. Динамический граф, отличная отладка.
TensorFlow — силён в продакшн-пайплайнах, но для современных LLM PyTorch предпочтительнее.
Что использовать: PyTorch. 99% современных моделей и инструментов построены на нём.
2. CUDA / cuDNN
Драйверы и библиотеки для NVIDIA GPU. Без них обучение на GPU невозможно.
Важно: Всегда используйте совместимые версии PyTorch + CUDA.
Уровень 2: Фреймворки для трансформеров (Основное оружие)
1. Hugging Face Transformers — КОРОЛЬ
Что это: Библиотека с тысячами предобученных моделей и готовыми кодами для обучения.
Ключевые возможности:
from transformers import AutoModelForCausalLM , AutoTokenizer , TrainingArguments model = AutoModelForCausalLM . from_pretrained ( "microsoft/Phi-3-mini" ) tokenizer = AutoTokenizer . from_pretrained ( "microsoft/Phi-3-mini" ) # Готовые Trainer для обучения training_args = TrainingArguments ( output_dir = "./results" , num_train_epochs = 3 ) trainer = Trainer ( model = model , args = training_args , train_dataset = dataset )
Почему обязательно: Стандарт индустрии. Поддержка почти всех моделей.
2. PEFT (Parameter-Efficient Fine-Tuning) — для эффективного обучения
Что это: Методы дообучения только маленькой части параметров (LoRA, QLoRA, AdaLoRA).
Как использовать:
from peft import LoraConfig , get_peft_model lora_config = LoraConfig ( r = 16 , lora_alpha = 32 , target_modules = [ "q_proj" , "v_proj" ] ) model = get_peft_model ( model , lora_config ) # Теперь обучаются только 1-2% параметров!
Экономия памяти: В 3-5 раз меньше VRAM.
Совет: Всегда начинайте с PEFT для маленьких моделей.
Уровень 3: Высокоуровневые фреймворки (Ускорение разработки)
1. TRL (Transformer Reinforcement Learning)
Для чего: Для RLHF (обучение с подкреплением) и SFT (Supervised Fine-Tuning).
Особенно полезен: SFTTrainer — оптимизированный тренер для instruction tuning.
from trl import SFTTrainer trainer = SFTTrainer ( model = model , train_dataset = dataset , dataset_text_field = "text" , max_seq_length = 1024 )
Когда использовать: Когда нужен красивый и современный пайплайн обучения.
2. Axolotl
Что это: Надстройка над Transformers с готовыми конфигами YAML для обучения.
Философия: "Обучение через конфигурационный файл".
Пример конфига config.yml:
base_model : microsoft/Phi - 3 - mini - 4k - instruct model_type : AutoModelForCausalLM tokenizer_type : AutoTokenizer datasets : - path : my_data.jsonl type : json field : text lora_r : 16 lora_alpha : 32 lora_target_modules : [ "q_proj" , "v_proj" ] train_on_inputs : false sequence_len : 2048
Запуск: accelerate launch -m axolotl.cli.train config.yml
Преимущество: Не нужно писать код обучения. Идеально для воспроизводимости.
3. Unsloth — САМЫЙ БЫСТРЫЙ ВАРИАНТ
Что это: Оптимизированная версия стандартных библиотек с ускорением до 2x.
Как использовать:
from unsloth import FastLanguageModel model , tokenizer = FastLanguageModel . from_pretrained ( model_name = "unsloth/Phi-3-mini" , max_seq_length = 2048 , dtype = None , # Автовыбор float16 или bfloat16 load_in_4bit = True , # Квантование 4-bit для экономии памяти ) model = FastLanguageModel . get_peft_model ( model , r = 16 , target_modules = [ "q_proj" , "v_proj" ] )
Результат: Обучение в 2 раза быстрее с тем же качеством.
Когда использовать: Всегда, когда важна скорость. Особенно для экспериментов.
Уровень 4: Оптимизация памяти и скорости
1. bitsandbytes — 8-bit и 4-bit квантование
Что делает: Позволяет загружать большие модели в маленькую VRAM.
Использование:
from transformers import BitsAndBytesConfig bnb_config = BitsAndBytesConfig ( load_in_4bit = True , bnb_4bit_quant_type = "nf4" , # Нормализованное 4-bit bnb_4bit_compute_dtype = torch . bfloat16 ) model = AutoModelForCausalLM . from_pretrained ( "microsoft/Phi-3-mini" , quantization_config = bnb_config # Модель загружается в 4-bit! )
Результат: Модель 7B помещается в 6GB VRAM вместо 14GB.
2. Flash Attention 2
Что это: Оптимизированная реализация механизма внимания.
Ускорение: До 2x для длинных контекстов.
Установка: pip install flash-attn --no-build-isolation
Автоматически используется в Unsloth и современных моделях.
3. DeepSpeed (от Microsoft)
Для чего: Распределённое обучение на нескольких GPU, оптимизация памяти.
Особенно полезен: Zero-3 — разделение параметров модели между GPU.
Использование через конфиг:
{ "fp16" : { "enabled" : true }, "zero_optimization" : { "stage" : 3 }, "train_batch_size" : "auto" }
Когда использовать: Когда модель не помещается в один GPU.
Уровень 5: Подготовка данных
1. Datasets (от Hugging Face)
Что это: Удобная работа с датасетами.
from datasets import load_dataset dataset = load_dataset ( "json" , data_files = "data.jsonl" ) dataset = dataset . map ( tokenize_function , batched = True ) dataset = dataset . train_test_split ( test_size = 0.1 )
2. Dataloaders с оптимизациями
Ускорение загрузки: num_workers в DataLoader.
Совет: Используйте fused операции на GPU.
Уровень 6: Мониторинг и визуализация
1. Weights & Biases (W&B) / TensorBoard
W&B: Облачное решение с крутыми фичами.
import wandb wandb . init ( project = "phi3-finetuning" ) training_args = TrainingArguments ( report_to = "wandb" , # Автоматическая отправка метрик )
TensorBoard: Локальное, от Google.
2. MLflow
Для чего: Трекинг экспериментов, версионирование моделей.
Особенно полезен: В продакшн-пайплайнах.
Практический пайплайн обучения маленькой модели:
Шаг 1: Подготовка среды
# Создаём виртуальное окружение python -m venv llm_train source llm_train/bin/activate # или llm_train\Scripts\activate на Windows # Ставим основные зависимости pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install transformers datasets accelerate peft trl pip install unsloth # Для ускорения pip install wandb # Для мониторинга
Шаг 2: Подготовка данных
import json from datasets import Dataset # Загрузка данных with open ( "ontology_data.jsonl" , "r" ) as f : data = [ json . loads ( line ) for line in f ] # Преобразование в формат инструкция-ответ formatted_data = [] for item in data : formatted_data . append ({ "text" : f"<|system|>\nТы — эксперт по онтологии.\n<|user|>\n { item [ 'question' ]} \n<|assistant|>\n { item [ 'answer' ]} " }) dataset = Dataset . from_list ( formatted_data ) dataset . save_to_disk ( "./train_data" )
Шаг 3: Обучение с Unsloth (самый быстрый способ)
from unsloth import FastLanguageModel , is_bfloat16_supported import torch from trl import SFTTrainer from transformers import TrainingArguments # 1. Загрузка модели с 4-bit квантованием model , tokenizer = FastLanguageModel . from_pretrained ( model_name = "unsloth/Phi-3-mini" , max_seq_length = 2048 , dtype = torch . bfloat16 if is_bfloat16_supported () else torch . float16 , load_in_4bit = True , ) # 2. Добавление LoRA адаптеров model = FastLanguageModel . get_peft_model