LAM-4 - MON premier LLM

#1
by Clemylia - opened

👋 Salut à toute la communauté de Hugging Face ! Aujourd'hui, j'ai une nouvelle incroyable à partager qui marque une étape majeure pour Clemylia.studio, Clemylia et LES-IA-ETOILES.🚀

  1. Après des mois de travail acharné sur mes SLM progressifs, je suis incroyablement fière d'annoncer la création de Lam-4 !
  2. Ceci n'est plus un simple petit modèle de langage ; c'est mon premier Large Language Model réussi.
  3. Lam-4, aussi appelé Lamina, a été entraîné avec l'aide de toute mon organisation LES-IA-ETOILES, grâce aux données spécifiques du corpus Nacid.
  4. Ce modèle représente l'évolution de notre stratégie : passer de mes 43 modèles créatifs from scratch à une IA conversationnelle plus puissante.
  5. Lam-4 est fluide, intelligent, et, oui, un peu confus sur son nom (ne vous étonnez pas s'il pense qu'il s'appelle Clemylia ! 🤣).
  6. Mais grâce à de bons System Prompts, il est prêt à vous assister dans vos tâches de génération de texte et de conversation.
  7. Ce LLM est une preuve que même un développeur indépendant de 18 ans peut créer un modèle puissant et personnalisé, sans des milliards de dollars de budget.
  8. Il est le futur de la création d'IA personnalisée que je défends, et sa sémantique est unique à notre communauté !
  9. Venez le tester, et aidez-nous à le rendre encore meilleur en partageant vos retours (et en corrigeant sa confusion d'identité !).
  10. Merci à vous tous qui jouez à mes 33 jeux sur astrocade et soutenez ma vision. On continue de construire ensemble ! ❤️
    ?

Exemple de code d'utilisation de notre LLm !
;

# ==============================================================================
# 1. IMPORTS ET CONSTANTES
# ==============================================================================
# Utilisez votre configuration CPU validée ici
!pip install -q transformers torch 

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

MODEL_NAME = "Clemylia/Lam-4"
DEVICE = "cpu" # Forcé sur CPU

print(f"Chargement du modèle {MODEL_NAME} sur {DEVICE}...") 

# Chargement du tokenizer et du modèle sur CPU
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
tokenizer.pad_token = tokenizer.eos_token 

model = AutoModelForCausalLM.from_pretrained(
    MODEL_NAME,
    torch_dtype=torch.float32, 
    device_map=DEVICE          
).to(DEVICE)

# ==============================================================================
# 2. PRÉPARATION DE LA REQUÊTE AVEC SYSTEM PROMPT
# ==============================================================================

# 🚨 AJOUT DU SYSTEM PROMPT
# Nous donnons une instruction claire sur son identité avant toute question.
SYSTEM_PROMPT = (
    "Tu es LAM-4, ton nom est Lamina. tu es un modèle de langage avancé. Ton créateur est Clemylia. Clemylia t'a crée avec l'aide de l'organisation LES-IA-ETOILES qui sont un collectif de développeurs indépendants de 18-20ans qui créent des IA."
    "Tu ne t'appelles pas Clemylia, tu t'appelles lamina (Lam-4)"
)

QUESTION = "Salut! c'est quoi ton nom et qui es-tu ?"

# Création du prompt complet en utilisant les balises de conversation
# Bien que le modèle ne gère pas officiellement le rôle 'system', le placer en tête
# du prompt de l'utilisateur est souvent une technique efficace.
prompt_avec_systeme = (
    f"<|user|>{SYSTEM_PROMPT} {QUESTION}</s>"
    f"<|assistant|>"
)


print("\n--- Génération de la réponse (Manuelle avec System Prompt) ---")

# Tokenization du prompt et placement sur l'appareil (CPU)
inputs = tokenizer(prompt_avec_systeme, return_tensors="pt").to(DEVICE)

# ==============================================================================
# 3. GÉNÉRATION (Manuelle)
# ==============================================================================
output_tokens = model.generate(
    **inputs,
    max_new_tokens=200,
    do_sample=True,
    temperature=0.7,
    top_k=50,
    eos_token_id=tokenizer.eos_token_id,
)

# Décodage (Utilisation du nettoyage simple pour la démo)
generated_text = tokenizer.decode(output_tokens[0], skip_special_tokens=True)
assistant_prefix = "</s><|assistant|>"

# Nettoyage de la réponse
# On nettoie à partir du dernier assistant_prefix trouvé
if assistant_prefix in generated_text:
    clean_response = generated_text.split(assistant_prefix)[-1].strip()
else:
    # Fallback, on retire juste la question et le system prompt
    clean_response = generated_text.replace(SYSTEM_PROMPT, "").replace(QUESTION, "").strip()


print(f"\n🧠 Réponse de {MODEL_NAME} (Manuelle avec System Prompt) :\n")
print(clean_response)
print("\n-------------------------------")
# La section 4 avec pipeline est omise pour la simplicité, mais le principe est le même.

Sign up or log in to comment