Дешёвые GPU для тонкой настройки больших моделей: Тактики, сервисы, экономия | AiManual
AiManual Logo Ai / Manual.
12 Янв 2026 Гайд

Дешёвые GPU для тонкой настройки 120B моделей: Тактика выживания, когда счёт идёт на тысячи

Практическое руководство по аренде дешёвых GPU (H100, A100) для тонкой настройки моделей на 120B параметров. Обзор vast.ai, тактики фильтрации датасета, экономи

Зачем платить больше? Реальная математика боли

Представьте: вам нужно сделать тонкую настройку Llama 3.1 405B. Или Mixtral 8x22B. Или вашей собственной архитектуры на 120 миллиардов параметров. Вы открываете AWS, видите $8 в час за H100, умножаете на 72 часа обучения. 576 долларов. И это если повезёт, и обучение не упадёт на 68-м часу из-за какой-нибудь ерунды.

А теперь плохие новости: для 120B модели одной H100 мало. Нужно минимум 4. Считаем: $32 в час. 72 часа. 2304 доллара. За один эксперимент.

Стандартный подход "арендуй у облачного гиганта и молись" здесь не работает. Это путь к банкротству или к разговору с CFO, который спросит: "И что мы получили за эти $2300?"

Рынок GPU-аренды: дикий запад, где скидки прячутся в углах

После того как DeepInfra поднял цены, многие думают, что альтернатив нет. Это ложь. Альтернативы есть, но их нужно искать с фонарём.

Основная проблема не в том, что GPU дорогие. Проблема в том, что вы платите за них неэффективно.

1 Тактика первая: Игра на опережение (или как не платить за простаивающие карты)

vast.ai — это не просто маркетплейс. Это биржа, где цена определяется спросом и предложением. И здесь работает правило: ночью дешевле. В выходные дешевле. Когда Америка спит, а Европа ещё не проснулась — именно тогда цены падают на 30-40%.

СервисH100 80GB (пик)H100 80GB (ночь/вых)Минималка
vast.ai (спотовый)$4.50-$5.50/час$2.80-$3.50/час1 час
Runpod (спотовый)$4.20/час$3.80/час1 час
TensorDock$3.90/час$3.90/час1 час (но часто нет в наличии)

Практический совет: настройте скрипт, который мониторит цены на vast.ai и запускает инстанс, когда стоимость падает ниже вашего порога. Вот базовый пример:

import requests
import time
from datetime import datetime

def find_cheap_gpu(min_gpu_memory=80, max_price=3.5):
    url = "https://vast.ai/api/v0/bundles/"
    params = {
        'q': '{\"verified\":{\"eq\":true},\"external\":{\"eq\":false},\"rentable\":{\"eq\":true},\"gpu_name\":{\"eq\":\"H100 80GB\"}}'
    }
    
    while True:
        response = requests.get(url, params=params)
        data = response.json()
        
        for offer in data.get('offers', []):
            if offer['dph_total'] <= max_price:
                print(f"Найдена дешёвая карта: ${offer['dph_total']}/час")
                # Здесь логика запуска инстанса
                return offer['id']
        
        print(f"[{datetime.now()}] Ничего дешёвого. Ждём 5 минут...")
        time.sleep(300)  # Проверяем каждые 5 минут

Важно: vast.ai берёт комиссию 20% сверх указанной цены. Если в интерфейсе $3.00/час, реальная стоимость будет $3.60. Всегда умножайте на 1.2 при планировании бюджета.

2 Тактика вторая: А нужен ли именно H100? (Спойлер: не всегда)

H100 быстрее A100 в 2-3 раза для обучения. Но он и дороже в 2-3 раза. А теперь вопрос: что дешевле — 72 часа на A100 или 24 часа на H100?

Считаем:
• 4×A100 по $1.20/час = $4.80/час × 72 часа = $345.60
• 4×H100 по $3.50/час = $14.00/час × 24 часа = $336.00

Разница всего $9.60. Но! Это в идеальном мире, где ваш код использует 100% возможностей H100. В реальности ускорение редко достигает теоретического максимума. Особенно если вы не оптимизировали под Tensor Cores 8-го поколения.

💡
Перед тем как гнаться за H100, запустите бенчмарк на одной A100. Если ускорение меньше 2.5× — возможно, дешевле арендовать больше A100 на большее время.

Самый большой секрет экономии: Не тренировать мусор

Вот вам цифра, от которой волосы встают дыбом: 60% стоимости тонкой настройки — это подготовка данных и отладка. Не обучение. Подготовка.

Вы загружаете датасет на 100GB, платите за GPU, который его процессит, платите за CPU, который его парсит, платите за дисковое пространство. И только потом начинается обучение.

3 Фильтрация датасета: Как убрать 80% хлама до того, как он попадёт на GPU

Классическая ошибка: взять датасет, скормить его модели, надеяться на лучшее. Правильный подход: сначала оценить качество данных на маленькой модели.

Шаг 1: Берите маленькую модель (например, Llama 3.1 8B) и делайте эмбеддинги для всего датасета. На CPU. Это дёшево.

from sentence_transformers import SentenceTransformer
import numpy as np

# Загружаем маленькую, но эффективную модель для эмбеддингов
model = SentenceTransformer('all-MiniLM-L6-v2')  # Всего 80MB

# Читаем датасет
with open('your_dataset.jsonl', 'r') as f:
    samples = [json.loads(line) for line in f]

# Генерируем эмбеддинги для всех примеров
embeddings = model.encode([s['text'] for s in samples], show_progress_bar=True)

# Кластеризуем, чтобы найти повторяющиеся паттерны
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=100, random_state=42)
cluster_labels = kmeans.fit_predict(embeddings)

