В 2026 году, чтобы довести fine-tuning LLM до продакшена, в комментариях обычно два пути: купить б/у RTX 4090 или ждать A100 в консоли HPC. Оба варианта обучают — но к третьей неделе многие понимают: счёт раздувается не из-за медленного GPU, а из-за простоя — данные не подготовлены, checkpoints не на object storage, Spot пересоздали и начали сначала. Этот гайд проверяет, как при дефиците GPU сочетать эластичную аренду и разделение пайплайна, чтобы перейти от «месячного абонемента» к оплате за эффективные часы обучения.
Разницу в цене редко делает пиковый TFLOPS одной карты. Решают утилизация, восстановление после прерывания и разделение control plane и training plane. Solo-разработчику и маленькой команде не нужен кластер на 10 000 GPU; нужен стабильный узел оркестрации, несколько GPU-worker'ов почасово и пайплайн, который замыкает LoRA-эксперимент за 48 часов.
Почему fine-tuning требует больше планирования, чем инференс
Инференс оплачивается по API «сколько использовал»; fine-tuning — batch, долгий и подверженный сбоям workload. LoRA 7B на A10 может занять 6–12 часов — до и после идут очистка данных, tokenize, eval, слияние весов и smoke деплоя. Всё на одной GPU — эффективная утилизация часто <40 %. Жалобы «облачный GPU дорогой» часто означают смешение data engineering и обучения в одном тарифе.
Второе давление: предложение GPU в 2024–2026 скачет. On-demand у hyperscaler'ов непредсказуем; Spot/preemptible дёшев, но пересоздаётся. Локальная б/у карта выглядит как разовая покупка — без учёта электричества, охлаждения, драйверов и multi-GPU. В эпоха AI: мощный ПК — локально или в облаке мы подчёркиваем: граница задачи определяет, где живёт compute — fine-tuning типичный переносимый в ЦОД batch.
Третье давление — эластичность. Эксперимент: 1×24 ГБ; валидация: 2×80 ГБ; перед продом — CPU для квантизации. Фиксированная рабочая станция простаивает 70 % времени; почасовая аренда сглаживает пики в предсказуемый лабораторный бюджет.
Четыре слоя удалённого compute: не всё в GPU
Смотрите на fine-tuning как на конвейер, а не одну Jupyter-сессию. Типичное четырёхслойное разделение 2026 для solo и маленьких команд:
- Control plane (оркестрация): Git, трекинг экспериментов, scheduler, SSH-bastion. GPU не нужен, но нужен стабильный uptime и диск под код/конфиг. Недорогая облачная ВМ или удалённый Mac/Linux-консольный узел.
- Data plane: скачать базовую модель, очистить JSONL/Parquet, tokenize, собрать dataset. CPU + канал + object storage (S3/R2/OSS) выигрывает у GPU; не заставляйте A100 ждать диск.
- Training plane: backward LoRA / QLoRA / full fine-tune. Здесь облачный GPU-узел почасово с NVMe под checkpoints.
- Delivery plane: слияние LoRA, квантизация GGUF, smoke инференса, push в Hugging Face Hub или внутренний registry. CPU или Apple Silicon с MLX для небольших моделей.
Артефакты передаются через object storage + версионированные пути, не scp туда-сюда. Узел обучения — stateless worker: упал — другая машина с последнего checkpoint.
Грубая градация GPU
| Уровень | VRAM | Типичный сценарий | Стратегия аренды |
|---|---|---|---|
| Старт | 16–24 ГБ | 7B QLoRA, малые датасеты | Spot почасово; ночные прогоны |
| Основной | 40–48 ГБ | 7B full / 13B LoRA, длинный контекст | On-demand + авто-выключение |
| Продвинутый | 80 ГБ | 34B LoRA, multi-GPU data parallel | Короткий burst; затем освободить |
| Команда | Multi-GPU NVLink | 70B+, длинные последовательности full FT | Reserved block + очередь |
Sweet spot для solo: одна карта 24–48 ГБ + QLoRA. С Hugging Face PEFT большинство доменных адаптаций помещается в consumer VRAM. Full fine-tune — не значок профессионализма, а бюджетное решение; до валидации use case LoRA — разумный default.
Облачные GPU-платформы: четыре входа, одна таблица
Четыре доминирующие модели аренды различаются входом, границей исполнения и ops-ответственностью — не маркетингом «на 30 % быстрее».
| Тип | Вход | Исполнение | Контекст / экосистема | Целевая аудитория |
|---|---|---|---|---|
| Hyperscaler (AWS/GCP/Azure) | Консоль + IAM + VPC | Full stack, multi-region, compliance | Интеграция с существующим облаком | Облачный аккаунт, аудит, приватные сети |
| GPU-маркетплейс (RunPod / Vast.ai и др.) | Web UI + API + шаблоны | Почасово, community-образы, Spot | PyTorch-контейнеры из коробки | Solo-разработчик, экспериментальный FT |
| Managed training (SageMaker / Vertex) | SDK / pipeline | Auto-scale, встроенный tracking | Привязка к MLOps-стеку | Маленькая команда, мало ops |
| Self-hosted + эластичные workers | SSH + Slurm / своя очередь | Полный контроль, Spot + bare metal | Свой data pipeline | Опытные ops, прерываемые задачи |
Первый fine-tune: GPU-маркетплейс + PyTorch-шаблон — обычно кратчайший путь, SSH на CUDA за 30 минут. При существующем счёте AWS/GCP важнее стратегия Spot, пропускная способность EBS, bandwidth checkpoint→S3, чем почасовая ставка GPU.
Модель стоимости: не только «сколько в час»
Выгодная аренда считает Effective Training Hour (ETH), а не ценник:
ETH ≈ (ставка GPU × wall-clock + storage + egress) ÷ (эффективные часы обучения × утилизация GPU)
Пример: A10 Spot $0,6/ч кажется дешевле A100 on-demand $2,5/ч — но Spot пересоздают каждые 2 ч без checkpoint: из 10 ч wall-clock — 4 ч обучения. Наоборот: фиксированные 24 ГБ, данные pre-tokenized на NVMe, --resume_from_checkpoint — выше ставка, ниже итог.
Не забывайте storage: база 70B + checkpoints = сотни ГБ. Object storage дёшев, но bandwidth чтения ограничен; обучение с NVMe-кэшем + холодным архивом. Та же логика, что в локально vs API по стоимости — тратить там, где рождаются градиенты.
Матрица решений: что арендовать и на сколько
| Цель | Размер модели | Рекомендуемый GPU | Режим аренды |
|---|---|---|---|
| Доменный тон / поддержка | 7B QLoRA | 1× 24 ГБ | Spot ночью 6–8 ч; CPU для данных |
| Дополнение кода / формат tools | 7B–13B LoRA | 1× 40 ГБ | On-demand + checkpoint каждые 500 steps |
| Мультиязычность / длинная RAG-база | 13B–34B | 1–2× 80 ГБ | Burst 2–3 дня; освободить после eval |
| Командные эксперименты + CI | Параллельные runs | Очередь + N workers | 1 control + N GPU; см. self-hosted runner |
Правило: Spot на эксперименте, on-demand на валидации, без GPU на delivery. Два вечера обучения в неделю при месячной карте = оплата 70 % простоя.
Три рекомендуемых стека
Стек A: быстрый эксперимент (минимальный порог)
Консоль на ноутбуке + GPU-маркетплейс 24 ГБ Spot + Hugging Face PEFT + W&B free. Данные чистят локально, загрузка в object storage; community PyTorch-шаблон, accelerate для QLoRA. Merge, smoke на CPU в облаке, опционально Ollama локально.
Стек B: восстанавливаемый пайплайн (рекомендуется)
Удалённый Linux/Mac control plane + S3-совместимое хранилище + 1–2 on-demand GPU + GitHub Actions. Tag датасета запускает обучение; обработка прерывания Spot и auto-resume в скрипте. Control plane — малая инстанция или Cloud Mac для оркестрации и подписи — как консоль + worker для Agent-хостов.
Стек C: лёгкий Apple Silicon + облачный пик
Mac mini M4 24 ГБ для MLX LoRA 3B–7B + облако 80 ГБ для крупных сравнений. Сначала формат и eval на Mac, потом GPU worker — без пустого burn в облаке. Для продуктовых команд: доказать направление, затем compute.
Типичные ошибки: хватит одного раза
- Ошибка 1: сразу full fine-tune — LoRA/QLoRA часто достаточно; full FT — бюджет, не значок.
- Ошибка 2: мыть данные на GPU — tokenize/dedup на CPU или batch job; минуты GPU дороги.
- Ошибка 3: checkpoint только локально — пересоздание Spot = потеря данных; object storage каждые N steps.
- Ошибка 4: игнорировать регион — трансокеанская передача может длиться дольше обучения; регион = данные.
- Ошибка 5: нет авто-выключения — закрыть Jupyter ≠ остановить инстанс; cron или cloud API после 30 мин idle.
- Ошибка 6: FT-хост как dev-машина — как в Agent-кластере: обучение = выделенный worker, не IDE + Zoom + браузер.
Семь шагов к замкнутому циклу fine-tuning
- Зафиксировать задачу и базовую модель: формат ввода/вывода, метрики (accuracy / BLEU / выборочная проверка); open-source база 7B (Llama, Qwen, Mistral).
- Подготовить data plane: clean → dedup → train/eval → tokenize на диск; versioned object storage.
- Арендовать GPU worker: тот же регион, что данные, NVMe, 24–48 ГБ; официальный или community CUDA-образ.
- Настроить QLoRA: PEFT + Transformers Trainer;
gradient_checkpointing, batch size,max_seq_length. - Обучение + resume: checkpoint каждые 200–500 steps в object storage; после пересоздания Spot —
--resume_from_checkpoint. - Eval и сравнение: фиксированный eval set; base vs LoRA; записать эффективные часы и стоимость.
- Shutdown и delivery: merge, опциональная квантизация, Hub/registry; подтвердить уничтожение GPU-инстанса.
# Переменные: данные и вывод через mount object storage export MODEL_NAME="Qwen/Qwen2.5-7B-Instruct" export DATA_PATH="/mnt/s3/datasets/v3/train.jsonl" export OUTPUT_DIR="/mnt/nvme/checkpoints/run-$(date +%Y%m%d-%H%M)" accelerate launch train_lora.py \ --model_name_or_path "$MODEL_NAME" \ --dataset_path "$DATA_PATH" \ --output_dir "$OUTPUT_DIR" \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 8 \ --max_seq_length 4096 \ --lora_r 64 --lora_alpha 128 \ --save_steps 250 \ --save_total_limit 3 \ --resume_from_checkpoint auto # После обучения: холодный архив и остановка aws s3 sync "$OUTPUT_DIR" s3://my-ml-artifacts/lora-run/ --only-show-errors curl -X POST "https://api.runpod.io/.../stop" # или облачный аналог
Эталонная топология: постоянный control + эластичный GPU
Итог
В 2026 fine-tuning LLM решается не «добычей A100», а эластичным compute, который сжимает цикл и снижает ETH. Default: валидация QLoRA → versioned данные и checkpoints в object storage → GPU worker почасово → выключить. Четыре слоя разделены — прерывание Spot не катастрофа.
Колеблетесь между локальным и облаком? Один вопрос: на прошлой неделе GPU был >50 % времени в эффективном обучении? Если нет — меняйте пайплайн, не карту. В эпоху дефицита GPU важнее арендовать, выключать и восстанавливать, чем торговаться за ставку.
FAQ
В1. LoRA или full fine-tune?
До валидации бизнеса — LoRA/QLoRA. Full FT при больших данных, сильном domain shift и недельном multi-GPU бюджете. Для адаптации 7B LoRA обычно хватает.
В2. Стоит ли Spot?
Да, при resume через checkpoint. Каждые 200–500 steps в object storage; resume_from_checkpoint в скрипте. Без recovery Spot дёшев только на бумаге.
В3. Что помещается в 24 ГБ?
7B QLoRA стабильно; 13B с агрессивной квантизацией и короче последовательности. Маленький batch? Gradient accumulation, не слепое добавление карт.
В4. Купить карту или арендовать облако?
Считайте годовые эффективные часы обучения. Меньше ~500 ч/год — облако почти всегда выгоднее; тип карты меняете по проекту. Подробнее: локально vs облако.
В5. Заменит ли Mac облачный GPU?
Малые эксперименты — да, основное обучение — нет. M4 24 ГБ с MLX для LoRA 3B–7B идеален для данных и eval; 34B+ и командный параллелизм — cloud GPU worker. Mac — для control и delivery.
В6. Что такое «эластичное масштабирование»?
Больше GPU workers при росте очереди, shutdown после задач. Для solo часто ручное включение/выключение почасово + скрипт авто-stop — сначала утилизация, потом Kubernetes.
Control plane и delivery требуют стабильных удалённых узлов
GPU для fine-tuning арендуется почасово — Git-оркестрация, скрипты данных, CI-триггеры и подписанная delivery нуждаются в хосте без крышки и сна. Hashvps Cloud Mac mini M4 подходит как control plane или узел Apple Silicon-валидации рядом с cloud GPU workers.
Собираете AI-лабораторию в 2026? Начните со стабильной удалённой консоли — Тарифы и цены — и оставьте GPU-бюджет на часы с реальными градиентами.