<figure><img src="image_1.png" /></figure>

HAL
open science

# Déployer des LLMs en local

Yannis Bendi-Ouis, Xavier Hinaut

► To cite this version:

Yannis Bendi-Ouis, Xavier Hinaut. Déployer des LLMs en local. Dataquitaine 2024, Mar 2024, Bordeaux, France. hal-04850952

HAL Id: hal-04850952

https://hal.science/hal-04850952v1

Submitted on 20 Dec 2024

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_2.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
Inria

# Déployer des LLMs en Local

<figure><img src="image_3.png" /></figure>
Inria

# Yannis Bendi-Ouis

## Doctorant dans l'équipe Mnemosyne

## Encadré par Xavier Hinaut

<figure><img src="image_4.png" /></figure>

Email :

yannis.bendi-ouis@inria.fr

Site web :

www.naowak.fr
# Qu'est ce qu'un LLM ?

* ChatGPT

<figure><img src="image_5.png" /></figure>

* LLM : Large Language Model (Gros modèle de langage)

* Génère du texte

* Basé sur une architecture : Transformers

* Beaucoup de paramètres/calculs

<figure><img src="image_6.png" /></figure>
# Pourquoi faire du local ?

* Pas besoin de connexion internet

* Force l'utilisation de modèles plus petits et moins énergivores

* Protection des données et de la vie privée

* Décentralisation du pouvoir (toute les données ne vont pas au même endroit)

* Réduction des risques de biais volontaires (propagande, manipulation de masse)

* Modèles ouverts (étudiables, on peut observer ses tendances/biais, maîtrise ses MAJ)

* Possibilités de finetune (contrôle du process de A à Z).
01

# De nombreux modèles

Du choix pour tous
# Hugging Face

<figure><img src="image_7.png" /></figure>

## Hugging Face

**Tasks** Libraries Datasets Languages Licenses
Other

Filter Tasks by name

Multimodal

<figure><img src="image_8.png" /></figure>

Image-Text-to-Text

<figure><img src="image_9.png" /></figure>

Visual Question Answering

<figure><img src="image_10.png" /></figure>

Document Question Answering

Computer Vision

<figure><img src="image_11.png" /></figure>

Depth Estimation

<figure><img src="image_12.png" /></figure>

Image Classification

<figure><img src="image_13.png" /></figure>

Object Detection

<figure><img src="image_14.png" /></figure>

Image Segmentation

<figure><img src="image_15.png" /></figure>

Text-to-Image

<figure><img src="image_16.png" /></figure>

Image-to-Text

<figure><img src="image_17.png" /></figure>

Image-to-Image

<figure><img src="image_18.png" /></figure>

Image-to-Video

<figure><img src="image_19.png" /></figure>

Unconditional Image Generation

<figure><img src="image_20.png" /></figure>

Video Classification

<figure><img src="image_21.png" /></figure>

Text-to-Video

<figure><img src="image_22.png" /></figure>

Zero-Shot Image Classification

Models 559,111

Filter by name

new

Full-text search

11 Sort: Trending

xai-org/grok-1

Text Generation · Updated 1 day ago · ♡ 1.28k

CohereForAI/c4ai-command-r-v01

Text Generation · Updated 1 day ago · ♢ 13k · ♡ 685

xai-org/grok-1

NousResearch/Hermes-2-Pro-Mistral-7B

Text Generation · Updated 5 days ago · ♢ 3.88k · ♡ 242

google/gemma-7b

Text Generation · Updated 21 days ago · ♢ 269k · ♡ 2.46k

stabilityai/sv3d

Image-to-Video · Updated 1 day ago · ♡ 180

cagliostrolab/animagine-xl-3.1

Text-to-Image · Updated 2 days ago · ♢ 8.71k · ♡ 155
Llama 2 & Mistral

∞ Meta

Llama 2

Meta AI

7B, 13B, 70B

<figure><img src="image_23.png" /></figure>

MISTRAL
AI_

7

8X7

Mistral 7B

Mixtral 8x7B
Llama 2 & Mistral

