Spaces:
Sleeping
Sleeping
| 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() |