Fiche Modèle : Cygnis Beta
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 ?
- Vision Native : Cygnis Beta "voit" les images que vous lui envoyez.
- Intelligence accrue : Passant de 1.7B à 4B de paramètres, la logique est bien plus fine.
- Multilingue : Support amélioré du français et de l'anglais.
- 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
16-bit