PorTAL : adaptateurs de tâches portables pour les LLM

@RampLabs
ANGLAISil y a 1 jour · 01 juil. 2026
335K
506
45
17
867

TL;DR

PorTAL est une architecture d'hyperréseau agnostique qui permet le transfert d'adaptations de tâches LLM entre différents modèles, réduisant ainsi considérablement les coûts et les données nécessaires au fine-tuning.

Chercheur : Ben Geist

Résumé

Le réglage fin efficace en paramètres (par exemple LoRA) adapte un LLM gelé à une tâche, mais l'adaptateur résultant est verrouillé sur un seul modèle de base. Lorsqu'un nouveau modèle est publié, l'adaptation doit être réapprise depuis zéro. Nous étudions l'adaptation portable de tâche : apprendre une adaptation de tâche une fois, sous une forme agnostique au modèle de base, et la transférer à de nouveaux modèles gelés en réajustant uniquement un petit composant spécifique au modèle. Concrètement, nous apprenons un latent de tâche z_t agnostique au modèle de base et un décodeur hypernetwork D_b qui génère des adaptateurs LoRA par couche pour un modèle de base gelé. Le décodeur est composé d'un cœur partagé agnostique au modèle de base et d'un mince convertisseur propre à chaque modèle de base. Pour porter l'adaptation sur un nouveau modèle de base, nous gelons z_t et le cœur partagé et ne réajustons que le convertisseur sur une petite quantité de données.

Cette architecture, que nous nommons PorTAL, retrouve le gain de précision du LoRA par tâche à la fois au sein d'une famille de modèles et, plus frappant, entre familles de modèles. Nous l'illustrons en gelant un latent de tâche et un décodeur à cœur partagé appris sur Qwen3-1.7B et 4B, puis en ne réajustant qu'un mince convertisseur par modèle de base et en retrouvant ~98 % du gain de précision du LoRA sur un Qwen3-8B non vu, et ~94 % sur Gemma-3-4B. Cela surpasse largement les méthodes actuelles d'adaptation portable de tâche : la référence Cross-LoRA ne récupère qu'environ ~14 % du gain sur le Qwen3-8B non vu, contre nos 98 %. De plus, le réajustement est efficace en données : PorTAL atteint le plateau de précision du LoRA entraîné depuis zéro avec environ moitié moins de données de calibration, et à précision égale, il est systématiquement mieux calibré (log-loss sur données de validation plus faible) qu'un LoRA entraîné depuis zéro, quelle que soit la taille des données. Cela réduit considérablement les FLOPs nécessaires pour affiner les modèles de base ultérieurs.

1. Introduction et motivation

Les nouveaux modèles de langage arrivent à un rythme accéléré : le nombre de modèles fondateurs notables publiés par an est passé de 2 en 2020 à 9 en 2021, 32 en 2022 et 149 en 2023 [1], et d'ici 2024-2025, le rythme des publications de modèles SOTA s'est tellement compressé que le modèle SOTA n'a occupé le sommet du classement public que pendant environ 35 jours en moyenne, contre près d'un an pour GPT-4 [2].

Adapter un modèle à une tâche, cependant, est un coût par modèle qui ne s'amortit pas entre ces publications. Un réglage fin (complet ou LoRA) est verrouillé dans l'espace des poids d'un seul modèle de base ; quand le modèle suivant arrive, l'adaptation doit être refaite sur la nouvelle base. Les méthodes paramétriques efficaces ont abaissé le coût unitaire (un LoRA sur un modèle 7B coûte environ 1 à 3 k$ contre ~12 k$ pour un réglage fin complet [3]) mais pas sa structure : vous payez toujours pour la curation des données + une session d'entraînement + une évaluation une fois par (tâche, modèle), et le coût du réglage fin complet continue d'augmenter avec la taille croissante des modèles [4].

Il en résulte que le coût de maintien d'un portefeuille de capacités affinées sur le modèle frontal actuel évolue approximativement inversement au temps entre les publications de modèles. Le réajustement par modèle devient le coût dominant, toujours croissant, pour maintenir un système spécialisé tout en bénéficiant de l'intelligence brute de chaque modèle de base plus récent et plus performant.

