IA et interprétabilité : l'équipe d'ingénierie IA de Vector a publié un nouveau cadre d'interprétabilité pour les modèles génératifs, offrant aux chercheurs de nombreux outils pour améliorer la sécurité et la fiabilité de ces modèles.
Par Mark Coastworth et Matthew Choi
Le monde de l'apprentissage machine est témoin de l'essor de réseaux neuronaux gigantesques comportant des milliards de paramètres. Ces grands modèles de langage (LLM) ont démontré des capacités incroyables, notamment grâce à leur aptitude à la généralisation et à l'apprentissage contextuel. Cependant, cette croissance massive de la taille des modèles engendre un défi de taille : les exigences matérielles accrues pour leur entraînement et leur déploiement nécessitent souvent une infrastructure distribuée, répartissant le modèle sur plusieurs unités de traitement graphique (GPU) voire plusieurs nœuds.
Bien que de nombreux outils existent pour la parallélisation des modèles et l'entraînement distribué, une interaction plus poussée avec ces modèles, comme la récupération d'informations intermédiaires ou leur modification, exige une solide compréhension du calcul distribué. Cela constitue un obstacle pour de nombreux chercheurs en apprentissage automatique dont les connaissances en calcul distribué sont limitées. En conséquence, ces grands modèles fonctionnent généralement comme une boîte noire, rendant difficile la compréhension des raisons d'une sortie donnée de manière facilement interprétable par l'humain.
Qu'est-ce que FlexModel ?
Pour résoudre ce problème, les membres de l'équipe d'ingénierie IA de Vector ont développé FlexModel, un progiciel conçu pour fournir une interface utilisateur conviviale permettant d'interagir avec des modèles à grande échelle répartis sur des configurations multi-GPU et multi-nœuds.
Présenté dans l' article « FlexModel : un cadre pour l'interprétabilité des grands modèles de langage distribués », sélectionné comme article phare à NeurIPS 2023 , FlexModel offre une interface commune permettant de manipuler des modèles de grande taille, quelle que soit leur distribution (Accelerate, FSDP, DeepSpeed, etc.). Il introduit également le concept de HookFunctions, qui permet aux utilisateurs d'interagir avec le fonctionnement interne des modèles distribués, aussi bien lors des propagations avant que arrière. Ces mécanismes sont implémentés via une API simple, disponible sous forme de bibliothèque Python appelée FlexModel . En intégrant cette bibliothèque à leurs projets, les chercheurs peuvent rapidement et facilement comprendre le comportement d'un modèle.
Comment ça marche ?
La bibliothèque FlexModel fournit une nouvelle classe servant d'interface principale pour les interactions utilisateur. Cette classe FlexModel hérite de la classe nn.Module de PyTorch, largement utilisée, permettant ainsi aux développeurs d'interagir facilement avec le modèle encapsulé via l'API nn.Module sans aucune modification de code.
Voici un exemple d'initialisation simple :
model = AutoModelForCausalLM.from_pretrained("model-name")
model = accelerator.prepare(model)
output_dict: Dist[str, Tensor] = {}
model = FlexModel(model, output_dict, data_parallel_size=accelerator.num_processes)
Une fois un FlexModel instancié, les utilisateurs peuvent définir une collection de HookFunctions : des fonctions personnalisées permettant d'effectuer des opérations précises sur chaque couche d'un réseau neuronal. Le cas d'utilisation le plus courant consiste à récupérer les activations, c'est-à-dire à extraire des informations intermédiaires du modèle afin de comprendre comment il parvient à une décision de sortie. Un autre cas d'utilisation est la modification de ces informations intermédiaires, pour observer comment différents états internes peuvent mener à différentes sorties.
FlexModel poursuit deux objectifs de conception majeurs. Il doit être intuitif : l'application du wrapper FlexModel à un module PyTorch (nn.Module) doit simplement ajouter des fonctionnalités d'inspection au modèle cible. Le déballage du modèle doit permettre de retrouver le modèle original sans effets secondaires. La fonction d'édition du HookFunction doit autoriser l'exécution de code arbitraire sur les activations. Il est également conçu pour être évolutif : FlexModel est indépendant du nombre de GPU ou de nœuds GPU, de l'architecture du modèle (par exemple, LLaMA, Falcon, GPT), de sa taille et de la stratégie de distribution (par exemple, DP, FSDP, TP, PP) ou de leur combinaison.
Quelles sont les conséquences pour la communauté de l'apprentissage machine ?
FlexModel vise à démocratiser les interactions entre les modèles et à combler le fossé entre les paradigmes de modélisation distribuée et mono-dispositif. Il permet ainsi aux chercheurs, même non spécialistes du calcul distribué, d'interagir avec des modèles distribués et de les modifier sans avoir à se plonger dans la complexité des systèmes distribués.
Face à l'importance croissante accordée aux biais et à l'équité dans l'IA, l'interprétabilité peut contribuer à détecter, comprendre et atténuer les biais cachés dans les décisions des modèles. Décrypter comment ces modèles parviennent à leurs décisions, comment ils ont appris des comportements spécifiques et comprendre leurs mécanismes internes peut nous éclairer sur la conception de systèmes d'IA plus robustes, fiables et efficaces.
De nombreux secteurs, comme la médecine, les finances et le système juridique, exigent déjà que les modèles décisionnels ayant un impact sur les individus soient interprétables. Cela garantit la transparence des décisions. Grâce à des outils comme FlexModel, les chercheurs peuvent maintenant mener des recherches sur l'interprétabilité sans être freinés par la complexité technique du calcul distribué.
Conclusion
Des outils comme FlexModel soulignent l'importance de rendre la recherche avancée en IA inclusive et accessible à tous. En facilitant l'accès à la recherche sur l'interprétabilité dans les maîtrises en droit, FlexModel nous rapproche d'un apprentissage automatique de pointe plus accessible, interprétable, sécuritaire et fiable.