scieee AI-readable full text Open interactive document viewer

Utilisation de grands modèles de langage localement en recherche

Pelletier, Francois

Abstract

Atelier - Utilisation de grands modèles de langage localement en recherche Introduction L'intégration des grands modèles de langage (LLM) sur site offre des avantages significatifs pour la recherche scientifique. Elle permet de garantir la confidentialité des données sensibles, d'assurer la propriété intellectuelle et de personnaliser les analyses en fonction des besoins spécifiques des projets. En déployant ces outils localement ou sur des infrastructures de calcul scientifique (comme les grappes HPC), les chercheur·es assurent la reproductibilité des résultats, indépendamment des plateformes externes ou des décisions commerciales. La palette de modèles disponibles (Llama, Qwen, Gemma, etc.) permet aux chercheur·es d'adapter leur choix aux spécificités de leur domaine. Bien que le matériel informatique (comme les GPU) et une formation initiale soient nécessaires, l'existence de logiciels libres ou au code source ouvert rend cette approche accessible. Cette présentation vise à illustrer comment intégrer l'intelligence artificielle dans le traitement des données tout en valorisant l'autonomie, la transparence et la conformité aux normes éthiques de recherche. Objectif de l'atelier Cet atelier vise à familiariser les chercheur·es avec des outils d'IA générative capables de fonctionner hors ligne, tels que Ollama et la bibliothèque Transformers pour Python. Les exemples concrets abordés incluront : La génération de données synthétiques à l'aide de l'interface locale Open Web UI, L'exécution d'un modèle sur une grappe HPC via le système de modules CVMFS utilisé par les infrastructures canadiennes. Les codes sources et guides d'installation seront mis à disposition lors de la présentation, facilitant ainsi l'expérimentation et la mise en œuvre pratique. Le formateur : François Pelletier François Pelletier est entrepreneur du numérique et professionnel de recherche au Groupe de recherche en physique médicale de l’Université Laval. Il détient une maîtrise en actuariat (2014) et a suivi le microprogramme en systèmes logiciels intelligents (2019). Ses intérêts portent sur les enjeux de protection des données personnelles, les impacts sociaux des technologies numériques, ainsi que l’exploitation de la puissance de calcul locale dans le cadre de l’inférence d’apprentissage automatique, notamment pour les modèles de langage.

Full text

Utilisation de grands modèles de langage localement en recherche Utilisation de Ollama et Open Web UI sur son ordinateur local ou de l’infrastructure cloud Pourquoi l’IA locale? — Protection de la vie privée — Protection de la propriété intellectuelle — Impact environnemental moindre Les principaux outils Pour débuter : — Ollama — Open Web UI Avancés : — vLLM — Flowise — LangChain/LangGraph Ollama — Moteur d’inférence de modèles de langage et de plongements (Embeddings) — Permet de faire fonctionner des LLM localement Les LLM sont des gros fichiers binaires qui contiennent les poids et la description de la structure d’un réseau de neurones profond. Installation Télécharge le paquet Ollama pour macOS depuis le site web officiel. — Windows et MacOS : comme n’importe quel autre logiciel packagé — Linux : curl -fsSL https://ollama.com/install.sh | sh Choisir un modèle de langage — Présence ou non d’un GPU (AMD, NVIDIA, Apple Silicon) — RAM et VRAM disponible — Fenêtre de contexte — Quantization (précision en bits des poids du modèle) Règle du pouce Un modèle dans Ollama quantisé en 4 bits utilise environ 70% du nombre de paramètres en octets de mémoire, plus un overhead. — Modèle 2b = 2 Go de RAM — Modèle 7b = 5 Go de RAM — Modèle 32b = 23 Go de RAM Il faut ajouter à ça le contexte : — le nombre de jetons n’est pas suffisant pour calculer la taille — ça varie selon l’architecture du modèle — ça reste linéaire dans la plupart des cas Outil super utile : —LLM Model, Can I run it? - NyxKrage - HuggingFace Spaces Types de modèles — Dense — Mixture of Experts — Réflectif — Vision / Multimodal Open Web UI Interface graphique complète pour utiliser des LLM localement Installation avec Docker (testé Windows, MacOS et Linux) docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main Voici un exemple d’analyse de document dans Open Web UI avec le modèle précédent qwen3:8b et un contexte de 16384 tokens (environ 20 pages de PDF ou 10000 mots) Utilisation de Python et Transformers sur une infrastructure HPC Prérequis — Accès à un cluster HPC (comme VALERIA, Calcul Québec, Alliance de recherche numérique du Canada) — Connaissances de base en Python — Accès à une session Jupyter (ou un environnement Python) sur l’instance de calcul Configuration matérielle requise — RAM : Minimum 32 Go (pour les modèles 7B sans quantization) — CPU : 2 coeurs suffisent (le GPU sera le principal accélérateur) — GPU : Sélectionnez un GPU disponible sur le cluster Étape 1 : Configuration de l’environnement sur le noeud frontal Charger les modules nécessaires : module load python/3.12 cuda/12.6 scipy-stack/2025a Créer un environnement virtuel isolé : 1virtualenv --no-download ~/venvs/$NAME source ~/venvs/$NAME/bin/activate Installer les bibliothèques deep learning : pip install --no-index --upgrade pip 2pip install --no-index transformers torch accelerate Pourquoi --no-index ? Cette option force pip à utiliser uniquement les packages déjà disponibles dans l’environnement module, ce qui est plus rapide et plus fiable sur les clusters HPC. Enregistrer l’environnement pour JupyterLab : python -m ipykernel install --name ${NAME} --user Étape 2 : Téléchargement du modèle depuis le noeud frontal Ouvrir une session Python pour télécharger les fichiers du modèle : 1python 1import torch from transformers import AutoModelForCausalLM, AutoTokenizer 3 # Spécifier le modèle souhaité 5model_name = "Qwen/Qwen2.5-7B-Instruct" 7# Télécharger le tokenizer tokenizer = AutoTokenizer.from_pretrained(model_name) 9 # Télécharger le modèle 11 model = AutoModelForCausalLM.from_pretrained(model_name) Étape 3 : Configuration sur l’instance de calcul Sélectionner et charger la collection de modules appropriés pour l’instance de calcul. Charger le kernel virtuel créé précédemment dans JupyterLab. Étape 4 : Code d’exécution sur l’instance de calcul 1import json import torch 3from transformers import AutoModelForCausalLM, AutoTokenizer from tqdm import tqdm 5 # Configuration 7model_name = "Qwen/Qwen2.5-7B-Instruct" number_of_menus = 5 9 # Charger le modèle et le tokenizer 11 device = "cuda" tokenizer = AutoTokenizer.from_pretrained(model_name) 13 model = AutoModelForCausalLM.from_pretrained(model_name).to(device) Bonnes pratiques — Gestion de la mémoire : Utilisez la quantization pour réduire l’empreinte mémoire — Optimisation des performances : Profitez du parallélisme des GPU dans les serveurs. Les processeurs NVIDIA reliés avec NVLink fonctionnent comme si c’était un seul gros processeur. — Reproductibilité : Sauvegardez les versions des bibliothèques utilisées — Sécurité : Ne stockez jamais de données sensibles dans les notebooks Jupyter. Il faut vider la sortie avant de sauvegarder et versionner dans Git.