Affichage des articles dont le libellé est Apertus-8B. Afficher tous les articles
Affichage des articles dont le libellé est Apertus-8B. Afficher tous les articles

vendredi 5 septembre 2025

Comment installer Apertus.

 Exemple non encore validé

Pour exécuter cette commande et télécharger le modèle Apertus-8B-2509 depuis Hugging Face vers un dossier local ./apertus-8b, voici la marche à suivre pas à pas :


1️⃣ Installer l’outil huggingface-cli

Si ce n’est pas déjà fait, installe la bibliothèque huggingface_hub (qui contient huggingface-cli) :

pip install -U huggingface_hub

2️⃣ S’authentifier auprès de Hugging Face

Certains modèles (comme Apertus-8B-2509) nécessitent d’être connecté à ton compte Hugging Face et d’avoir accepté les conditions d’utilisation du modèle sur sa page.

Puis, dans ton terminal :

huggingface-cli login

Colle ton token quand il est demandé.


3️⃣ Télécharger le modèle

Une fois connecté, exécute ta commande :

huggingface-cli download swiss-ai/Apertus-8B-2509 --local-dir ./apertus-8b

💡 Notes importantes :

  • --local-dir indique où stocker les fichiers du modèle.
  • Si tu veux forcer le téléchargement complet (et pas juste les métadonnées), ajoute --include "*".
  • Si tu veux éviter la mise en cache globale de HF, ajoute --local-dir-use-symlinks False.

Exemple complet :

huggingface-cli download swiss-ai/Apertus-8B-2509 \
  --local-dir ./apertus-8b \
  --local-dir-use-symlinks False \
  --include "*"

4️⃣ Vérifier le contenu

Après téléchargement, tu devrais voir dans ./apertus-8b :

  • config.json
  • tokenizer.json / tokenizer.model
  • pytorch_model-*.bin ou model.safetensors
  • éventuellement des fichiers de configuration supplémentaires


Pour accélérer le téléchargement d’un gros modèle Hugging Face comme swiss-ai/Apertus-8B-2509, il faut jouer sur trois leviers : réseau, méthode de transfert et paramètres CLI.

Voici un plan d’optimisation concret que tu peux appliquer directement.



🚀 1. Préparer l’environnement

  • Connexion filaire : évite le Wi‑Fi si possible, surtout pour des fichiers de plusieurs dizaines de Go.
  • Serveur proche : Hugging Face utilise un CDN, donc un bon peering avec ton FAI aide.
    Si tu es sur un serveur cloud (AWS, GCP, OVH…), choisis une région proche de l’Europe pour réduire la latence.
  • Limiter la concurrence réseau : ferme les autres téléchargements lourds pendant l’opération.

⚙️ 2. Optimiser la commande huggingface-cli

Par défaut, huggingface-cli download télécharge séquentiellement. Tu peux :

  1. Inclure tous les fichiers d’un coup (évite les requêtes multiples) :

    huggingface-cli download swiss-ai/Apertus-8B-2509 \
      --local-dir ./apertus-8b \
      --include "*" \
      --local-dir-use-symlinks False
    
  2. Téléchargement parallèle
    Le CLI ne gère pas nativement le multi-thread, mais tu peux combiner avec aria2c pour paralléliser (voir section 3).

  3. Reprise automatique
    Si la connexion coupe, relancer la même commande reprend là où ça s’est arrêté (grâce au cache HF).


🛠 3. Alternative ultra-rapide avec aria2c

aria2c est un téléchargeur multi-connexion qui peut diviser un gros fichier en segments parallèles.

  1. Installe-le :

    sudo apt install aria2   # Debian/Ubuntu
    brew install aria2       # macOS
    
  2. Récupère la liste des URLs directes depuis Hugging Face :

    huggingface-cli download swiss-ai/Apertus-8B-2509 --include "*" --local-dir ./apertus-8b --resume-download --quiet --token YOUR_HF_TOKEN --max-workers 1 --no-symlinks --output-dir-url
    

    (ou via la page du modèle → clic droit sur chaque fichier → “Copier le lien de téléchargement”)

  3. Lance aria2c avec plusieurs connexions :

    aria2c -x 16 -s 16 -k 1M -d ./apertus-8b "URL_DU_FICHIER"
    
    • -x 16 : 16 connexions simultanées
    • -s 16 : 16 segments
    • -k 1M : taille de segment 1 Mo

