English translation is not available yet. Showing Russian content.

Сравнить архитектуры на reasoning задачах (Mamba vs Transformer vs RWKV vs Hyena)

ТЕХНИЧЕСКОЕ ЗАДАНИЕ: Сравнить архитектуры на reasoning задачах (Mamba vs Transformer vs RWKV vs Hyena)

1. Цель задачи

Провести практическое сравнение четырёх архитектур нейронных сетей — Transformer, Mamba, RWKV, Hyena — на задачах требующих логического вывода (reasoning). Измерить точность, скорость инференса, потребление памяти и способность к обобщению на наборах данных GSM8K, MATH, BBH и CommonsenseQA. Сформулировать рекомендации: для каких типов reasoning‑задач какая архитектура предпочтительнее.

Ключевой результат Таблица с метриками каждой архитектуры на 4‑х бенчмарках и письменное заключение (2–3 стр.) с практическими рекомендациями.


2. Исходные данные

Что нужноОткуда взять
Предобученные моделиHugging Face Hub: transformers, mamba (state-spaces/mamba-130m), RWKV/rwkv-4-169m-pile, hyena (HazyResearch/hyena-small-1b)
Датасеты для reasoningHugging Face datasets: openai/gsm8k, math_dataset, lukaemon/bbh, commonsense_qa
Скрипты инференсаНаписать самостоятельно на базе примеров из документации каждой библиотеки
GPU/CPU для тестовЛокальная машина с CUDA (≥8 GB VRAM) или Google Colab Pro
Среда разработкиPython 3.10+, PyTorch 2.x, Jupyter / VS Code

Если нет реального инструмента — симулируем:

  1. Если модель Mamba не грузится из‑за ограничений памяти, используем версию 130M в float16.
  2. Для Hyena при отсутствии готовой реализации — используем репозиторий HazyResearch/hyena-dna с адаптацией под текст (замена DNA‑tokenizer на GPT‑2 tokenizer).
  3. Если не хватает времени на полный прогон всех бенчмарков, ограничиваемся подмножеством (первые 200 примеров из каждого датасета).

3. Технологический стек

КомпонентИнструментыНазначение
МоделиMamba (state-spaces/mamba-130m), RWKV (RWKV/rwkv-4-169m-pile), Hyena (HazyResearch/hyena-small-1b), Transformer (microsoft/phi-2)Сравниваемые архитектуры
ФреймворкPyTorch 2.1, Hugging Face Transformers, mamba_ssm, rwkv, hyenaЗагрузка моделей и инференс
ТокенизацияGPT-2 tokenizer (для всех, кроме RWKV — свой tokenizer)Унификация входа
Датасетыdatasets от Hugging FaceЗагрузка и предобработка reasoning‑задач
Метрикиevaluate и самописные скриптыAccuracy, F1 (для многовариантных), latency, memory
Профилированиеtorch.cuda.max_memory_allocated, time.perf_counterИзмерение ресурсов
ВизуализацияMatplotlib, SeabornГрафики сравнения
ОтчётMarkdown, LaTeX для таблицИтоговый документ

4. Этапы выполнения

Этап 1: Настройка окружения и загрузка моделей (1.5 часа)

Действия

  1. Клонировать репозитории и установить зависимости:
    pip install torch transformers datasets evaluate mamba-ssm rwkv hyena-dna
    
  2. Загрузить четыре модели в один ноутбук:
    from transformers import AutoModelForCausalLM, AutoTokenizer
    
    # Transformer
    tokenizer = AutoTokenizer.from_pretrained("microsoft/phi-2")
    model_transformer = AutoModelForCausalLM.from_pretrained("microsoft/phi-2", torch_dtype=torch.float16)
    
    # Mamba
    from mamba_ssm.models.mixer_seq_simple import MambaLMHeadModel
    model_mamba = MambaLMHeadModel.from_pretrained("state-spaces/mamba-130m", dtype=torch.float16)
    
    # RWKV
    from rwkv.model import RWKV
    model_rwkv = RWKV(model="RWKV/rwkv-4-169m-pile", strategy="cuda fp16")
    
    # Hyena
    from hyena.HyenaDNA import HyenaDNAPreTrainedModel
    model_hyena = HyenaDNAPreTrainedModel.from_pretrained("HazyResearch/hyena-small-1b")
    
  3. Создать единый интерфейс generate() для всех моделей (одинаковый параметры: max_new_tokens=512, temperature=0.0, top_p=1.0).
  4. Проверить, что каждая модель выдаёт осмысленный текст на простом промпте (“What is 2+2?”).

Ожидаемый результат этапа Рабочий ноутбук с четырьмя моделями и унифицированной функцией генерации.

Этап 2: Подготовка reasoning‑бенчмарков (1 час)

Действия

  1. Загрузить датасеты:
    from datasets import load_dataset
    gsm8k = load_dataset("openai/gsm8k", "main", split="test")
    math = load_dataset("math_dataset", split="test", trust_remote_code=True)
    bbh = load_dataset("lukaemon/bbh", split="test")
    commonsense = load_dataset("commonsense_qa", split="validation")
    
  2. Преобразовать каждый датасет в единый формат: {"prompt": str, "answer": str}.
    • Для GSM8K: вопрос → "Q: {question}\nA:", ответ — число.
    • Для MATH: вопрос, ответ — формула/число.
    • Для BBH: задача multiple‑choice (использовать только 2‑3 подзадачи для экономии: date_understanding, sports_understanding).
    • Для CommonsenseQA: вопрос + варианты ответов → "Q: {question}\nA: {option_text}", правильный вариант.
  3. Взять подвыборку: 200 примеров из каждого датасета (фиксированный seed=42) для ускорения.

Ожидаемый результат этапа Три датасета (GSM8K, MATH, CommonsenseQA) + BBH‑subset в едином формате, сохранены в reasoning_bench.pkl.

Этап 3: Инференс и сбор метрик (3–4 часа)

Действия

  1. Написать цикл по всем моделям и всем датасетам:
    def evaluate_model(model, tokenizer, dataset):
        for example in dataset:
            prompt = example["prompt"]
            start = time.perf_counter()
            output = generate(model, tokenizer, prompt)
            latency = time.perf_counter() - start
            memory = torch.cuda.max_memory_allocated()
            # extract answer from output
            ...
            correct = (predicted_answer == true_answer)
            store(example, latency, memory, correct)
    
  2. Для оценки правильности:
    • GSM8K: извлечь последнее число из сгенерированного текста и сравнить с истинным.
    • MATH: извлечь выражение и вычислить (осторожно — только простые случаи, иначе считать по регулярному выражению).
    • BBH: если модель выбирает букву (A/B/C/D) — совпадение.
    • CommonsenseQA: модель должна написать букву правильного варианта.
  3. Дополнительно замерить:
    • Время первого токена (TTFT) для каждого запроса.
    • Максимальное использование GPU‑памяти.
    • Количество OOM (Out‑of‑Memory) — если модель падает, пропустить и зафиксировать.

Ожидаемый результат этапа CSV‑файл results_raw.csv со столбцами: model, dataset, question, true_answer, predicted_answer, latency_sec, memory_MB, correct.

Этап 4: Анализ и визуализация (1.5 часа)

Действия

  1. Построить сводную таблицу метрик:
    df = pd.read_csv("results_raw.csv")
    summary = df.groupby(["model", "dataset"]).agg(
        accuracy=("correct", "mean"),
        avg_latency=("latency_sec", "mean"),
        avg_memory=("memory_MB", "mean"),
        oom_count=("correct", lambda x: x.isna().sum())
    ).reset_index()
    summary.to_csv("summary.csv")
    
  2. Построить графики:
  3. Для каждой архитектуры выделить сильные/слабые стороны:
    • Transformer: стабильно high accuracy, но высокое потребление памяти.
    • Mamba: низкая latency, чуть хуже на математике.
    • RWKV: компромисс, хорошо на CommonsenseQA.
    • Hyena: быстрый инференс, но accuracy ниже на сложных рассуждениях.

Ожидаемый результат этапа Набор графиков (PNG) и файл summary.csv.

Этап 5: Оформление отчёта и рекомендации (1.5 часа)