Notre réponse est de payer pour l'adaptation de tâche une fois et de l'amortir sur chaque futur modèle de base. Inspirés par l'Hypothèse de Représentation Platonicienne [5], nous apprenons l'adaptation sous une forme agnostique au modèle de base et la transportons vers chaque nouveau modèle en ne réajustant qu'une carte légère par modèle de base sur une poignée d'exemples.

2. Travaux connexes

Notre contribution combine des idées de trois lignes de travail, que nous passons ici en revue.

Génération de LoRA mono-modèle de base via des hypernetworks

Text-to-LoRA [6], in-context SHINE [7] et Profile-to-PEFT [8] amortissent l'adaptation par tâche ou par utilisateur en un seul passage avant, mais ciblent un modèle de base fixe et généralisent entre tâches ou utilisateurs, pas entre modèles (Text-to-LoRA laisse explicitement le transfert entre modèles ouvert).

Génération de LoRA inter-architectures

LoRAGen [9] utilise un embedding structurel (latent + embeddings de modules/couches) pour émettre un LoRA pour différents modèles de base, mais est entraîné en reconstruisant des LoRA existants ; nous partageons sa forme de décodeur mais nous nous entraînons de bout en bout sur la perte de tâche, et surtout, gelons un latent de tâche partagé et un cœur partagé, en ne réajustant qu'un mince convertisseur par modèle de base pour atteindre un modèle de base non vu.

Transfert de LoRA entre modèles

Cross-LoRA [10], LoRA-X [11] et CAST [12] visent le même objectif que nous, mais en traduisant un adaptateur déjà entraîné via un sous-espace ou un alignement de manifolds d'activation. Nous apprenons plutôt un latent agnostique au modèle de base et recalibrons le convertisseur par modèle de base. Nous constatons que cette petite étape de calibration est importante. Cross-LoRA, qui transfère un adaptateur existant sans réajustement, ne récupère qu'environ ~14 % du gain du LoRA sur le 8B non vu, contre nos ~98 % (§6.2).

En bref, la génération de LoRA mono-modèle, la génération inter-architectures et le transfert entre modèles ont tous des antécédents. Notre contribution les combine en une seule recette qui apprend un latent de tâche partagé et un cœur, les gèle, et ne réajuste qu'un mince convertisseur par modèle de base pour atteindre une nouvelle base. Nous présentons cela comme une réponse au coût de maintenance face à un rythme accéléré de publication de modèles, et montrons qu'elle domine empiriquement la ligne de transfert entre modèles.

3. Contexte : LoRA et hypernetworks LoRA

LoRA [13]. Pour une matrice de poids gelée, LoRA apprend une mise à jour de faible rang construite à partir de deux petites matrices A et B de rang r ; seules ces deux matrices s'entraînent :

ΔW = α/r B A, A ∈ R^(r×d_in), B ∈ R^(d_out×r), r ≪ d, y = Wx + α/r B(Ax)

Hypernetworks LoRA. Plutôt que d'entraîner A et B directement, un hypernetwork les génère à partir d'une entrée de conditionnement. Text-to-LoRA [6] entraîne un hypernetwork pour émettre un LoRA complet pour un seul modèle de base à partir d'un embedding de description de tâche, de bout en bout à travers le modèle de base gelé. Cela entraîne un hypernetwork au lieu d'un LoRA séparé pour chaque tâche, mais cela reste mono-modèle, généralisant entre tâches, pas entre modèles. Notre conception emprunte l'idée de génération de LoRA par hypernetwork mais vise un objectif différent, le transfert entre modèles d'une représentation de tâche apprise et partagée.

4. Méthode

Conception. Notre objectif est une adaptation de tâche apprise une fois et portée à moindre coût sur de nouveaux modèles gelés. Nous divisons le générateur d'adaptateur en deux parties : un décodeur cœur agnostique au modèle de base de grande taille, partagé entre tous les modèles, qui émet des facteurs de faible rang à une largeur de cœur fixe d_c ; et un mince convertisseur par modèle de base qui conditionne les entrées du cœur partagé et projette ses sorties vers les dimensions d'un modèle spécifique. Nous nous entraînons sur un ou plusieurs modèles de base gelés, puis portons l'adaptation vers un modèle non vu en ne réajustant que ce petit convertisseur par modèle de base.

