> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-fr/modeles-de-langage/mistral-mixtral.md).

# Mistral et Mixtral

Exécutez les modèles Mistral et Mixtral sur les GPU Clore.ai

{% hint style="info" %}
**De nouvelles versions sont disponibles !** Découvrez [**Mistral Small 3.1**](/guides/guides_v2-fr/modeles-de-langage/mistral-small.md) (24B, Apache 2.0, tient sur une RTX 4090) et [**Mistral Large 3**](/guides/guides_v2-fr/modeles-de-langage/mistral-large3.md) (675B MoE, classe frontière).
{% endhint %}

Exécutez les modèles Mistral et Mixtral pour une génération de texte de haute qualité.

{% hint style="success" %}
Tous les exemples peuvent être exécutés sur des serveurs GPU loués via [la place de marché CLORE.AI](https://clore.ai/marketplace).
{% endhint %}

## Louer sur CLORE.AI

1. Visitez [la place de marché CLORE.AI](https://clore.ai/marketplace)
2. Filtrez par type de GPU, VRAM et prix
3. Choisissez **À la demande** (tarif fixe) ou **Spot** (prix d'enchère)
4. Configurez votre commande :
   * Sélectionnez l'image Docker
   * Définissez les ports (TCP pour SSH, HTTP pour les interfaces web)
   * Ajoutez des variables d'environnement si nécessaire
   * Entrez la commande de démarrage
5. Sélectionnez le paiement : **CLORE**, **BTC**, ou **USDT/USDC**
6. Créez la commande et attendez le déploiement

### Accédez à votre serveur

* Trouvez les détails de connexion dans **Mes commandes**
* Interfaces web : utilisez l'URL du port HTTP
* SSH : `ssh -p <port> root@<proxy-address>`

## Aperçu du modèle

| Modèle              | Paramètres           | VRAM   | Spécialité             |
| ------------------- | -------------------- | ------ | ---------------------- |
| Mistral-7B          | 7B                   | 8 Go   | Usage général          |
| Mistral-7B-Instruct | 7B                   | 8 Go   | Chat/instructions      |
| Mixtral-8x7B        | 46.7B (12.9B active) | 24GB   | MoE, meilleure qualité |
| Mixtral-8x22B       | 141B                 | 80 Go+ | Plus grand MoE         |

## Déploiement rapide

**Image Docker :**

```
pytorch/pytorch:2.11.0-cuda12.8-cudnn9-runtime
```

**Ports :**

```
22/tcp
8000/http
```

**Commande :**

```bash
pip install vllm && \
python -m vllm.entrypoints.openai.api_server \\
    --model mistralai/Mistral-7B-Instruct-v0.2 \
    --port 8000
```

## Accéder à votre service

Après le déploiement, trouvez votre `http_pub` URL dans **Mes commandes**:

1. Accédez à **Mes commandes** la page
2. Cliquez sur votre commande
3. Trouvez le `http_pub` URL (par ex., `abc123.clorecloud.net`)

Utilisez `https://YOUR_HTTP_PUB_URL` au lieu de `localhost` dans les exemples ci-dessous.

## Options d'installation

### Avec Ollama (le plus simple)

```bash

# Installer Ollama
curl -fsSL https://ollama.com/install.sh | sh

# Exécuter Mistral
ollama run mistral

# Exécuter Mixtral
ollama run mixtral
```

### Avec vLLM

```bash
pip install vllm

# Démarrer le serveur
python -m vllm.entrypoints.openai.api_server \\
    --model mistralai/Mistral-7B-Instruct-v0.2 \
    --dtype float16
```

### Utilisation de Transformers

```bash
pip install transformers accelerate
```

## Mistral-7B avec Transformers

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "mistralai/Mistral-7B-Instruct-v0.2"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto"
)

messages = [
    {"role": "user", "content": "Explique l'informatique quantique en termes simples"}
]

inputs = tokenizer.apply_chat_template(
    messages,
    return_tensors="pt"
).to("cuda")

outputs = model.generate(
    inputs,
    max_new_tokens=500,
    do_sample=True,
    temperature=0.7,
    top_p=0.95
)

response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
```

## Mixtral-8x7B

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto"
)

messages = [
    {"role": "user", "content": "Écrivez une fonction Python pour calculer les nombres de Fibonacci"}
]

inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to("cuda")

outputs = model.generate(
    inputs,
    max_new_tokens=1000,
    do_sample=True,
    temperature=0.7
)

print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```

## Modèles quantifiés (moins de VRAM)

### Quantification sur 4 bits

```python
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
import torch

quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16,
    bnb_4bit_quant_type="nf4"
)

model = AutoModelForCausalLM.from_pretrained(
    "mistralai/Mixtral-8x7B-Instruct-v0.1",
    quantization_config=quantization_config,
    device_map="auto"
)
```

### GGUF avec llama.cpp

```bash

# Télécharger le modèle GGUF
wget https://huggingface.co/bartowski/Mistral-7B-Instruct-v0.3-GGUF/resolve/main/Mistral-7B-Instruct-v0.3-Q4_K_M.gguf

# Exécuter avec llama.cpp
./main -m Mistral-7B-Instruct-v0.3-Q4_K_M.gguf \
    -p "Expliquez l'apprentissage automatique" \
    -n 500
```

## Serveur vLLM (production)

```bash
python -m vllm.entrypoints.openai.api_server \\
    --model mistralai/Mistral-7B-Instruct-v0.2 \
    --dtype float16 \
    --max-model-len 8192 \
    --gpu-memory-utilization 0.9
```

### API compatible OpenAI

```python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="not-needed"
)

response = client.chat.completions.create(
    model="mistralai/Mistral-7B-Instruct-v0.2",
    messages=[
        {"role": "user", "content": "Quelle est la capitale de la France ?"}
    ],
    temperature=0.7,
    max_tokens=500
)

print(response.choices[0].message.content)
```

## Flux continu

```python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="x")

stream = client.chat.completions.create(
    model="mistralai/Mistral-7B-Instruct-v0.2",
    messages=[{"role": "user", "content": "Écrivez une histoire sur un robot"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
```

## Appel de fonction

Mistral prend en charge l'appel de fonctions :

```python
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="x")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Obtenir la météo pour un lieu",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {"type": "string"},
                    "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
                },
                "required": ["location"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="mistralai/Mistral-7B-Instruct-v0.2",
    messages=[{"role": "user", "content": "Quel temps fait-il à Paris ?"}],
    tools=tools
)

print(response.choices[0].message.tool_calls)
```

## Interface Gradio

```python
import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "mistralai/Mistral-7B-Instruct-v0.2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    torch_dtype=torch.float16,
    device_map="auto"
)

def chat(message, history, temperature, max_tokens):
    messages = []
    for h in history:
        messages.append({"role": "user", "content": h[0]})
        messages.append({"role": "assistant", "content": h[1]})
    messages.append({"role": "user", "content": message})

    inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to("cuda")

    outputs = model.generate(
        inputs,
        max_new_tokens=max_tokens,
        temperature=temperature,
        do_sample=True
    )

    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    # Extraire la réponse de l'assistant
    return response.split("[/INST]")[-1].strip()

demo = gr.ChatInterface(
    fn=chat,
    additional_inputs=[
        gr.Slider(0.1, 2.0, value=0.7, label="Température"),
        gr.Slider(100, 2000, value=500, step=100, label="Jetons max")
    ],
    title="Chat Mistral-7B"
)

demo.launch(server_name="0.0.0.0", server_port=7860)
```

## Comparaison des performances

### Débit (jetons/sec)

| Modèle            | RTX 3060 | RTX 3090 | RTX 4090 | A100 40 Go |
| ----------------- | -------- | -------- | -------- | ---------- |
| Mistral-7B FP16   | 45       | 80       | 120      | 150        |
| Mistral-7B Q4     | 70       | 110      | 160      | 200        |
| Mixtral-8x7B FP16 | -        | -        | 30       | 60         |
| Mixtral-8x7B Q4   | -        | 25       | 50       | 80         |
| Mixtral-8x22B Q4  | -        | -        | -        | 25         |

### Temps jusqu'au premier jeton (TTFT)

| Modèle        | RTX 3090 | RTX 4090 | A100   |
| ------------- | -------- | -------- | ------ |
| Mistral-7B    | 80ms     | 50ms     | 35 ms  |
| Mixtral-8x7B  | -        | 150 ms   | 90ms   |
| Mixtral-8x22B | -        | -        | 200 ms |

### Longueur de contexte vs VRAM (Mistral-7B)

| Contexte | FP16  | Q8    | Q4   |
| -------- | ----- | ----- | ---- |
| 4K       | 15 Go | 9GB   | 5 Go |
| 8K       | 18 Go | 11GB  | 7 Go |
| 16K      | 24GB  | 15 Go | 9GB  |
| 32K      | 36GB  | 22 Go | 14GB |

## Exigences en VRAM

| Modèle        | FP16  | 8-bit | 4-bit |
| ------------- | ----- | ----- | ----- |
| Mistral-7B    | 14GB  | 8 Go  | 5 Go  |
| Mixtral-8x7B  | 90GB  | 45GB  | 24GB  |
| Mixtral-8x22B | 180GB | 90GB  | 48GB  |

## Cas d’usage

### Génération de code

```python
prompt = """
Écrivez une classe Python pour un client d'API REST avec :
- Gestion de l'authentification
- Logique de nouvelle tentative
- Gestion des erreurs
"""
```

### Analyse des données

```python
prompt = """
Analysez ces données et fournissez des informations :
Ventes T1 : 100 k$
Ventes T2 : 150 k$
Ventes T3 : 120 k$
Ventes T4 : 200 k$
"""
```

### Écriture créative

```python
prompt = """
Écrivez une courte histoire sur une IA qui prend conscience d'elle-même,
dans le style d'Isaac Asimov.
"""
```

## Dépannage

### Mémoire insuffisante

* Utilisez une quantification 4 bits
* Utilisez Mistral-7B au lieu de Mixtral
* Réduisez max\_model\_len

### Génération lente

* Utilisez vLLM pour la production
* Activez Flash Attention
* Utilisez le parallélisme de tenseurs pour plusieurs GPU

### Qualité de sortie médiocre

* Ajustez la température (0.1-0.9)
* Utilisez la variante instruct
* De meilleurs prompts système

## Estimation des coûts

Tarifs typiques du marché CLORE.AI (en 2024) :

| GPU        | Tarif horaire | Tarif journalier | Session de 4 heures |
| ---------- | ------------- | ---------------- | ------------------- |
| RTX 3060   | \~$0.03       | \~$0.70          | \~$0.12             |
| RTX 3090   | \~$0.06       | \~$1.50          | \~$0.25             |
| RTX 4090   | \~$0.10       | \~$2.30          | \~$0.40             |
| A100 40 Go | \~$0.17       | \~$4.00          | \~$0.70             |
| A100 80 Go | \~$0.25       | \~$6.00          | \~$1.00             |

*Les prix varient selon le fournisseur et la demande. Vérifiez* [*la place de marché CLORE.AI*](https://clore.ai/marketplace) *les tarifs actuels.*

**Économisez de l'argent :**

* Utilisez le **Spot** marché pour les travaux interrompables — environ un tiers des serveurs ont un prix spot inférieur au tarif à la demande (médiane \~13 % de remise), les autres s'alignent dessus
* Payez avec **CLORE** jetons
* Comparez les prix entre différents fournisseurs

## Étapes suivantes

* [vLLM](/guides/guides_v2-fr/modeles-de-langage/vllm.md) - Diffusion en production
* [Ollama](/guides/guides_v2-fr/modeles-de-langage/ollama.md) - Déploiement facile
* [DeepSeek-V3](/guides/guides_v2-fr/modeles-de-langage/deepseek-v3.md) - Meilleur modèle de raisonnement
* [Qwen2.5](/guides/guides_v2-fr/modeles-de-langage/qwen25.md) - Alternative multilingue


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-fr/modeles-de-langage/mistral-mixtral.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