Действия

  1. Оформить результаты в Markdown‑отчёт report.md со структурой:
    • Введение: цель, архитектуры, датасеты.
    • Методология: параметры генерации, метрики.
    • Результаты: таблица accuracy, latency, memory (см. Table 1).
    • Графики: вставлены как изображения.
    • Обсуждение: где какая архитектура лучше и почему.
    • Рекомендации:
      • Для задач с длинным контекстом (BBH) — Mamba (экономия памяти).
      • Для высокой точности на математике — Transformer (phi‑2).
      • Для баланса скорости и качества — RWKV.
      • Для ultra‑быстрого инференса на слабом GPU — Hyena.
    • Выводы.
  2. Приложить код (ноутбук) и данные (results_raw.csv).

Ожидаемый результат этапа Файл report.md (10–15 страниц в pdf), все графики, код в .ipynb.

5. Критерии приемки (Definition of Done)

  • Все четыре модели загружены и выдают осмысленный ответ на тестовом промпте.
  • Каждый датасет (GSM8K, MATH, BBH, CommonsenseQA) прогнан минимум на 200 примерах для каждой модели.
  • Получены метрики: accuracy, latency (mean, p50, p95), max memory, count OOM.
  • Построены минимум три визуализации (accuracy по датасетам, latency vs accuracy, memory vs accuracy).
  • Сформирован отчёт report.md с таблицами, графиками и разделом «Рекомендации».
  • Код полностью воспроизводим (зафиксирован seed, версии библиотек в requirements.txt).
  • Выводы сформулированы в терминах «для какого класса reasoning‑задач какая архитектура предпочтительнее».

6. Ожидаемый результат

Основной результат Файл report.md (конвертируется в PDF) с подробным сравнительным анализом.

Содержание отчёта

  • Таблица 1: Accuracy на каждом датасете.
  • Таблица 2: Средняя latency (сек) и пиковая память (MB).
  • Рисунки: 3 графика.
  • Текстовый анализ: не менее 1000 слов.
  • Рекомендательная матрица (4 строки × 4 датасета).

Дополнительные результаты

  • Ноутбук .ipynb с исполненным кодом.
  • requirements.txt.
  • results_raw.csv со всеми замерами.

7. Возможные сложности и их решение

СложностьРешение
Модели не помещаются в GPU (OOM)Использовать float16 / int8, batch_size=1, gradient checkpointing (если требуется) или уменьшить max_new_tokens до 256
Разные токенизаторы — несогласованная длина контекстаУнифицировать через GPT‑2 tokenizer (потери для RWKV, но приемлемо для сравнения)
Датасет BBH слишком большойВзять только 2 подзадачи с минимальным контекстом (date_understanding, sports_understanding)
Hyena не принимает текстовые промпты (изначально DNA)Обучить простой обёртку: заменить positional encoding на RoPE, использовать GPT‑2 tokenizer (см. репозиторий HyenaDNA)
Модели дают неформатированные ответыНаписать парсеры (регулярки) для извлечения ответа; если не удаётся — считать неверным
Время выполнения превышает доступное (Colab)Использовать подвыборку 100 примеров, отключить Hyena (3 модели)

8. Бюджет времени (оценка)

ЭтапВремя
Этап 1: Настройка окружения и загрузка моделей1.5 часа
Этап 2: Подготовка бенчмарков1 час
Этап 3: Инференс и сбор метрик4 часа
Этап 4: Анализ и визуализация1.5 часа
Этап 5: Оформление отчёта1.5 часа
Итого9.5 часа

Примечание: Для первого выполнения закладывайте +20% на отладку и решение неожиданных проблем. При использовании только 3 моделей (без Hyena) и 100 примерах время сокращается до ~5 часов.

9. Связанные вопросы из базы знаний

ВопросТема
45Attention mechanism vs linear attention
102State Space Models: S4, Mamba
203RWKV: RNN + Transformer hybrid
301Comparison of language model architectures
405Reasoning benchmarks (GSM8K, MATH, BBH)
512Memory‑efficient inference techniques
678Tokenization strategies across architectures
721Context length scaling in SSMs
834Evaluation metrics for generative models
890Recurrent vs parallel computation in LLMs

10. Чек-лист самопроверки

  • Я скачал все четыре модели и убедился, что они работают.
  • Я подготовил единый формат для всех датасетов.
  • Я запустил инференс на подвыборке не менее 200 примеров на датасет.
  • Я построил таблицы accuracy, latency, memory и три графика.
  • Я написал отчёт с конкретными рекомендациями (какую архитектуру выбрать для конкретного класса задач reasoning).