vendredi 5 septembre 2025

Déploiement Apertus-8B sur Ollama

🤖 Déploiement Apertus-8B sur Ollama


Guide POC : Déployer Apertus-8B sur Ollama

📋 Analyse du document original

Corrections importantes identifiées :

  • ✅ Le modèle Apertus-8B existe bien sur HuggingFace
  • ❌ Le contexte n'est pas 65k tokens mais 65,536 tokens (valeur correcte)
  • ❌ Le Modelfile proposé contient des erreurs de syntaxe
  • ⚠️ Architecture xIELU + AdEMAMix : nécessite vérification de compatibilité avec llama.cpp

🎯 Approche POC Simplifiée

Option 1 : Import direct Safetensors (Recommandé pour POC)

# 1. Télécharger le modèle
huggingface-cli download swiss-ai/Apertus-8B-2509 --local-dir ./apertus-8b

# 2. Créer le Modelfile
echo "FROM ./apertus-8b" > Modelfile

# 3. Importer dans Ollama
ollama create apertus-8b -f Modelfile

# 4. Tester
ollama run apertus-8b

Option 2 : Via Hugging Face Hub (Plus simple)

# Import direct depuis HF (si disponible en GGUF)
ollama run hf.co/swiss-ai/Apertus-8B-2509

Option 3 : Conversion manuelle vers GGUF

# Installation des dépendances
pip install transformers torch sentencepiece

# Clone du repo llama.cpp
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make

# Téléchargement du modèle
huggingface-cli download swiss-ai/Apertus-8B-2509 --local-dir ../apertus-8b

# Conversion vers GGUF
python convert_hf_to_gguf.py ../apertus-8b --outdir ../apertus-8b-gguf --outtype f16

# Création du Modelfile
echo "FROM ../apertus-8b-gguf/ggml-model-f16.gguf" > ../Modelfile

# Import dans Ollama
cd ..
ollama create apertus-8b -f Modelfile

🔧 Modelfile correct pour Ollama

# Modelfile corrigé
FROM /path/to/apertus-8b

# Paramètres recommandés pour Apertus
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER num_ctx 65536

# Template de chat (à adapter selon les besoins)
TEMPLATE """<|system|>
{{ .System }}</s>
<|user|>
{{ .Prompt }}</s>
<|assistant|>
"""

# Message système par défaut
SYSTEM """Vous êtes Apertus, un assistant IA multilingue développé par les institutions suisses EPFL, ETH Zurich et CSCS. Vous supportez plus de 1000 langues et êtes conçu pour être transparent, conforme et utile."""

⚠️ Points d'attention techniques

Architecture spécifique

  • xIELU activation : fonction d'activation custom
  • AdEMAMix optimizer : optimiseur spécialisé
  • Ces éléments pourraient nécessiter des adaptations dans llama.cpp

Vérifications de compatibilité

# Test de base après import
ollama run apertus-8b "Bonjour, peux-tu me parler en français ?"

# Test multilingue
ollama run apertus-8b "Can you respond in Swiss German?"

# Test de contexte long
ollama run apertus-8b "Résume ce long texte..." # (avec un texte de plusieurs milliers de tokens)

🚀 Script automatisé POC

#!/bin/bash
# poc_apertus_ollama.sh

set -e

echo "🚀 Déploiement POC Apertus-8B sur Ollama"

# Variables
MODEL_NAME="apertus-8b-poc"
HF_REPO="swiss-ai/Apertus-8B-2509"
WORK_DIR="./apertus_poc"

# Création du répertoire de travail
mkdir -p $WORK_DIR
cd $WORK_DIR

# Téléchargement du modèle
echo "📥 Téléchargement du modèle..."
huggingface-cli download $HF_REPO --local-dir ./model

# Création du Modelfile
echo "📝 Création du Modelfile..."
cat > Modelfile << EOF
FROM ./model

PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 65536

SYSTEM """Vous êtes Apertus, un assistant IA multilingue développé par les institutions suisses. Vous supportez plus de 1000 langues."""
EOF

# Import dans Ollama
echo "🔧 Import dans Ollama..."
ollama create $MODEL_NAME -f Modelfile

# Tests basiques
echo "🧪 Tests de base..."
echo "Test français:"
ollama run $MODEL_NAME "Bonjour ! Peux-tu te présenter en français ?"

echo -e "\nTest multilingue:"
ollama run $MODEL_NAME "Please introduce yourself in English"

echo -e "\n✅ POC terminé ! Utilisez: ollama run $MODEL_NAME"

📊 Tests de validation

Tests fonctionnels

  1. Réponse multilingue : vérifier le support des 1000+ langues
  2. Contexte long : tester avec des prompts approchant 65k tokens
  3. Performance : mesurer les temps de réponse
  4. Cohérence : comparer avec le modèle original sur HF

Commandes de test

# Test de performance
time ollama run apertus-8b "Explain quantum computing"

# Test de mémoire
ollama run apertus-8b "Remember this: [long context]. Now answer: [question]"

# Test multilingue spécifique Suisse
ollama run apertus-8b "Chuchichäschtli" # Test en suisse-allemand

🎯 Résultats attendus

Si le POC fonctionne :

  • ✅ Import réussi dans Ollama
  • ✅ Réponses multilingues cohérentes
  • ✅ Support du contexte long (65k tokens)
  • ✅ Performance acceptable

Limitations potentielles :

  • ⚠️ Architecture xIELU pourrait ne pas être totalement compatible
  • ⚠️ Certaines optimisations AdEMAMix pourraient être perdues
  • ⚠️ Performance variable selon le hardware

Note importante : Ce guide est optimisé pour un POC rapide. Pour une utilisation en production, une conversion GGUF native et des optimisations supplémentaires seraient recommandées.


🛠️ Recommandations Techniques Spécifiques

Configuration Modelfile Optimisée :

modelfile
FROM apertus-8b-q4_K_M.gguf

TEMPLATE """<|begin_of_text|><|start_header_id|>system<|/start_header_id|>
{{ .System }}<|eot_id|><|start_header_id|>user<|/start_header_id|>
{{ .Prompt }}<|eot_id|><|start_header_id|>assistant<|/start_header_id|>
"""

PARAMETER temperature 0.7
PARAMETER top_k 40
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1
PARAMETER num_ctx 32768  # Exploiter contexte étendu
PARAMETER stop "<|eot_id|>"


Option A : Modèles Pré-Configurés

bash
# Modèles déjà optimisés pour contexte business
ollama pull codellama:13b-instruct  # Code + analyse
ollama pull vicuna:13b-v1.5          # Conversations longues
ollama pull nous-hermes2:34b         # Reasoning avancé


Cette approche vous permet de tester l'IA locale tout en gardant votre solution opérationnelle !

swiss-ai/Apertus-8B-2509 · Hugging Face

https://huggingface.co/swiss-ai/Apertus-8B-2509

Tu peux maintenant interagir avec le modèle via l’interface Ollama ou en ligne de commande :

              ollama run apertus

Teste avec des prompts multilingues ou longs contextes (jusqu’à 65k tokens pris en charge).

Je dois dire que cette solution Suisse me semble très intéressant   



Mais les LLM sont instable, il faut une gouvernance de la cybersécurité voir https://clubsp2013.blogspot.com/2025/09/tableau-de-synthese-qui-integre-laxe-de.html 

---

**📌 Structure du pipeline :**

2. **Chargement du modèle**  

3. **Utilisation de `llama.cpp`**  

4. **Inférence**  


---


Aucun commentaire:

Enregistrer un commentaire

Merci pour ce commentaire