Superlinear: запуск модели с субквадратичным вниманием 10M токенов | AiManual
AiManual Logo Ai / Manual.
06 Фев 2026 Инструмент

Superlinear: практический гайд по запуску модели с субквадратичным вниманием для контекста 10M токенов

Пошаговое руководство по запуску Superlinear — модели с субквадратичным вниманием O(L^(3/2)) для контекста до 10 миллионов токенов на одном GPU.

Когда 128K токенов — это смешно

Помните те времена, когда 4K контекста казалось много? Потом появились модели на 32K, потом на 128K. А сейчас, в 2026 году, даже 1 миллион токенов — не предел. Проблема в том, что обычное внимание работает за O(L²), и на 1 миллионе токенов ваша видеокарта просто сгорит. Буквально.

💡
Superlinear — это open-source модель с субквадратичным вниманием, которая работает за O(L^(3/2)). На практике это значит: 1 миллион токенов обрабатывается со скоростью 100 токенов в секунду на одной RTX 4090. И да, официально поддерживает до 10 миллионов токенов.

Что там под капотом?

Superlinear 2.1 (самая новая версия на февраль 2026) использует гибридный механизм внимания: локальное окно + глобальные страйды. Вместо того чтобы считать внимание между всеми токенами, модель смотрит на соседей и через каждые N токенов делает «прыжок».

Модель Параметры Макс. контекст Скорость @ 1M VRAM @ 1M
Superlinear 2.1 Base 7B 10M токенов ~100 tok/s ~24 GB
Superlinear 2.1 Chat 13B 10M токенов ~65 tok/s ~32 GB
GPT-4o 2026 (для сравнения) ~1.8T 128K N/A (API) N/A

Цифры выглядят нереально? Да, именно так. Но здесь есть нюанс: качество на очень длинных контекстах. Superlinear отлично запоминает факты из начала контекста, но иногда «теряет» логические связи между далекими частями. Для аналитики документов — идеально. Для написания романа по главам — уже сложнее.

Что нужно для запуска?

  • Видеокарта с 24+ GB VRAM для 7B модели (RTX 4090, RTX 5090, или что-то из нашего гида по видеокартам 2026)
  • Python 3.11+ (3.12 иногда глючит с torch)
  • CUDA 12.4 или новее
  • Минимум 64 GB оперативной памяти для работы с контекстом 1M+
  • Место на диске: ~30 GB для моделей и кэша

Не пытайтесь запустить 10M контекст на 16 GB RAM. Система просто упадет. Если хотите работать с действительно огромными контекстами, посмотрите наш материал про 128GB оперативки.

Установка: проще, чем кажется

1 Ставим зависимости

Первое, что сломает вам день — это версия PyTorch. Superlinear 2.1 требует torch 2.4.1+ с поддержкой flash attention 3. Не ставьте через pip install torch — почти гарантированно получите не ту версию.

# Создаем виртуальное окружение
python -m venv superlinear_env
source superlinear_env/bin/activate  # или superlinear_env\Scripts\activate на Windows

# Официальный способ установки PyTorch для Superlinear
pip install torch==2.4.1 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124

# Остальные зависимости
pip install transformers==4.45.0 accelerate==0.30.0
pip install superlinear-attention==2.1.3  # самая новая на февраль 2026

2 Загружаем модель

Авторы выложили модели на Hugging Face, но есть нюанс: веса в формате safetensors с специальной разметкой для субквадратичного внимания. Обычный AutoModelForCausalLM не подойдет.

from superlinear import SuperlinearForCausalLM, SuperlinearConfig
from transformers import AutoTokenizer
import torch

# Конфигурация для 1M контекста
config = SuperlinearConfig.from_pretrained(
    "superlinear-ai/Superlinear-2.1-7B-Base",
    max_position_embeddings=1_048_576,  # 1M токенов
    window_size=4096,
    global_stride=256
)

model = SuperlinearForCausalLM.from_pretrained(
    "superlinear-ai/Superlinear-2.1-7B-Base",
    config=config,
    torch_dtype=torch.float16,
    device_map="auto"
)

tokenizer = AutoTokenizer.from_pretrained("superlinear-ai/Superlinear-2.1-7B-Base")

Не используйте device_map="auto" если у вас несколько GPU. Ускорение почти нулевое, а проблем добавится. Лучше явно указать device: .to("cuda:0").

3 Первый запуск и тест

Перед тем как загружать 1000-страничный PDF, проверьте, что все работает на коротком тексте. И да, первая загрузка будет долгой — модель кэширует attention patterns.

# Простой тест
prompt = "Кратко объясни, как работает субквадратичное внимание: "
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=500,
        temperature=0.7,
        do_sample=True,
        pad_token_id=tokenizer.eos_token_id
    )

print(tokenizer.decode(outputs[0], skip_special_tokens=True))

А что с альтернативами?

В 2026 году длинный контекст — это мейнстрим. Но подходы разные:

  • Flash Attention 3 + RoPE расширение: Классика. Берете любую модель (Llama 3.2, Qwen3), расширяете контекст до 256K-1M через динамический NTK. Работает, но качество падает после 512K. И память все равно O(L²).
  • Mamba и SSM-модели: Линейная сложность, но с качеством всегда были вопросы. Mamba 3 (2025) стала лучше, но для кодогенерации и сложного reasoning все равно уступает attention-based моделям.
  • LongRAG и retrieval-подходы: Не увеличивают контекст модели, а просто ищут релевантные куски. Работает для QA, но для задач, где нужен полный контекст (анализ кода, проверка согласованности) — бесполезно.

