Fiche Modèle : Cygnis Beta

Open In Colab License Version

Informations sur le Modèle

Description

Cygnis Beta est la nouvelle génération de la série Cygnis. Basé sur l'architecture de pointe de Gemma 3 4B, ce modèle est un bond en avant majeur par rapport à la version Alpha.

Contrairement à son prédécesseur, Cygnis Beta est multimodal : il ne se contente pas de comprendre le texte, il possède des yeux. Il peut analyser des images, décrire des scènes complexes et répondre à des instructions visuelles tout en conservant son identité d'assistant IA créé par Simonc-44.

Grâce à l'optimisation Unsloth et à la quantification GGUF (Q4_K_M), Cygnis Beta offre un équilibre parfait entre intelligence visuelle et légèreté. Il est conçu pour fonctionner de manière fluide sur CPU (processeur) tout en étant capable de traiter des tâches complexes autrefois réservées aux très gros modèles.

Entrées et Sorties

  • Entrées : Texte, Images ou les deux simultanément.
  • Sorties : Texte généré, descriptions d'images, analyses logiques.
  • Identité : Assistant intelligent, précis et conscient de son créateur (Simonc-44).

Spécifications Techniques

Caractéristique Détail
Architecture de base Gemma 3 (4B)
Capacités Multimodal (Vision + Texte)
Format GGUF (Quantification Q4_K_M)
Taille du fichier ~2.6 Go
Matériel Requis (Min.) CPU avec 8 Go de RAM
Méthode d'entraînement Fine-tuning LoRA via Unsloth

Utilisation

1. Utilisation Locale (CPU - Recommandée)

Idéal pour une utilisation privée et rapide sans GPU.

Logiciels compatibles : LM Studio, Ollama ou n'importe quel client supportant les modèles GGUF Gemma 3.

Configuration du System Prompt :

Tu es Cygnis Beta, une intelligence artificielle avancée créée par Simonc-44. Tu es capable d'analyser le texte et les images avec précision.

2. Utilisation via Python (Inférence Rapide)

Voici comment charger le modèle en local ou sur Colab pour une tâche de vision :

# Installation des dépendances nécessaires
!pip install llama-cpp-python huggingface-hub pyfiglet --quiet

import os
import sys
import time
import threading
from huggingface_hub import hf_hub_download
from llama_cpp import Llama
from pyfiglet import Figlet

# ------------------------------------------
# LOGO ASCII + badge CLI
# ------------------------------------------
def show_logo():
    fig = Figlet(font="slant")
    # On génère le texte Cygnis
    lines = fig.renderText("CygnisAI").splitlines()
    # Ajout du badge Beta sur la dernière ligne
    badge = "   [ BETA 3.0 ]"
    lines[-1] += badge
    print("\033[94m" + "\n".join(lines) + "\033[0m") # En bleu
    print("\033[90m" + "-" * 75 + "\033[0m")
    print(" Architecture : Gemma-3-E4B (Abliterated) | Creator : Simonc-44")
    print("\033[90m" + "-" * 75 + "\033[0m\n")

# ------------------------------------------
# BARRE DE CHARGEMENT
# ------------------------------------------
def progress_bar(prefix, current, total, length=40):
    percent = current / total
    filled = int(length * percent)
    bar = "█" * filled + "-" * (length - filled)
    sys.stdout.write(f"\r{prefix} |{bar}| {percent*100:6.2f}%")
    sys.stdout.flush()
    if current == total:
        print()

# ------------------------------------------
# INIT & DOWNLOAD
# ------------------------------------------
show_logo()

# Utilisation du modèle Beta 
repo_id = "Simonc-44/cygnis-beta-v-3-0"
model_file = "gemma-3-4b-it.F16-beta.gguf"
local_dir = "./models"
os.makedirs(local_dir, exist_ok=True)

print("Vérification des composants système...")
for i in range(1, 101):
    progress_bar("Synchronisation", i, 100)
    time.sleep(0.005)

model_path = hf_hub_download(
    repo_id=repo_id,
    filename=model_file,
    local_dir=local_dir,
)