Шаг 2: Анализируйте кластеры. Если 90% ваших данных падают в 10% кластеров — у вас проблема с разнообразием. Вы платите за обработку одних и тех же паттернов снова и снова.

Шаг 3: Используйте перплексию маленькой модели как фильтр. Если маленькая модель не понимает пример, большая тоже будет бороться.

Не делайте так: арендовать 4×H100 и начать процессить 500GB данных на них. Сначала отфильтруйте данные на ноутбуке. Или на дешёвом CPU-инстансе за $0.03/час.

Технические нюансы, которые съедают ваш бюджет

Проблема: Ваш GPU задыхается от I/O

Вы арендовали H100 за $4/час, но он загружен на 15%. Почему? Потому что данные не успевают поступать из памяти. NVMe диск в инстансе — это хорошо. Но если он shared между десятком виртуалок — это плохо.

Решение: Кэшируйте данные в GPU-памяти. Звучит очевидно, но 90% людей этого не делают.

# ПЛОХО: Читаем с диска для каждого батча
for batch in dataloader:
    data = batch.to(device)  # Медленно!
    loss = model(data)
    
# ХОРОШО: Заранее загружаем всё, что помещается
max_gpu_samples = 1000  # Сколько примеров влазят в память
gpu_cache = []
for i in range(0, len(dataset), max_gpu_samples):
    batch = dataset[i:i+max_gpu_samples].to(device)
    gpu_cache.append(batch)

# Теперь обучение летает
for batch in gpu_cache:
    loss = model(batch)  # Данные уже в GPU!

Проблема: Вы платите за время загрузки модели

Загрузка Llama 3.1 70B в память 4×H100 занимает 5-7 минут. По $4/час за карту — это $2.33 только за загрузку. Если вы перезапускаете обучение 10 раз в день — $23.30 впустую.

Решение: Используйте checkpoints. Или ещё лучше — арендуйте инстанс с предзагруженными весами. Некоторые провайдеры (например, OVHcloud) предлагают образы с популярными моделями уже загруженными.

А что насчёт B200? Стоит ли гоняться за новинкой?

NVIDIA B200 — это монстр. 192GB HBM3e памяти. Теоретически идеально для 120B моделей. Практически — дороже H100 в 2.5 раза, а доступность близка к нулю.

На момент написания:
• H100 80GB: $3.50-$5.50/час на вторичном рынке
• B200 192GB: $9.50-$12.00/час, если найдёте

Математика простая: B200 стоит как 3×H100. Но 3×H100 дают вам 240GB памяти (в распределённом режиме) и больше вычислительной мощности. Вывод: пока B200 — это игрушка для корпораций с безлимитным бюджетом.

Локальная альтернатива: Собираем кластер из б/у карт

Если вы делаете тонкую настройку регулярно — возможно, дешевле собрать своё железо. После прочтения статьи про сборку ПК за копейки многие задумываются о локальном решении.

Считаем:
• 4×RTX 4090 (24GB каждая) = $6000
• Электричество, охлаждение, риски = $1000 в год

Окупаемость: при арендной ставке $10/час (за 4 карты) — 700 часов работы. Это 29 дней непрерывного обучения. Если вы тренируете больше месяца в году — своё железо выгоднее.

Но помните: своё железо требует времени на настройку. И когда выйдет следующее поколение карт, ваши 4090 обесценятся. Аренда — это операционные расходы, покупка — капитальные.

Чеклист перед запуском дорогого обучения

  1. Запустите один эпох на 1% данных — убедитесь, что loss падает. Если нет — не тратьте деньги на полный датасет.
  2. Измерьте utilization GPU — если ниже 70%, ищите bottleneck (чаще всего это data loading).
  3. Проверьте, что используете смешанную точность (AMP) — это ускорит обучение в 2-3 раза практически бесплатно.
  4. Настройте gradient checkpointing — для 120B моделей это может уменьшить потребление памяти в 3 раза ценой 20% производительности.
  5. Используйте LoRA или QLoRA — тонкая настройка только части параметров вместо всех 120 миллиардов.

Финальный расчёт: Реальный кейс тонкой настройки 120B модели

Задача: тонкая настройка на датасете 50GB текста.
Наивный подход:
1. Аренда 4×H100 по $4.50/час = $18/час
2. Подготовка данных на GPU: 5 часов = $90
3. Обучение: 3 эпохи, 48 часов = $864
4. Отладка и перезапуски: +20% = $172.80
Итого: $1126.80

Умный подход:
1. Фильтрация датасета на CPU-инстансе ($0.10/час, 10 часов) = $1.00
2. Уменьшение датасета до 20GB после фильтрации
3. Аренда 4×A100 по $1.30/час (ночью) = $5.20/час
4. Обучение: 3 эпохи, 72 часа = $374.40
5. Использование LoRA: сокращение времени обучения на 40%
Итого: $375.40

Экономия: 66.7%. Или 751 доллар, который можно потратить на следующий эксперимент.

Что будет дальше? Прогноз на 2025

Цены на GPU аренду будут падать. Не потому, что NVIDIA станет добрее, а потому, что на рынок выйдут китайские аналоги (Biren, Iluvatar) и предложение превысит спрос. Но это произойдёт не раньше середины 2025.

До тех пор ваше главное оружие — не самые дешёвые карты, а самые эффективные пайплайны. Тот, кто умеет готовить данные на CPU и обучать на GPU, выживет. Остальные разорятся.

P.S. Если вы всё ещё платите $8/час за H100 — остановитесь. Прямо сейчас. Откройте vast.ai, настройте алерт на $3.50, и идите пить кофе. Когда карта найдётся — вы сэкономите достаточно, чтобы купить себе ещё чашку.