PEFT documentation

Polytropon

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.21.0).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Polytropon

Polytropon — это мультитасковая модель, в «арсенале» которой находится набор различных адаптеров LoRA. Модель обучается выбирать правильную комбинацию адаптеров из этого набора с помощью функции маршрутизации, которая определяет оптимальное подмножество модулей для конкретной задачи. PEFT также поддерживает Multi-Head Adapter Routing (MHR) для Polytropon, что расширяет и улучшает функцию маршрутизации за счёт более детального объединения голов адаптеров. Головы адаптеров разделяются на непересекающиеся блоки, и для каждого из них обучается отдельная функция маршрутизации, что обеспечивает большую выразительность.

Сочетание модульных навыков в обучении с несколькими задачами
Маршрутизация многоголовых адаптеров для обобщения между задачами

Аннотация из статьи:

Модульная архитектура поощряет нейронные модели разделять и повторно комбинировать различные аспекты знаний, чтобы более систематически обобщать их на новые задачи. В данной работе мы предполагаем, что каждая задача связана с подмножеством латентных дискретных навыков из (потенциально небольшого) набора. В свою очередь, навыки соответствуют параметрически эффективным (разреженным / низкоранговым) параметризациям модели. Совместно обучая их и матрицу распределения задач по навыкам, сеть для каждой задачи инстанцируется как среднее параметров активных навыков. Чтобы поощрять нетривиальные мягкие разделения навыков между задачами, мы экспериментируем с рядом индуктивных смещений, таких как априорное распределение индийского буфетного процесса (Indian Buffet Process) и двухскоростная скорость обучения. Мы оцениваем нашу модель латентных навыков в двух основных сценариях: 1) многозадачное обучение с подкреплением для выполнения инструкций в контексте среды на 8 уровнях платформы BabyAI; и 2) few-shot адаптация предобученных генеративных моделей текст-в-текст на CrossFit, бенчмарке, состоящем из 160 задач NLP. Мы обнаруживаем, что модульная архитектура сети значительно повышает эффективность использования данных в обучении с подкреплением и обобщение в few-shot сценариях в обучении с учителем по сравнению с базовыми моделями с полностью общими, специфичными для задачи или условно генерируемыми параметрами, где знания переплетены между задачами. Кроме того, мы показываем, как дискретные навыки способствуют интерпретируемости, поскольку они формируют явную иерархию задач.

Если вы хотите сначала попробовать роутинг без обучения, вы можете ознакомиться с Arrow LoRA variant.

API

PolyConfig

класс peft.PolyConfig

< >

( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falser: int = 8target_modules: Optional[Union[list[str], str]] = Noneexclude_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = Truepoly_type: Literal['poly'] = 'poly'n_tasks: int = 1n_skills: int = 4n_splits: int = 1 )

Параметры

  • r (int) — размерность внимания каждой Lora в Poly.
  • target_modules (Union[List[str],str]) — Имена модулей, к которым следует применить Poly.
  • exclude_modules (Optional[Union[List[str], str]]) — Имена модулей, к которым не следует применять адаптер. При передаче строки выполняется сопоставление по регулярному выражению. При передаче списка строк выполняется точное совпадение или проверяется, заканчивается ли имя модуля каким-либо из переданных строк.
  • modules_to_save (List[str]) — список модулей, отличных от Poly-слоёв, которые нужно сделать обучаемыми и сохранить в итоговом контрольном пункте.
  • init_weights (bool) — Выполнять ли инициализацию весов Poly.
  • poly_type (Literal["poly"]) — Вариант модуля Poly, который следует использовать. В настоящее время поддерживается только “poly”.
  • n_tasks (int) — Количество задач в сценарии многозадачности.
  • n_skills (int) — количество навыков (LoRA) в каждом слое Poly.
  • n_splits (int) — Количество разбиений внутри каждого LoRA в слое Poly. Значение, большее 1, указывает на использование Multi-Head Routing (MHR).

Это класс конфигурации для хранения конфигурации PolyModel.

PolyModel

класс peft.PolyModel

< >

( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Update on GitHub