📦 4. Option Git LFS (si tu veux tout le repo)

Pour cloner tout le dépôt avec historique minimal :

GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 https://huggingface.co/swiss-ai/Apertus-8B-2509
cd Apertus-8B-2509
git lfs pull --include="*"

⚠️ Plus lourd que huggingface-cli si tu ne veux que les poids.


📋 5. Bonnes pratiques

  • Télécharger en heures creuses (nuit, tôt le matin) pour éviter la saturation réseau.
  • Vérifier l’espace disque avant (les modèles 8B peuvent dépasser 15–20 Go).
  • Utiliser un SSD pour éviter que l’écriture disque ne devienne le goulot d’étranglement.


Parfait, Erol — voici un script Bash complet qui combine huggingface-cli pour l’authentification et la récupération de la liste des fichiers, puis aria2c pour un téléchargement multi-connexion avec reprise automatique.
Il est pensé pour être robuste, reproductible et facile à maintenir.


📜 Script : download_apertus.sh

#!/usr/bin/env bash
set -euo pipefail

# === CONFIGURATION ===
REPO_ID="swiss-ai/Apertus-8B-2509"
LOCAL_DIR="./apertus-8b"
THREADS=16          # Connexions simultanées par fichier
SPLIT=16            # Segments par fichier
SEGMENT_SIZE="1M"   # Taille des segments
HF_TOKEN="${HF_TOKEN:-}"  # Peut être passé en variable d'env

# === PRÉREQUIS ===
command -v huggingface-cli >/dev/null || { echo "❌ huggingface-cli manquant. Installez-le avec : pip install -U huggingface_hub"; exit 1; }
command -v aria2c >/dev/null || { echo "❌ aria2c manquant. Installez-le avec : sudo apt install aria2 ou brew install aria2"; exit 1; }

# === AUTHENTIFICATION ===
if [[ -z "$HF_TOKEN" ]]; then
    echo "🔑 Connexion à Hugging Face..."
    huggingface-cli login
else
    echo "🔑 Utilisation du token HF depuis la variable d'environnement."
    huggingface-cli login --token "$HF_TOKEN" --add-to-git-credential
fi

# === CRÉATION DU DOSSIER LOCAL ===
mkdir -p "$LOCAL_DIR"

# === RÉCUPÉRATION DES URLS DIRECTES ===
echo "📥 Récupération de la liste des fichiers..."
FILE_LIST=$(huggingface-cli list-files "$REPO_ID" --include "*" | grep -v '/$')

# === TÉLÉCHARGEMENT AVEC aria2c ===
echo "🚀 Téléchargement parallèle avec aria2c..."
for FILE in $FILE_LIST; do
    URL="https://huggingface.co/${REPO_ID}/resolve/main/${FILE}?download=true"
    aria2c -x "$THREADS" -s "$SPLIT" -k "$SEGMENT_SIZE" \
           -d "$LOCAL_DIR" -o "$(basename "$FILE")" \
           --continue=true --max-connection-per-server="$THREADS" \
           --min-split-size="$SEGMENT_SIZE" \
           --header="Authorization: Bearer $HF_TOKEN" \
           "$URL"
done

echo "✅ Téléchargement terminé dans : $LOCAL_DIR"

🔹 Points forts

  • Reprise automatique (--continue=true)
  • Multi-connexion (-x et -s) pour saturer ta bande passante
  • Token Hugging Face géré soit par login interactif, soit via variable d’environnement HF_TOKEN
  • Indépendant du cache HF → fichiers directement dans ./apertus-8b
  • Facile à adapter pour d’autres modèles

📦 Utilisation

  1. Sauvegarde le script :

    nano download_apertus.sh
    # colle le contenu ci-dessus
    chmod +x download_apertus.sh
    
  2. Lance-le :

    ./download_apertus.sh
    

    ou avec un token déjà exporté :

    export HF_TOKEN="hf_xxx_ton_token_xxx"
    ./download_apertus.sh
    

