PEFT documentation
Polytropon
Polytropon
Polytropon — это мультитасковая модель, в «арсенале» которой находится набор различных адаптеров LoRA. Модель обучается выбирать правильную комбинацию адаптеров из этого набора с помощью функции маршрутизации, которая определяет оптимальное подмножество модулей для конкретной задачи. PEFT также поддерживает Multi-Head Adapter Routing (MHR) для Polytropon, что расширяет и улучшает функцию маршрутизации за счёт более детального объединения голов адаптеров. Головы адаптеров разделяются на непересекающиеся блоки, и для каждого из них обучается отдельная функция маршрутизации, что обеспечивает большую выразительность.
Аннотация из статьи:
Модульная архитектура поощряет нейронные модели разделять и повторно комбинировать различные аспекты знаний, чтобы более систематически обобщать их на новые задачи. В данной работе мы предполагаем, что каждая задача связана с подмножеством латентных дискретных навыков из (потенциально небольшого) набора. В свою очередь, навыки соответствуют параметрически эффективным (разреженным / низкоранговым) параметризациям модели. Совместно обучая их и матрицу распределения задач по навыкам, сеть для каждой задачи инстанцируется как среднее параметров активных навыков. Чтобы поощрять нетривиальные мягкие разделения навыков между задачами, мы экспериментируем с рядом индуктивных смещений, таких как априорное распределение индийского буфетного процесса (Indian Buffet Process) и двухскоростная скорость обучения. Мы оцениваем нашу модель латентных навыков в двух основных сценариях: 1) многозадачное обучение с подкреплением для выполнения инструкций в контексте среды на 8 уровнях платформы BabyAI; и 2) few-shot адаптация предобученных генеративных моделей текст-в-текст на CrossFit, бенчмарке, состоящем из 160 задач NLP. Мы обнаруживаем, что модульная архитектура сети значительно повышает эффективность использования данных в обучении с подкреплением и обобщение в few-shot сценариях в обучении с учителем по сравнению с базовыми моделями с полностью общими, специфичными для задачи или условно генерируемыми параметрами, где знания переплетены между задачами. Кроме того, мы показываем, как дискретные навыки способствуют интерпретируемости, поскольку они формируют явную иерархию задач.
Аннотация из статьи:
Параметрически эффективная дообучаемость (PEFT) для кросс-задачной генерализации заключается в предварительном обучении адаптеров на многозадачном обучающем наборе перед few-shot адаптацией к тестовым задачам. Polytropon [Ponti et al., 2023] (Poly) совместно обучает набор адаптеров и функцию маршрутизации, которая выбирает подмножество адаптеров (переменного размера) для каждой задачи как на этапе предварительного обучения, так и на этапе few-shot адаптации. В данной статье мы исследуем роль, которую играет маршрутизация адаптеров в успехе этого подхода, и проектируем новые варианты на основе наших выводов. Во-первых, мы опираемся на интуицию о том, что более тонкая маршрутизация обеспечивает большую выразительность. Следовательно, мы предлагаем MHR (Multi-Head Routing), который комбинирует подмножества параметров адаптеров и превосходит Poly при сопоставимом бюджете параметров; дообучая только функцию маршрутизации, но не адаптеры (MHR-z), мы достигаем конкурентоспособной производительности с экстремальной параметрической эффективностью. Во-вторых, мы обнаруживаем, что производительность Poly/MHR является результатом более эффективной многозадачной оптимизации, а не модульных индуктивных смещений, облегчающих рекомбинацию адаптеров и локальную адаптацию, как предполагалось ранее. Фактически, мы находим, что MHR демонстрирует более высокое выравнивание градиентов между задачами, чем любой другой метод. Поскольку это подразумевает, что маршрутизация критична только на этапе многозадачного предварительного обучения, мы предлагаем MHR-mu, который отказывается от маршрутизации и дообучает среднее значение предварительно обученных адаптеров на этапе few-shot адаптации. Это утверждает MHR-mu как эффективный метод дообучения одиночного адаптера.
Если вы хотите сначала попробовать роутинг без обучения, вы можете ознакомиться с Arrow LoRA variant.
API
PolyConfig
класс peft.PolyConfig
< source >( 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
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )