Когда 128K токенов — это смешно
Помните те времена, когда 4K контекста казалось много? Потом появились модели на 32K, потом на 128K. А сейчас, в 2026 году, даже 1 миллион токенов — не предел. Проблема в том, что обычное внимание работает за O(L²), и на 1 миллионе токенов ваша видеокарта просто сгорит. Буквально.
Что там под капотом?
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)
Оптимизация памяти: без этого никуда
Даже с субквадратичным вниманием 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:
- Fine-tuning почти невозможен. Механизм субквадратичного внимания ломает большинство методов лоры. PEFT работает через раз. Если нужно дообучить под свою задачу — готовьтесь к полному fine-tune, что требует космических ресурсов.
- Контекстное окно жестко зашито. Нельзя динамически менять window_size и global_stride после загрузки модели. Хотите с 1M перейти на 10M? Перезагружайте с новым конфигом.
- Нет поддержки в популярных обертках. 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 попробовать…»