💡 Astuce bonus :
Si tu veux vérifier l’intégrité après téléchargement, on peut ajouter un bloc qui calcule les SHA256 et les compare à ceux listés par huggingface-cli list-files --include "*".


Solution simplifiée en 3 étapes

1️⃣ Installer huggingface_hub

Ouvrez un terminal et installez l’outil officiel Hugging Face :

pip install -U huggingface_hub

python.exe -m pip install --upgrade pip

2️⃣ Se connecter à Hugging Face

huggingface-cli login

  • Cette commande télécharge dans le dossier ./apertus-8b.
  • Aucune option supplémentaire n’est requise pour un usage basique.

Pourquoi cette solution est plus simple ?

  • Pas besoin de gérer des options avancées comme --include "*" ou --local-dir-use-symlinks False (les valeurs par défaut fonctionnent bien pour la plupart des cas).
  • Pas de configuration complexe : juste une installation, une authentification et une commande de téléchargement.
  • Moins de risques d’erreurs : idéal pour les utilisateurs qui veulent juste récupérer le modèle sans optimisations poussées.

Vérification rapide

Après téléchargement, vérifiez que le dossier ./apertus-8b contient au moins :

  • config.json
  • tokenizer.json ou tokenizer.model
  • pytorch_model.bin ou model.safetensors

Alternative encore plus simple (si vous utilisez Python)

Si vous préférez éviter la ligne de commande, vous pouvez télécharger le modèle directement en Python avec la bibliothèque huggingface_hub :

from huggingface_hub import snapshot_download

snapshot_download(repo_id="swiss-ai/Apertus-8B-2509", local_dir="./apertus-8b")

Quand utiliser cette solution ?

  • Si vous débutez avec Hugging Face.
  • Si vous n’avez pas besoin d’optimiser la vitesse de téléchargement.
  • Si vous voulez éviter les options CLI complexes.


Ce code est déjà correct sur le principe, mais pour le faire tourner, il faut surtout préparer l’environnement et respecter quelques points spécifiques au modèle Apertus-8B-Instruct-2509.


Voici la marche à suivre pas à pas pour exécuter cette commande en local ou sur un serveur GPU.


1️⃣ Préparer l’environnement Python

Installe Python 3.10+ et crée un environnement virtuel :

python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows

2️⃣ Installer les dépendances

Le modèle nécessite transformers ≥ 4.56.0 (sinon apply_chat_template ne sera pas reconnu) et PyTorch avec support GPU si tu veux utiliser cuda.

pip install --upgrade pip
pip install "transformers>=4.56.0" accelerate torch

Si tu veux la génération plus rapide :

pip install bitsandbytes  # pour chargement 8-bit/4-bit

3️⃣ Accepter les conditions d’utilisation sur Hugging Face

Le dépôt swiss-ai/Apertus-8B-Instruct-2509 est en accès restreint :

  • Connecte-toi sur la page du modèle
  • Clique sur "Agree and access repository"
  • Configure ton token HF :
huggingface-cli login

4️⃣ Lancer ton script

Enregistre ton code dans un fichier, par exemple apertus_test.py, puis exécute :

python apertus_test.py

5️⃣ Conseils pour éviter les erreurs

  • GPU obligatoire pour ce modèle en pleine précision (8B paramètres). Sur CPU, ça risque d’être très lent ou de planter par manque de RAM.
  • Si tu veux réduire la charge mémoire :
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    device_map="auto",
    torch_dtype="auto",
    load_in_8bit=True  # ou load_in_4bit=True
)
  • max_new_tokens=32768 est énorme : commence plutôt avec max_new_tokens=512 pour tester.
  • Si tu veux un format conversationnel correct, apply_chat_template est bien, mais vérifie que le tokenizer du modèle supporte ce format.

💡 Astuce CI/CD (vu ton profil) :
Tu peux intégrer ce script dans un pipeline avec un test rapide (prompt court, génération limitée) pour valider que le modèle est accessible et fonctionnel avant de lancer des batchs plus lourds.



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




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**  


---