Superlinear занимает нишу между Mamba и полным вниманием. Скорость почти линейная, качество — близко к полному вниманию. Идеально для:

  • Анализа логов (десятки GB текста)
  • Чтения всей документации проекта за раз
  • Обработки длинных транскрипций встреч
  • Поиска противоречий в юридических документах

Практический пример: анализ кодовой базы

Допустим, у вас есть проект на 500 файлов. Хотите найти все места, где используется устаревший API. Обычные LLM с контекстом 128K загрузят максимум 10-20 файлов. Superlinear — все 500.

import os
from pathlib import Path

# Собираем все Python-файлы
project_path = Path("/путь/к/проекту")
py_files = list(project_path.rglob("*.py"))

# Читаем и конкатенируем с разделителями
context = ""
for i, file_path in enumerate(py_files[:100]):  # первые 100 файлов
    try:
        content = file_path.read_text(encoding='utf-8')
        context += f"\n\n=== Файл {i+1}: {file_path.relative_to(project_path)} ===\n"
        context += content
    except:
        continue

# Токенизируем (осторожно, может быть 500K+ токенов)
tokens = tokenizer.encode(context, truncation=False)
print(f"Токенов: {len(tokens)}")

# Если больше 1M, нужно разбивать на части
if len(tokens) > 1_000_000:
    print("Контекст слишком большой, разбиваем...")
    # Superlinear поддерживает chunked processing
    chunks = [tokens[i:i+500000] for i in range(0, len(tokens), 500000)]
else:
    inputs = tokenizer(context, return_tensors="pt", truncation=False).to(model.device)
💡
Superlinear поддерживает streaming generation для очень длинных ответов. Вместо того чтобы ждать 5 минут генерации 10K токенов, можно получать их по мере готовности. Включите параметр `streamer` в `model.generate()`.

Оптимизация памяти: без этого никуда

Даже с субквадратичным вниманием 1M токенов съедают память. Вот что реально работает:

# 1. Квантование 4-bit через bitsandbytes (экономит ~60% памяти)
from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4"
)

model = SuperlinearForCausalLM.from_pretrained(
    "superlinear-ai/Superlinear-2.1-7B-Base",
    quantization_config=bnb_config,
    device_map="auto"
)

# 2. Offloading слоев на CPU (для очень длинных контекстов)
# В конфиге модели:
config = SuperlinearConfig.from_pretrained(
    "superlinear-ai/Superlinear-2.1-7B-Base",
    offload_layers=[20, 21, 22, 23],  # последние слои на CPU
    # ...
)

# 3. Градиентный чекпоинтинг (если будете дообучать)
torch.autograd.set_detect_anomaly(True)
model.gradient_checkpointing_enable()

Если эти методы не помогают — возможно, ваша задача действительно требует распределения по нескольким GPU. Но для инференса 7B модели с 1M контекста 24 GB VRAM должно хватить.

Чего не хватает?

Superlinear — прорыв, но не панацея. Три проблемы, о которых молчат README:

  1. Fine-tuning почти невозможен. Механизм субквадратичного внимания ломает большинство методов лоры. PEFT работает через раз. Если нужно дообучить под свою задачу — готовьтесь к полному fine-tune, что требует космических ресурсов.
  2. Контекстное окно жестко зашито. Нельзя динамически менять window_size и global_stride после загрузки модели. Хотите с 1M перейти на 10M? Перезагружайте с новым конфигом.
  3. Нет поддержки в популярных обертках. LM Studio, Ollama, llama.cpp — пока не поддерживают Superlinear. Только чистый PyTorch и Hugging Face.

Кому это вообще нужно?

Если вы:

  • Юрист, который анализирует договоры на 500 страниц
  • Разработчик, читающий исходники legacy-проектов
  • Исследователь, работающий с длинными временными рядами
  • Писатель, который хочет, чтобы ИИ помнил все главы книги

Тогда Superlinear — ваш выбор. Если же вам достаточно 128K контекста и хочется простоты установки — берите обычную модель с динамическим NTK.

Не верьте хайпу про «10M контекста для чата». Да, технически можно загрузить всю Википедию в промпт. Но зачем? Человеческий мозг не может проверить ответ на 10 миллионах токенов. Используйте длинный контекст там, где он реально нужен — для анализа, поиска, извлечения информации.

Что будет дальше?

К концу 2026 года субквадратичное внимание станет стандартом для всех моделей от 7B параметров. Уже сейчас в тестах есть Superlinear 3.0 с адаптивным window_size (модель сама решает, как далеко смотреть).

Главный вопрос: когда появится 70B версия с таким же механизмом внимания? Авторы говорят «скоро», но 70B с 1M контекста потребует ~140 GB VRAM. Так что либо ждем квантования в 2-bit, либо учимся работать с моделями через CPU offloading.

А пока — ставьте Superlinear 2.1, тестируйте на своих данных. Первый запуск с 1M контекста вызывает какой-то детский восторг. «Вау, оно действительно работает!». Потом привыкаете. А через месяц уже думаете: «А что, можно было и на 5M попробовать…»