Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#957

Что такое (IA)^3 (Infused Adapter by Inhibiting and Amplifying Inner Activations)? Как он масштабирует LoRA?

Краткий тезис

(IA)^3 (Infused Adapter by Inhibiting and Amplifying Inner Activations) — это метод PEFT, который обучает векторы масштабирования (multipliers) для ключей, значений и скрытых активаций FFN, не добавляя новые слои или проекции. Он требует кратно меньше параметров, чем LoRA, и особенно эффективен в сценариях multitask и few-shot, где критична минимизация вычислительных накладных расходов.

2. Применяется к ключам, значениям, FFN

(IA)^3 нацелен на три ключевых компонента внутри Transformer:

КомпонентЧто масштабируетсяРазмер вектораЭффект
Key голов вниманияK (вход в attention)d_modelУправляет, какие токены "замечаются"
Value голов вниманияV (выход attention)d_modelУправляет, сколько информации проходит из контекста
FFNВыход первого линейного слоя FFNd_ff (обычно 4×d_model)Управляет нелинейным преобразованием

Это покрывает все основные пути распространения информации в блоке Transformer, не трогая веса Query проекций (они остаются замороженными).


3. Ещё меньше параметров, чем LoRA

Главное преимущество (IA)^3 — экстремально малое количество обучаемых параметров:

МетодПараметров на слой (пример)Всего (L=12, d=768)
Full fine-tuning7.1M85M
LoRA (r=8)~180K2.16M
(IA)^3~6K~72K
  • (IA)^3 примерно в 30 раз компактнее LoRA при типичных размерах.
  • Это достигается тем, что обучаются только 3 вектора (для K, V, FFN) на слой, а не две низкоранговые матрицы (A и B), как в LoRA.
  • При d_model=768: 768+768+3072=4608 параметров на слой против ~180K у LoRA.

Такая экономия критична при:

  • Экстремальном few-shot (1–5 примеров на задачу)
  • Хранении тысяч адаптированных копий модели для multitask
  • Развёртывании на устройствах с ограниченной памятью (edge, mobile)

4. Хорош для multitask

(IA)^3 демонстрирует выдающиеся результаты в multitask сценариях по нескольким причинам:

  1. Минимальное пересечение параметров: каждая задача учит только 3 вектора на слой (≈0.01% от модели), поэтому конфликты градиентов при совместном обучении минимизированы.
  2. Лёгкое переключение задач: в инференсе достаточно подменить три вектора на слой — не нужно пересчитывать LoRA-матрицы.
  3. Совместимость с LoRA: (IA)^3 можно комбинировать с LoRA (LoRA+IA^3), где LoRA отвечает за проекции Q и O, а IA^3 — за масштабирование K, V, FFN, что даёт дополнительное улучшение качества.
  4. Бенчмарки: на наборах T0 (T5 с multitask) и FLAN (PaLM) (IA)^3 достигает 96–98% качества полного fine-tuning при 100-кратном сокращении параметров.

5. Пет-проект для закрепления

Задача: Реализовать (IA)^3 на основе Hugging Face Transformers для T5-small и сравнить его с LoRA (r=8) на задаче text2text (Dataset: SAMSum для суммаризации диалогов).

Инструменты:

  • Python, PyTorch
  • HuggingFace Transformers, PEFT library (есть экспериментальная поддержка (IA)^3)
  • Datasets библиотека
  • Weights & Biases (опционально)

Шаги:

  1. Загрузить T5-small и заморозить все слои.
  2. Реализовать класс IA3Adapter:
    • Для каждого блока Transformer создать nn.Parameter для l_k, l_v, l_ff.
    • В forward хуке переопределить forward attention и FFN, вставив поэлементное умножение.
  3. Обучить (IA)^3 на SAMSum (вход: dialogue, выход: summary) — 2 эпохи, lr=3e-3.
  4. Обучить LoRA с r=8 на той же задаче — 2 эпохи, lr=1e-4 (стандартный).
  5. Оценить ROUGE-1/2/L на тестовом наборе.
  6. Сравнить количество обучаемых параметров и ROUGE.

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

  • (IA)^3: ~50K параметров, ROUGE-L ≈38–40.
  • LoRA: ~1.5M параметров, ROUGE-L ≈39–41.
  • Вывод: (IA)^3 даёт ~95% качества LoRA с ~30× меньше параметрами.

Связь с другими вопросами

ВопросТема
952LoRA и его ранговые адаптеры

Навигация

  • Предыдущий: 956
  • Следующий: 958
  • Индекс: 00. Индекс разборов