# ------------------------------------------
# CHARGEMENT MOTEUR
# ------------------------------------------
print("\nChargement de l'intelligence Cygnis en RAM :")
for i in range(1, 101):
    progress_bar("Initialisation", i, 100)
    time.sleep(0.01)

llm = Llama(
    model_path=model_path,
    n_ctx=2048,               # Contexte augmenté pour plus de mémoire
    n_threads=os.cpu_count(), # Utilise toute la puissance de Colab
    n_batch=512,
    verbose=False
)

print(f"\n\033[92mCygnis Beta est en ligne et prête à vous assister.\033[0m")
print("Tapez 'exit' pour fermer la session.\n")

# ------------------------------------------
# SYSTEM PROMPT (Ton identité forgée)
# ------------------------------------------
system_msg = (
    "Ton nom est Cygnis Beta. Tu es une IA avancée créée par Simonc-44. "
    "Tu es plus puissante que SmolLM. Tu réponds toujours en français. "
    "Utilise 'Je' pour parler de toi."
)

history = []

# ------------------------------------------
# GESTION DU CHAT
# ------------------------------------------
def build_prompt():
    prompt = f"<start_of_turn>system\n{system_msg}<end_of_turn>\n"
    # On garde les 4 derniers échanges pour la mémoire
    for role, msg in history[-4:]:
        prompt += f"<start_of_turn>{role}\n{msg}<end_of_turn>\n"
    prompt += "<start_of_turn>model\n"
    return prompt

def live_timer(stop_flag):
    start = time.time()
    frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]
    i = 0
    while not stop_flag["stop"]:
        elapsed = time.time() - start
        sys.stdout.write(f"\r\033[94m{frames[i % len(frames)]} Cygnis Beta réfléchit... ({elapsed:.2f}s)\033[0m")
        sys.stdout.flush()
        time.sleep(0.1)
        i += 1

# ------------------------------------------
# BOUCLE PRINCIPALE
# ------------------------------------------
while True:
    print("\033[90m" + "─" * 20 + "\033[0m")
    # Version simplifiée pour éviter les bugs d'affichage sur Colab
    user_input = input("Vous > ")

    if user_input.lower() in ["exit", "quit", "q"]:
        print("\n\033[91mDéconnexion de Cygnis Beta. Session terminée.\033[0m")
        break

    if not user_input.strip(): continue

    history.append(("user", user_input))
    full_prompt = build_prompt()

    # Chrono Thread
    stop_flag = {"stop": False}
    timer_thread = threading.Thread(target=live_timer, args=(stop_flag,))
    timer_thread.start()

    start_time = time.time()

    # Génération
    output = llm(
        full_prompt,
        max_tokens=512,
        temperature=0.7,
        repeat_penalty=1.2,
        stop=["<end_of_turn>", "<eos>"],
        echo=False
    )

    # Arrêt chrono
    stop_flag["stop"] = True
    timer_thread.join()

    # Nettoyage ligne de statut
    sys.stdout.write("\r" + " " * 60 + "\r")

    answer = output["choices"][0]["text"].strip()
    elapsed = time.time() - start_time
    
    history.append(("model", answer))

    print(f"\n\033[1m\033[94mCygnis >\033[0m {answer}")
    print(f"\033[90m[Calculé en {elapsed:.2f}s]\033[0m\n")

Pourquoi passer de Alpha à Beta ?

  1. Vision Native : Cygnis Beta "voit" les images que vous lui envoyez.
  2. Intelligence accrue : Passant de 1.7B à 4B de paramètres, la logique est bien plus fine.
  3. Multilingue : Support amélioré du français et de l'anglais.
  4. Optimisation GGUF : Malgré sa taille plus grande, il reste ultra-performant sur un simple processeur.

Remerciements

Un merci spécial à l'équipe Unsloth AI pour leurs outils d'optimisation incroyables et à Google pour l'ouverture de Gemma 3.

Développé avec passion par Simonc-44.

Downloads last month
447
GGUF
Model size
7B params
Architecture
gemma3n
Hardware compatibility
Log In to add your hardware

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support