<table><thead><tr><th>Rank</th><th>Model</th><th>Arena Elo</th><th>Organization</th><th>License</th></tr></thead><tbody><tr><td>1</td><td>GPT-4-1106 preview</td><td>1251</td><td>OpenAI</td><td>Proprietary</td></tr><tr><td>1</td><td>GPT-4-0125 preview</td><td>1249</td><td>OpenAI</td><td>Proprietary</td></tr><tr><td>1</td><td>Claude-3 Opus</td><td>1247</td><td>Anthropic</td><td>Proprietary</td></tr><tr><td>4</td><td>Bard... (Gemini Pro)</td><td>1202</td><td>Google</td><td>Proprietary</td></tr><tr><td>4</td><td>Claude-3 Sonnet</td><td>1190</td><td>Anthropic</td><td>Proprietary</td></tr><tr><td>5</td><td>GPT-4-0314</td><td>1185</td><td>OpenAI</td><td>Proprietary</td></tr><tr><td>7</td><td>GPT-4-0613</td><td>1159</td><td>OpenAI</td><td>Proprietary</td></tr><tr><td>7</td><td>Mistral... Large-2402</td><td>1155</td><td>Mistral</td><td>Proprietary</td></tr><tr><td>8</td><td>Owen1... 5-72B-Chat</td><td>1146</td><td>Alibaba</td><td>Qianwen LICENSE</td></tr><tr><td>8</td><td>Claude-1</td><td>1145</td><td>Anthropic</td><td>Proprietary</td></tr><tr><td>8</td><td>Mistral... Medium</td><td>1145</td><td>Mistral</td><td>Proprietary</td></tr><tr><td>12</td><td>Claude-2.0</td><td>1126</td><td>Anthropic</td><td>Proprietary</td></tr><tr><td>12</td><td>Mistral... Next</td><td>1123</td><td>Mistral</td><td>Proprietary</td></tr><tr><td>12</td><td>Gemini Pro... (Dev API)</td><td>1118</td><td>Google</td><td>Proprietary</td></tr><tr><td>13</td><td>Claude-2.1</td><td>1115</td><td>Anthropic</td><td>Proprietary</td></tr><tr><td>13</td><td>Mistral... 8x7b- Instruct- v0.1</td><td>1114</td><td>Mistral</td><td>Apache 2.0</td></tr></tbody></table>
# Quantification

<figure><img src="image_24.png" /></figure>

<figure><img src="image_25.png" /></figure>

2, 3, 4, 5, 6, 7, 8 bits

> Taille d'un modèle quantifié

7B ~ 30 Go → 4 bits → ~ 4 Go

> RAM / VRAM nécessaire

7B ~ 30 Go → 4 bits → ~ 7 Go
# LM Studio

Une interface graphique pour du local
# LM Studio

<figure><img src="image_26.png" /></figure>

LM Studio

> Logiciel propriétaire

> Gratuit

> Facile

> Aucune connaissance en programmation requise

> Installation d'un modèle quantifié à partir de HuggingFace

> Configuration Automatique / Manuelle

<figure><img src="image_27.png" /></figure>

<figure><img src="image_28.png" /></figure>

<figure><img src="image_29.png" /></figure>

<figure><img src="image_30.png" /></figure>
03

Ollama

Intégration facile dans le terminal
et plus encore
# Ollama

* Open source

* Gratuit

* Facile

* Installation et utilisation facile dans un terminal

* Lancement facile d'un serveur

* Plusieurs interfaces graphiques disponibles

* Connexion facile à d'autres applications

<figure><img src="image_31.png" /></figure>

<figure><img src="image_32.png" /></figure>

<figure><img src="image_33.png" /></figure>
04

# Transformer & Llama.cpp

## Du développement en python
# Transformers

* Open source

* Gratuit

* Facile mais développement python

* Implémentation Pytorch & Tensorflow

* Mis à jour très régulièrement

* Accepte énormément d'architecture de LLM

<figure><img src="image_34.png" /></figure>

# Hugging Face

```python
>>> from transformers import AutoModelForCausalLM, AutoTokenizer
>>> device = "cuda"  # the device to load the model onto
```

```python
>>> model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
>>> tokenizer = AutoTokenizer.from_pretrained("mistralai/Mixtral-8x7B-v0.1")
```

```python
>>> prompt = "My favourite condiment is"
```

```python
>>> modelInputs = tokenizer([prompt], return tensors="pt").to device
>>> model.to (device)
```

```python
>>> generated_ids = model generate (**model inputs, max_new_tokens=100, do_sample=True)
>>> tokenizer.batch_decode (generated_ids)[0]
"The expected output"
```
# Llama.cpp

* Open source

* Gratuit

* Facile mais développement C++/python

* Permet l'utilisation de modèle quantifié (GGUF)

* Mis à jour très régulièrement

* Accepte énormément d'architecture de LLM

<figure><img src="image_35.png" /></figure>

<figure><img src="image_36.png" /></figure>

r/LocalLLaMA

Communauté sur Reddit
05

vLLM

Déploiement à grande échelle
# vLLM

<figure><img src="image_37.png" /></figure>

> Librairie open-source

> Fonctionne sur les GPU NVIDIA

> Optimise les calculs et permet de traiter plusieurs utilisateurs en simultané

<figure><img src="image_38.png" /><figcaption>A100</figcaption></figure>

<figure><img src="image_39.png" /><figcaption>Mixtral</figcaption></figure>

<figure><img src="image_40.png" /><figcaption>~ 20 tokens/seconde</figcaption></figure>
Merci !

Suivez-nous sur www.inria.fr