import gradio as gr from transformers import AutoModelForCausalLM, AutoTokenizer import torch import os # Model adını belirtin model_name = "MiniMaxAI/MiniMax-M1-40k" # Tokenizer'ı yükleyin print(f"Tokenizer yükleniyor: {model_name}...") try: tokenizer = AutoTokenizer.from_pretrained(model_name) print("Tokenizer yüklendi.") except Exception as e: print(f"Tokenizer yüklenirken hata oluştu: {e}") # Hata durumunda boş bir tokenizer veya hata mesajı tokenizer = None # Modeli yükleyin print(f"Model yükleniyor: {model_name}...") # Dikkat: Bu model çok büyük olabilir. device_map="auto" ve torch_dtype=torch.float16 # bellek kullanımını azaltmaya yardımcı olabilir, ancak yeterli değilse CPU'da yüklemek gerekebilir. try: model = AutoModelForCausalLM.from_pretrained( model_name, device_map="auto", torch_dtype=torch.float16 # Bellek kullanımını azaltmak ve hesaplamayı hızlandırmak için # load_in_8bit=True # 8-bit kuantizasyon kullanmayı deneyebilirsiniz (ek kurulum gerektirir) ) print("Model yüklendi.") except Exception as e: print(f"Model yüklenirken hata oluştu: {e}") print("CPU'da yüklemeyi deniyorum...") try: model = AutoModelForCausalLM.from_pretrained( model_name, device_map="cpu" # Eğer GPU yoksa CPU'da yükle ) print("Model CPU'da yüklendi.") except Exception as cpu_e: print(f"Model CPU'da yüklenirken de hata oluştu: {cpu_e}") model = None # Modeli değerlendirme moduna (evaluation) alın if model: model.eval() # Metin üretme fonksiyonu def generate_text(prompt, max_length=500, temperature=0.7, top_p=0.9, top_k=50): """ Verilen prompt'a göre modelden metin üretir. """ if not model or not tokenizer: return "Hata: Model veya tokenizer yüklenemedi." # Prompt'u token'lara dönüştür try: inputs = tokenizer(prompt, return_tensors="pt") # Eğer model GPU'daysa inputs'ları da GPU'ya taşı if model.device != torch.device("cpu"): inputs = inputs.to(model.device) except Exception as e: return f"Prompt tokenleştirilirken hata oluştu: {e}" # Metin üretimi with torch.no_grad(): try: outputs = model.generate( **inputs, max_length=max_length, do_sample=True, temperature=temperature, top_p=top_p, top_k=top_k, pad_token_id=tokenizer.eos_token_id # Padding için EOS token'ını kullan ) except Exception as e: return f"Metin üretimi sırasında hata oluştu: {e}" # Üretilen token'ları metne dönüştür ve oku try: generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) except Exception as e: return f"Metin çözülürken hata oluştu: {e}" return generated_text # Gradio arayüzünü tanımlayın with gr.Blocks() as demo: gr.Markdown("# MiniMax-M1-40k Demo") gr.Markdown("MiniMaxAI/MiniMax-M1-40k modelini kullanarak metin üretin.") with gr.Row(): with gr.Column(scale=3): prompt_input = gr.Textbox(label="Prompt", lines=5, placeholder="Buraya metninizi girin...") generate_button = gr.Button("Metin Üret") with gr.Column(scale=1): max_length = gr.Slider(minimum=50, maximum=2048, value=500, step=10, label="Max Uzunluk") temperature = gr.Slider(minimum=0.1, maximum=1.5, value=0.7, step=0.1, label="Sıcaklık") top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.9, step=0.05, label="Top P") top_k = gr.Slider(minimum=1, maximum=100, value=50, step=1, label="Top K") output_text = gr.Textbox(label="Üretilen Metin", lines=10, interactive=False) # Butona tıklandığında fonksiyonu çağır generate_button.click( fn=generate_text, inputs=[prompt_input, max_length, temperature, top_p, top_k], outputs=output_text ) # Gradio arayüzünü başlatın if __name__ == "__main__": print("Gradio arayüzü başlatılıyor...") demo.launch()