> For the complete documentation index, see [llms.txt](https://unsloth.ai/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://unsloth.ai/docs/fr/notions-de-base/inference-and-deployment/lm-studio.md).

# Déployer des modèles vers LM Studio

Vous pouvez exécuter et déployer directement dans LM Studio votre LLM affiné. [LM Studio](https://lmstudio.ai/) permet l’exécution et le déploiement faciles de **GGUF** modèles (format llama.cpp).

Vous pouvez utiliser notre [notebook LM Studio](https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/FunctionGemma_\(270M\)-LMStudio.ipynb) ou suivre les instructions ci-dessous :

1. **Exportez votre modèle affiné Unsloth vers `.gguf`**
2. **Importez / téléchargez le GGUF dans LM Studio**
3. **Chargez-le dans Chat** (ou exécutez-le derrière une API locale compatible OpenAI)

<div><figure><img src="/files/56fa2b591850048e0f10c73b35fdfc55fa960a0f" alt="" width="375"><figcaption><p>Avant l’affinage dans LM Studio</p></figcaption></figure> <figure><img src="/files/31b5afa4c79c41f8bdc839fb3678c4d8f245cce0" alt="" width="375"><figcaption><p>Après l’affinage dans LM Studio</p></figcaption></figure></div>

### 1) Exporter en GGUF (depuis Unsloth)

Si vous avez déjà exporté un `.gguf`, passez à **Importation dans LM Studio**.

```python
# Enregistrer localement (crée des artefacts GGUF dans le dossier)
model.save_pretrained_gguf("my_model_gguf", tokenizer, quantization_method = "q4_k_m")
# model.save_pretrained_gguf("my_model_gguf", tokenizer, quantization_method = "q8_0")
# model.save_pretrained_gguf("my_model_gguf", tokenizer, quantization_method = "f16")

# Ou pousser GGUF vers le Hugging Face Hub
model.push_to_hub_gguf("hf_username/my_model_gguf", tokenizer, quantization_method = "q4_k_m")
```

{% hint style="info" %}
`q4_k_m` est généralement la valeur par défaut pour les exécutions locales.

`q8_0` est l’optimum pour une qualité proche de la précision complète.

`f16` est le plus volumineux / le plus lent, mais avec la précision originale non quantifiée.
{% endhint %}

### 2) Importer le GGUF dans LM Studio

{% tabs %}
{% tab title="Importation en CLI (lms import)" %}
LM Studio fournit une CLI appelée `lms` qui peut importer un `.gguf` local dans le dossier des modèles de LM Studio.

**Importer un fichier GGUF :**

```bash
lms import /path/to/model.gguf
```

**Conserver le fichier original (copier au lieu de déplacer) :**

```bash
lms import /path/to/model.gguf --copy
```

<details>

<summary><strong>Cliquez pour plus de paramètres privés personnalisables</strong></summary>

**Conserver le modèle à son emplacement (lien symbolique) :**

C’est utile pour les grands modèles stockés sur un disque dédié.

```bash
lms import /path/to/model.gguf --symbolic-link
```

**Ignorer les invites et choisir vous-même l’espace de noms cible :**

```bash
lms import /path/to/model.gguf --user-repo my-user/my-finetuned-models
```

**Exécution à blanc (montre ce qui va se passer) :**

```bash
lms import /path/to/model.gguf --dry-run
```

</details>

Après l’importation, le modèle devrait apparaître dans LM Studio sous **Mes modèles**.

<figure><img src="/files/e8249e8c90c624ecb1356f584efc210fc9c40335" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Depuis Hugging Face" %}
Si vous avez poussé votre dépôt GGUF vers Hugging Face, vous pouvez le télécharger directement depuis LM Studio.

**Option A : utilisez le téléchargeur intégré à l’application LM Studio**

1. Ouvrez LM Studio
2. Allez dans l’onglet **Discover** onglet
3. Recherchez `hf_username/repo_name` (ou collez l’URL Hugging Face)
4. Téléchargez la quantification que vous voulez (par ex. `Q4_K_M`)

**Option B : utilisez le téléchargeur CLI**

```bash
# Télécharger depuis HF par nom de dépôt
lms get hf_username/my_model_gguf

# Choisir une quantification avec @
lms get hf_username/my_model_gguf@Q4_K_M
```

{% endtab %}

{% tab title="Importation manuelle (structure des dossiers)" %}
Si vous ne souhaitez pas utiliser la CLI, vous pouvez placer le `.gguf` fichier dans la structure de répertoires de modèles attendue par LM Studio.

LM Studio s’attend à ce que les modèles ressemblent à ceci :

```
~/.lmstudio/models/
└── publisher/
    └── model/
        └── model-file.gguf
```

Exemple :

```
~/.lmstudio/models/
└── my-name/
    └── my-finetune/
        └── my-finetune-Q4_K_M.gguf
```

Puis ouvrez LM Studio et vérifiez **Mes modèles**.

**Conseil :** Vous pouvez gérer / vérifier votre répertoire de modèles depuis l’onglet **Mes modèles** dans LM Studio.
{% endtab %}
{% endtabs %}

### 3) Charger et discuter dans LM Studio

1. Ouvrez LM Studio → **Chat**
2. Ouvrez le **chargeur de modèle**
3. Sélectionnez votre modèle importé
4. (Facultatif) ajustez les paramètres de chargement (déchargement GPU, longueur du contexte, etc.)
5. Discutez normalement dans l’interface

### 4) Servez votre modèle affiné comme API locale (compatible OpenAI)

LM Studio peut servir votre modèle chargé derrière une API compatible OpenAI (pratique pour des applications comme Open WebUI, des agents personnalisés, des scripts, etc.).

{% tabs %}
{% tab title="Interface graphique (onglet Développeur)" %}

1. Chargez votre modèle dans LM Studio
2. Allez dans l’onglet **Développeur** onglet
3. Démarrez le serveur local
4. Utilisez l’URL de base affichée (la valeur par défaut est généralement `http://localhost:1234/v1`)
   {% endtab %}

{% tab title="CLI (lms load + lms server start)" %}

#### 1) Lister les modèles disponibles

```bash
lms ls
```

#### 2) Chargez votre modèle (arguments facultatifs)

```bash
lms load <model-identifier> --gpu=auto --context-length=8192
```

Remarques :

* `--gpu=1.0` signifie « essayer de décharger 100 % sur le GPU »
* Vous pouvez définir un identifiant stable :

```bash
lms load <model-identifier> --identifier="my-finetuned-model"
```

#### 3) Démarrer le serveur

```bash
lms server start --port 1234
```

{% endtab %}
{% endtabs %}

**Test rapide : lister les modèles**

```bash
curl http://localhost:1234/v1/models
```

**Exemple Python (SDK OpenAI) :**

{% code expandable="true" %}

```python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="lm-studio",  # LM Studio peut ne pas nécessiter de vraie clé ; c’est un espace réservé courant
)

resp = client.chat.completions.create(
    model="model-identifier-from-lm-studio",
    messages=[
        {"role": "system", "content": "Vous êtes un assistant utile."},
        {"role": "user", "content": "Bonjour ! À quoi m’avez-vous été affiné pour faire ?"},
    ],
    temperature=0.7, # ajustez la température selon les besoins de votre modèle
)

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

{% endcode %}

**Exemple cURL (chat completions) :**

{% code expandable="true" %}

```bash
curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "model-identifier-from-lm-studio",
    "messages": [
      {"role": "user", "content": "Dites que ceci est un test !"}
    ],
    "temperature": 0.7 # ajustez la température selon les besoins de votre modèle
  }'
```

{% endcode %}

{% hint style="info" %}
**Astuce de débogage :** Si vous dépannez le formatage / les modèles, vous pouvez inspecter le *brut* prompt que LM Studio envoie au modèle en exécutant : `lms log stream`
{% endhint %}

### Dépannage

#### **Le modèle fonctionne dans Unsloth, mais la sortie de LM Studio est du charabia / se répète**

C’est presque toujours un **décalage entre le modèle d’invite / le modèle de chat**.

LM Studio va **détecter automatiquement** le modèle d’invite à partir des métadonnées GGUF lorsque c’est possible, mais les modèles personnalisés ou mal étiquetés peuvent nécessiter une substitution manuelle.

**Correction :**

1. (globe **Mes modèles** → cliquez sur l’icône engrenage ⚙️ à côté de votre modèle
2. Recherchez **Modèle d’invite** et réglez-le pour qu’il corresponde au modèle avec lequel vous avez entraîné
3. Sinon, dans la barre latérale Chat : activez la **Modèle d’invite** case (vous pouvez forcer son affichage permanent)

#### LM Studio n’affiche pas mon modèle dans « Mes modèles »

* Préférez `lms import /path/to/model.gguf`
* Ou confirmez que le fichier se trouve dans la bonne structure de dossiers : `~/.lmstudio/models/publisher/model/model-file.gguf`

#### OOM / performances lentes

* Utilisez une quantification plus petite (ex : `Q4_K_M`)
* Réduisez la longueur du contexte
* Ajustez le déchargement GPU (paramètres « Valeurs par défaut par modèle » / chargement de LM Studio)

***

### Plus de ressources

* [Article de blog LM Studio + Unsloth](https://lmstudio.ai/blog/functiongemma-unsloth) (Présentation FunctionGemma) :&#x20;
* LM Studio [Documentation Import Models](https://lmstudio.ai/docs/app/advanced/import-model)
* LM Studio [Documentation Prompt Template](https://lmstudio.ai/docs/app/advanced/prompt-template)
* LM Studio [Documentation de l’API compatible OpenAI](https://lmstudio.ai/docs/developer/openai-compat)


---

# 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://unsloth.ai/docs/fr/notions-de-base/inference-and-deployment/lm-studio.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.