Cela amortit l'adaptation apprise en une représentation partagée et rend chaque nouveau modèle de base peu coûteux à supporter. Par construction, le latent partagé et le cœur contiennent la plupart des paramètres et absorbent à la fois la représentation de la tâche et l'essentiel de sa cartographie dans l'espace des adaptateurs ; seul un petit convertisseur reste spécifique au modèle. Nous définissons les composants ci-dessous.

Configuration. Soit un modèle de base gelé b avec des couches de transformer = 1, …, L_b avec des matrices de poids par couche W_ℓ,m pour les modules adaptés m ∈ {q_proj, v_proj} (nous étendons m à toutes les projections d'attention et MLP dans la variante à modules complets). Soit θ_b les paramètres gelés du modèle de base.

Latent de tâche. Chaque tâche t est associée à un latent de tâche appris z_t, un vecteur agnostique au modèle de base de dimension d_z = 256.

Décodeur. Notre hypernetwork D_b est composé d'un décodeur cœur agnostique au modèle de base et d'un mince convertisseur par modèle de base ; il associe le latent de tâche z_t et un embedding par couche e_ℓ aux facteurs LoRA de chaque module :

(A_ℓ,m, B_ℓ,m) = D_b(z_t, e_ℓ, m), A_ℓ,m ∈ R^(r×d_in_ℓ), B_ℓ,m ∈ R^(d_out_ℓ,m × r)

En interne, nous conditionnons un tronc partagé unique avec FiLM. Le tronc prend en entrée l'embedding par couche e_ℓ, tandis que le latent de tâche z_t met à l'échelle et décale ses caractéristiques cachées. Cela produit un état caché par couche :

h_ℓ = φ( W_2 [ (1+γ(z_t)) ⊙ ψ(W_1[z_t; e_ℓ]) + β(z_t) ] ),

Des têtes par module transforment ensuite cet état caché en facteurs de largeur de cœur :

Â_ℓ,m = Head^A_m(h_ℓ) ∈ R^(r×d_c), B̂_ℓ,m = Head^B_m(h_ℓ) ∈ R^(d_c×r).

Enfin, un aligneur les projette vers les dimensions du modèle de base via des applications linéaires par module :

A_ℓ,m = Â_ℓ,m P^in_b, B_ℓ,m = P^out_b B̂_ℓ,m,

L'adaptateur généré est injecté comme un delta LoRA standard :

y_ℓ,m = W_ℓ,m x + α/r B_ℓ,m (A_ℓ,m x).

Entraînement. Nous entraînons {z_t} et D_b tout en gardant les paramètres du modèle de base θ_b gelés. Nous minimisons la vraisemblance négative de la continuation correcte (perte uniquement sur les tokens de réponse) :

L'entraînement multi-tâches utilise des étapes équilibrées par tâche avec normalisation de la perte par moyenne mobile exponentielle pour éviter que les tâches difficiles ne s'effondrent au hasard.

Ramp Labs - inline image

GIF

Entraînement multi-modèles de base. Lorsque nous nous entraînons sur plusieurs modèles de base à la fois, un petit modèle de base peut dominer le gradient du latent partagé. Nous appliquons un équilibrage de la norme du gradient sur z_t, en remettant à l'échelle le gradient accumulé de chaque modèle de base pour qu'il ait une norme égale avant l'étape de l'optimiseur, de sorte que chaque modèle de base contribue également à la représentation partagée.

Portage. Étant donné un modèle de base non vu b', nous gelons le décodeur cœur et {z_t} et ne réajustons que le convertisseur par modèle de base {e_ℓ, P_in, P_out} sur un petit ensemble de calibration :

Ramp Labs - inline image

GIF

5. Configuration expérimentale

Tâches (14, choix multiples standard). TruthfulQA, RTE, CB, COPA, WiC, WSC (SuperGLUE + TruthfulQA ; marge plus grande), et BoolQ, ARC-Easy, ARC-Challenge, HellaSwag, OpenBookQA, WinoGrande, CommonsenseQA, SciQ (plus larges / évaluations plus grandes).

Métrique. Log-vraisemblance normalisée par la longueur sur les choix (acc_norm) ; nous rapportons également le log-loss sur données de validation (vraisemblance négative moyenne par token de la continuation correcte). Les §6.1–6.3 utilisent la sélection sur données de validation à la meilleure époque (évaluation par époque) tandis que le §6.4 utilise l'évaluation de la dernière époque. Tous sont des moyennes sur 3 graines ± écart-type.

Données. Jusqu'à 2 000 exemples/tâche — un plafond dur appliqué à la fois à l'entraînement source et au réajustement du convertisseur par modèle de base. Les §6.1–6.3 s'entraînent sur les 2 000/tâche complets ; l'étude d'efficacité en données (§6.4) montre que beaucoup moins suffisent. Les ensembles d'évaluation vont de 56 (CB) à 1 000 (BoolQ/WinoGrande/CSQA/SciQ) ; environ 7 200 exemples d'évaluation au total sur les 14 tâches.

Modèles. Modèles de base vus : Qwen3-1.7B, Qwen3-4B. Modèles de base non vus : Qwen3-8B et Gemma-3-4B. Références LoRA par tâche : rang 16 sur q/k/v/o + MLP. LoRA Hypernet/PorTAL (§6.1–6.3) : rang 8 sur q/v.

Expériences rapportées. (i) LoRA Hypernet vs LoRA par tâche ; (ii) Portabilité vers des modèles de base non vus au sein d'une famille et entre familles ; (iii) Efficacité en données du réajustement du convertisseur ;

6. Résultats

6.1 Modèle de base source

Méthode

Moyenne acc_norm (14 tâches)

Base

0.627

LoRA par tâche

0.765 ± 0.003

LoRA Hypernet

(entraînement conjoint z_4B, D_4B)

0.757 ± 0.003

Nous confirmons d'abord qu'un latent de tâche appris z et un décodeur, entraînés conjointement sur le modèle de base source, peuvent égaler les LoRA par tâche entraînés indépendamment sur le même modèle de base. Le LoRA Hypernet généré récupère environ ~94 % du gain du LoRA par tâche en moyenne et l'égale ou le dépasse sur 6/14 tâches (RTE, CB, COPA, WiC, ARC-Easy, CommonsenseQA).

6.2 Portabilité au sein d'une famille

Méthode (sur 8B non vu)

Moyenne acc_norm

Gain récupéré

Base-8B

0.667

LoRA 8B par tâche

0.795 ± 0.004

100%

Transfert Cross-LoRA

0.685 ± 0.001

~14%

LoRA Hypernet (entraînement conjoint z_8B, D_8B)

0.785 ± 0.002

~92%

PorTAL

(z_(1.7B+4B) gelé, réajustement D_8B)

0.792 ± 0.004

~98%

Nous testons ensuite directement la portabilité. Nous gelons le latent et le décodeur cœur, appris conjointement sur Qwen3-1.7B et 4B, et ne réajustons que le mince convertisseur sur un modèle de base non vu. Sur un Qwen3-8B non vu, cela récupère ~98 % du gain du LoRA par tâche, bien au-dessus des ~14 % récupérés par Cross-LoRA, la méthode de transfert entre modèles comparable. Fait intéressant, l'entraînement conjoint du latent et du décodeur sur Qwen3-8B atteint 0.785 (~92 %), statistiquement comparable au latent porté, mais légèrement inférieur. Nous attribuons la performance légèrement supérieure de PorTAL à une régularisation modérée due aux multiples modèles de base vus.

6.3 Portabilité entre familles

Cible non vue

Base

LoRA par tâche

PorTAL

Gain récupéré

Gemma-3-4B

0.595

0.778 ± 0.004

0.767 ± 0.004

~94%

Nous testons ensuite le transfert entre familles. Nous gelons le latent et le décodeur cœur entraînés sur Qwen3-1.7B et 4B et réajustons le convertisseur sur Gemma-3-4B. Cela récupère ~94 % du gain du LoRA entraîné depuis zéro. Le transfert entre familles est quasi sans perte.

6.4 Efficacité en données

PorTAL amortit l'adaptation de tâche : un latent et un cœur appris une fois sur les modèles de base vus devraient rendre chaque modèle suivant peu coûteux à adapter, de sorte que le portage vers un nouveau modèle de base nécessite beaucoup moins de données que l'entraînement d'un LoRA depuis zéro. Nous le montrons sur le Qwen3-8B non vu, en faisant varier la taille de l'ensemble par tâche pour PorTAL q/v r8, PorTAL complet r8, et LoRA complet r16 par tâche. Pour PorTAL, cet ensemble est l'ensemble de calibration sur lequel il réajuste le convertisseur ; pour le LoRA entraîné depuis zéro, c'est l'ensemble d'entraînement.

Moyennes brutes sur 14 tâches, base-8B acc 0.667 / log-loss 3.819 :

Ramp Labs - inline image
Ramp Labs - inline image

Dans les deux graphiques, les courbes sont une moyenne mobile sur une fenêtre de 3, et les étoiles marquent l'endroit où chaque méthode atteint pour la première fois le pic du LoRA par tâche.

PorTAL est nettement plus efficace en données. Il égale la meilleure précision du LoRA par tâche en utilisant environ moitié moins de données, et le dépasse systématiquement dans la plage de données élevée. Étant donné que le modèle de base gelé domine le coût par étape, atteindre le plateau avec moitié moins de données réduit approximativement de moitié les FLOPs d'adaptation. PorTAL est également mieux calibré, avec un log-loss sur données de validation plus faible que le LoRA entraîné depuis zéro à chaque taille de données.

Note : Nous comparons avec le LoRA complet r16 tout au long car nous avons constaté qu'il s'agissait de la configuration de LoRA par tâche la plus performante dans notre balayage.

7. Travaux futurs

Compétition de gradient sur les tâches difficiles. Avec la sélection de la meilleure époque, la plupart des tâches atteignent le gain du LoRA, mais quelques tâches plus difficiles de bon sens et de connaissances sont sous-ajustées, les pires étant OpenBookQA (~42 % du gain), WinoGrande (~57 %) et HellaSwag (~61 %). Ce sont les tâches les plus distinctes, et comme le décodeur de rang 8 est partagé sur l'ensemble, leurs gradients sont surpassés par les autres et elles restent sous-ajustées. Nous supposons que la cause racine est d'ordre optimisation, et non une expressivité limitée de l'adaptateur, car ni un adaptateur de rang 16 plus grand ni un latent de tâche plus grand n'ont aidé. Dans des travaux futurs, nous espérons poursuivre une meilleure optimisation multi-tâches, comme une capacité par tâche ou un curriculum, ou un petit résidu par tâche par-dessus le décodeur partagé.

Variante à description textuelle amortie. Une extension naturelle remplace le latent par tâche libre par un encodeur sur une description de tâche, z_t = E(emb(desc_t)), de sorte qu'une toute nouvelle tâche pourrait être adaptée zero-shot à partir de sa seule description (à la Text-to-LoRA), sans entraînement par tâche. Nous laissons une étude complète pour des travaux futurs.

Autres directions. Tâches plus grandes et d'instruction/génération au-delà des choix multiples ; et théorie sur quand un latent gelé suffit vs. quand une adaptation spécifique au modèle de base est nécessaire.

Vous voulez suivre nos prochaines expériences en IA ? Abonnez-vous ici et suivez-nous sur @RampLabs. Nous recrutons également pour divers postes chez Ramp.

Références

  1. Stanford HAI — AI Index Report 2024 (foundation-model release counts). https://www.deeplearning.ai/the-batch/stanford-ai-index-report-shows-the-state-of-ai-in-2024
  2. Chiang et al. — Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference (ICML 2024). https://arxiv.org/abs/2403.04132. Turnover statistic (~35 days at #1) from the Arena Leaderboard Dataset, Arena (2025). https://arena.ai/blog/arena-leaderboard-dataset/
  3. Stanford HAI — AI Index Report 2025. https://hai.stanford.edu/ai-index/2025-ai-index-report
  4. Alloc Labs — The Hidden Cost of LLM Fine-Tuning. https://www.alloclabs.com/blog/hidden-cost-llm-finetuning
  5. Huh et al. — The Platonic Representation Hypothesis (2024). https://arxiv.org/abs/2405.07987
  6. Charakorn et al. — Text-to-LoRA: Instant Transformer Adaptation (ICML 2025). https://openreview.net/forum?id=zWskCdu3QA
  7. Liu et al. — SHINE: A Scalable In-Context Hypernetwork for Mapping Context to LoRA (2026). https://arxiv.org/abs/2602.06358
  8. Tan et al. — Instant Personalized LLM Adaptation via Hypernetwork (Profile-to-PEFT) (2025). https://arxiv.org/abs/2510.16282
  9. Huang et al. — LoRAGen: Structure-Aware LoRA Weight Generation. https://openreview.net/pdf?id=mrafO7aTYj
  10. Xia et al. — Cross-LoRA: A Data-Free LoRA Transfer Framework across Heterogeneous LLMs (2025). https://arxiv.org/abs/2508.05232
  11. Farhadzadeh et al. — LoRA-X: Bridging Foundation Models with Training-Free Cross-Model Adaptation (2025). https://arxiv.org/abs/2501.16559
  12. Al Kari — CAST: Activation Manifold Projection (Cartridge Activation Space Transfer) (2025). https://arxiv.org/abs/2510.17902
  13. Hu et al. — LoRA: Low-Rank Adaptation of Large Language Models (2021). https://arxiv.org/abs/2106.09685

Annexe

A. Entraînement et hyperparamètres

Paramètre

Valeur

Optimiseur

AdamW

LR (décodeur / latent)

1e-3 / 2e-3

Époques / taille de batch

5 / 4

Équilibrage multi-tâches

étapes équilibrées par tâche + normalisation de la perte par EMA (0.9 / 0.1) avec un plancher de 1e-3 pour la stabilité

Référence LoRA par tâche

peft, rang 16, alpha 32, lr 1e-4, 5 époques (sélection meilleure époque), modules q/k/v/o + MLP

Initialisation

Têtes B et FiLM γ, β initialisés à zéro, de sorte que l'adaptateur généré soit l'identité (ΔW = 0) au début

Matériel

un seul NVIDIA B200 (par session)

B. Métriques

Nous rapportons le gain récupéré tandis que les articles précédents sur le transfert entre modèles (Cross-LoRA, CAST) rapportent plutôt la rétention. Pour une méthode m, un modèle de base non adapté b, et un LoRA par tâche entraîné depuis zéro L :

gain récupéré = (acc_m - acc_b) / (acc_L - acc_b), rétention = acc_m / acc_L.

La rétention est proche de 100 % chaque fois qu'il y a peu de marge, le régime dans lequel ces articles opèrent (leur LoRA entraîné n'ajoute que ~1 % par rapport à la base), donc elle n'est pas discriminante. Nous évaluons dans un contexte de marge plus grande et utilisons donc le gain récupéré. Pour la comparabilité, en termes de rétention, la réimplémentation de Cross-LoRA obtient ~86 % (dans la plage de 85-95 % rapportée par CAST) tout en ne récupérant que ~14 % du gain, tandis que notre portage obtient ~99 % de rétention / ~98 % de gain récupéré.

Citer ce travail

APA

Geist, B. (2026). PorTAL: Portable Task Adapters for LLMs. Ramp Labs. https://labs.ramp.com/research

BibTeX

text
1@techreport{portal2026ramplabs,
2 author = {Geist, Ben},
3 title = {PorTAL: Portable Task Adapters for LLMs},
4 year = {2026},
5 month = {June},
6 institution = {Ramp Labs},
7 url = {https://labs.ramp.com/research}
8}

Turn one viral article into a full content workflow

Collect the source, decode the pattern, create assets, draft the story, and distribute from one AI workspace.

Explore YouMind

D'autres patterns à décoder

Articles viraux récents

Explorer plus d'articles viraux