Tenro_test / Tenro_test.py
kvn420's picture
Create Tenro_test.py
4d4738b verified
#!/usr/bin/env python3
"""
Script pour créer un modèle HuggingFace fonctionnel à partir de zéro
ou adapter un modèle existant
"""
from transformers import (
AutoTokenizer,
AutoModelForCausalLM,
AutoConfig,
GPT2LMHeadModel,
GPT2Tokenizer
)
import torch
import json
def create_basic_model():
"""Crée un modèle de base fonctionnel"""
# Configuration du modèle (petite taille pour test)
config = AutoConfig.from_pretrained("gpt2")
config.vocab_size = 50257
config.n_positions = 1024
config.n_ctx = 1024
config.n_embd = 768
config.n_layer = 12
config.n_head = 12
# Créer le modèle avec cette config
model = GPT2LMHeadModel(config)
# Utiliser le tokenizer GPT-2 standard
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
tokenizer.pad_token = tokenizer.eos_token
return model, tokenizer, config
def save_complete_model(model, tokenizer, config, save_path="./Tenro_V4.1_complete"):
"""Sauvegarde complète avec tous les fichiers requis"""
# Sauvegarder le modèle et tokenizer
model.save_pretrained(save_path)
tokenizer.save_pretrained(save_path)
# Créer generation_config.json
generation_config = {
"_from_model_config": True,
"bos_token_id": tokenizer.bos_token_id or tokenizer.eos_token_id,
"eos_token_id": tokenizer.eos_token_id,
"max_length": 1024,
"pad_token_id": tokenizer.pad_token_id or tokenizer.eos_token_id,
"do_sample": True,
"temperature": 0.7,
"top_p": 0.9,
"repetition_penalty": 1.1
}
with open(f"{save_path}/generation_config.json", "w") as f:
json.dump(generation_config, f, indent=2)
print(f"Modèle complet sauvegardé dans: {save_path}")
print("Fichiers créés:")
import os
for file in os.listdir(save_path):
size = os.path.getsize(f"{save_path}/{file}")
print(f" - {file}: {size/1024:.1f} KB")
def upload_to_huggingface(model, tokenizer, repo_name):
"""Upload vers HuggingFace Hub"""
try:
# Vous devez d'abord vous connecter avec: huggingface-cli login
model.push_to_hub(repo_name)
tokenizer.push_to_hub(repo_name)
print(f"Modèle uploadé vers: https://huggingface.co/{repo_name}")
except Exception as e:
print(f"Erreur upload: {e}")
print("Assurez-vous d'être connecté avec: huggingface-cli login")
def load_your_existing_data(file_path):
"""Charge vos données existantes si possible"""
try:
# Essayer de charger votre fichier Tenro_V4.1.1
if file_path.endswith('.json'):
with open(file_path, 'r') as f:
data = json.load(f)
return data
elif file_path.endswith('.bin'):
data = torch.load(file_path, map_location='cpu')
return data
else:
with open(file_path, 'r') as f:
content = f.read()
return content
except Exception as e:
print(f"Impossible de charger {file_path}: {e}")
return None
if __name__ == "__main__":
print("🚀 Création d'un modèle HuggingFace complet...")
# Étape 1: Créer le modèle de base
model, tokenizer, config = create_basic_model()
# Étape 2: Optionnel - charger vos données existantes
your_file = "Tenro_V4.1.1" # Remplacez par le chemin de votre fichier
existing_data = load_your_existing_data(your_file)
if existing_data:
print("✅ Données existantes chargées")
# Ici vous pourriez adapter le modèle avec vos données
# Étape 3: Sauvegarder complètement
save_complete_model(model, tokenizer, config)
# Étape 4: Test du modèle
print("\n🧪 Test du modèle:")
inputs = tokenizer("Hello, I am Tenro", return_tensors="pt")
with torch.no_grad():
outputs = model.generate(
inputs.input_ids,
max_length=50,
do_sample=True,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id
)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(f"Texte généré: {generated_text}")
# Étape 5: Upload (optionnel)
upload_choice = input("\nVoulez-vous uploader vers HuggingFace? (y/n): ")
if upload_choice.lower() == 'y':
repo_name = input("Nom du repo (ex: votre_nom/Tenro_V4.1): ")
upload_to_huggingface(model, tokenizer, repo_name)
print("\n✅ Terminé! Vous avez maintenant un modèle complet et fonctionnel.")