Skip to main content
mlx-lm est le package le plus pratique pour travailler avec des LLMs dans l’écosystème MLX. Si vous débutez avec MLX, c’est souvent par là qu’il faut commencer. Il couvre trois usages principaux :
  • tester un modèle en CLI
  • intégrer un modèle dans un script Python
  • exposer un serveur local compatible API

Installer mlx-lm

pip install -U mlx-lm
Si vous ne l’avez pas encore fait, lisez d’abord Installation & Setup.

Mode 1 : ligne de commande

Génération simple

mlx_lm.generate \
  --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --prompt "Explique le machine learning en trois phrases."

Paramètres à connaître

ParamètreRôle
--modelNom du modèle ou chemin local
--promptTexte envoyé au modèle
--max-tokensLongueur maximale de la réponse
--tempNiveau de variation dans la génération
--adapter-pathAdaptateur LoRA à appliquer au modèle

Quand la CLI suffit

La CLI est idéale pour :
  • vérifier qu’un modèle charge bien
  • comparer plusieurs prompts
  • tester un adaptateur LoRA
  • valider rapidement un dataset ou un modèle converti

Mode 2 : API Python

Quand vous voulez intégrer le modèle dans votre propre logique, passez à Python :
from mlx_lm import load, generate

model, tokenizer = load("mlx-community/Mistral-7B-Instruct-v0.3-4bit")

response = generate(
    model,
    tokenizer,
    prompt="Explique l'attention dans un Transformer.",
    max_tokens=300,
)

print(response)

Utiliser un template de chat

Les modèles instruction et chat attendent souvent une mise en forme précise. Le tokenizer la connaît déjà :
from mlx_lm import load, generate

model, tokenizer = load("mlx-community/Llama-3.2-3B-Instruct-4bit")

messages = [
    {"role": "system", "content": "Tu réponds de manière claire et concise."},
    {"role": "user", "content": "Quand utiliser la quantification 4-bit ?"},
]

prompt = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)

response = generate(model, tokenizer, prompt=prompt, max_tokens=250)
print(response)

Streaming en Python

Si vous voulez afficher la réponse au fil de l’eau :
from mlx_lm import load, stream_generate

model, tokenizer = load("mlx-community/Mistral-7B-Instruct-v0.3-4bit")

for token in stream_generate(
    model,
    tokenizer,
    prompt="Raconte une courte histoire de science-fiction.",
    max_tokens=200,
):
    print(token, end="", flush=True)

Mode 3 : serveur local

mlx-lm peut aussi servir un modèle en HTTP. C’est utile si votre app Swift, votre frontend ou un autre outil doit consommer le modèle sans embarquer directement Python.

Lancer le serveur

mlx_lm.server \
  --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --port 8080

Exemple avec le SDK OpenAI

from openai import OpenAI

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

response = client.chat.completions.create(
    model="mlx-community/Mistral-7B-Instruct-v0.3-4bit",
    messages=[
        {"role": "user", "content": "Résume MLX en deux points."}
    ],
)

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

Quand choisir ce mode

Choisissez le serveur si :
  • plusieurs clients doivent partager le même modèle
  • votre frontend ne doit pas connaître Python
  • vous voulez brancher rapidement une app existante sur un modèle local

Comparer les trois modes

ModeBon choix si…
CLIVous testez vite depuis le terminal
PythonVous écrivez un script ou un pipeline
Serveur HTTPVous intégrez le modèle dans une autre application

Problèmes fréquents

Vérifiez d’abord que vous utilisez un modèle Instruct ou Chat, puis appliquez le template de chat du tokenizer quand le modèle en a besoin.
C’est normal. Le premier appel télécharge le modèle puis le met en cache localement.
Essayez une version plus petite ou quantifiée en 4bit. C’est souvent le moyen le plus simple de débloquer la situation.