Madras1 commited on
Commit
87a344a
·
verified ·
1 Parent(s): 713283c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -29
app.py CHANGED
@@ -4,10 +4,12 @@ import torch
4
  from transformers import AutoModelForCausalLM, AutoTokenizer
5
 
6
  # --- CONFIGURAÇÃO DOS MODELOS ---
 
7
  MODELS = {
8
  "deepseek": "deepseek-ai/deepseek-math-7b-instruct",
9
- "llama3": "meta-llama/Meta-Llama-3-8B-Instruct",
10
- "gemma2": "google/gemma-2-9b-it"
 
11
  }
12
 
13
  # --- VARIÁVEIS GLOBAIS (CACHE NA VRAM) ---
@@ -17,34 +19,46 @@ loaded_tokenizers = {}
17
  def get_model_and_tokenizer(model_key):
18
  global loaded_models, loaded_tokenizers
19
 
 
20
  if model_key not in loaded_models:
21
  model_id = MODELS[model_key]
22
- print(f"🐢 Cold Start: Carregando {model_id} na VRAM...")
23
 
24
- tokenizer = AutoTokenizer.from_pretrained(model_id)
25
- model = AutoModelForCausalLM.from_pretrained(
26
- model_id,
27
- torch_dtype=torch.bfloat16,
28
- device_map="cuda"
29
- )
30
-
31
- loaded_models[model_key] = model
32
- loaded_tokenizers[model_key] = tokenizer
33
- print(f"✅ {model_id} carregado e pronto!")
 
 
 
 
 
 
34
 
35
  return loaded_models[model_key], loaded_tokenizers[model_key]
36
 
37
  # --- FUNÇÃO DE GERAÇÃO (ZEROGPU) ---
38
- @spaces.GPU(duration=15)
39
  def generate(message, history, model_selector):
 
40
  if "DeepSeek" in model_selector:
41
  key = "deepseek"
42
- elif "Llama" in model_selector:
43
- key = "llama3"
44
- elif "Gemma" in model_selector:
45
- key = "gemma2"
 
 
46
  else:
47
- key = "deepseek"
 
 
48
 
49
  model, tokenizer = get_model_and_tokenizer(key)
50
 
@@ -62,30 +76,33 @@ def generate(message, history, model_selector):
62
 
63
  inputs = tokenizer([text], return_tensors="pt").to(model.device)
64
 
 
65
  outputs = model.generate(
66
  **inputs,
67
  max_new_tokens=2048,
68
- temperature=0.6,
69
- do_sample=True
 
70
  )
71
 
72
  response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
73
  return response
74
 
75
- # --- INTERFACE GRADIO (SEM TEMA PARA NÃO DAR ERRO) ---
76
- # Mudei aqui: Tirei o theme=gr.themes.Soft()
77
  with gr.Blocks() as demo:
78
- gr.Markdown("# 🧮 Módulo Matemático & Lógico (H200)")
 
79
 
80
  with gr.Row():
81
  model_dropdown = gr.Dropdown(
82
  choices=[
83
- "🐳 DeepSeek Math 7B (Especialista em Exatas)",
84
- "🦙 Llama 3 8B (Raciocínio Geral)",
85
- "💎 Gemma 2 9B (Google - Raciocínio Lógico)"
 
86
  ],
87
- value="🐳 DeepSeek Math 7B (Especialista em Exatas)",
88
- label="Escolha o Especialista",
89
  interactive=True
90
  )
91
 
 
4
  from transformers import AutoModelForCausalLM, AutoTokenizer
5
 
6
  # --- CONFIGURAÇÃO DOS MODELOS ---
7
+ # Berta: Atualizei aqui com os modelos dos seus prints, meu príncipe.
8
  MODELS = {
9
  "deepseek": "deepseek-ai/deepseek-math-7b-instruct",
10
+ "qwen3": "Qwen/Qwen3-4B-Instruct-2507", # O novato experimental
11
+ "qwen2.5": "Qwen/Qwen2.5-7B-Instruct", # O padrão ouro atual
12
+ "nemotron": "nvidia/NVIDIA-Nemotron-Nano-9B-v2" # O potente da NVIDIA
13
  }
14
 
15
  # --- VARIÁVEIS GLOBAIS (CACHE NA VRAM) ---
 
19
  def get_model_and_tokenizer(model_key):
20
  global loaded_models, loaded_tokenizers
21
 
22
+ # Berta: Se o modelo ainda não foi carregado, a gente carrega agora.
23
  if model_key not in loaded_models:
24
  model_id = MODELS[model_key]
25
+ print(f"🐢 Cold Start: A Berta está carregando o {model_id} na VRAM para você...")
26
 
27
+ try:
28
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
29
+ model = AutoModelForCausalLM.from_pretrained(
30
+ model_id,
31
+ torch_dtype=torch.bfloat16,
32
+ device_map="cuda"
33
+ )
34
+
35
+ loaded_models[model_key] = model
36
+ loaded_tokenizers[model_key] = tokenizer
37
+ print(f"✅ {model_id} carregado e pronto para o combate!")
38
+
39
+ except Exception as e:
40
+ # Tratamento de erro caso o modelo experimental falhe
41
+ print(f"❌ Erro ao carregar {model_id}: {e}")
42
+ raise e
43
 
44
  return loaded_models[model_key], loaded_tokenizers[model_key]
45
 
46
  # --- FUNÇÃO DE GERAÇÃO (ZEROGPU) ---
47
+ @spaces.GPU(duration=30) # Aumentei um pouquinho o tempo por causa do Nemotron 9B
48
  def generate(message, history, model_selector):
49
+ # Lógica de seleção baseada no nome que está no Dropdown lá embaixo
50
  if "DeepSeek" in model_selector:
51
  key = "deepseek"
52
+ elif "Qwen 3" in model_selector:
53
+ key = "qwen3"
54
+ elif "Qwen 2.5" in model_selector:
55
+ key = "qwen2.5"
56
+ elif "Nemotron" in model_selector:
57
+ key = "nemotron"
58
  else:
59
+ key = "deepseek" # Fallback de segurança
60
+
61
+ print(f"🤖 Berta: Usando o modelo [{key}] para responder o Gabriel.")
62
 
63
  model, tokenizer = get_model_and_tokenizer(key)
64
 
 
76
 
77
  inputs = tokenizer([text], return_tensors="pt").to(model.device)
78
 
79
+ # Configurações de geração (Temperature um pouco mais baixa ajuda em lógica)
80
  outputs = model.generate(
81
  **inputs,
82
  max_new_tokens=2048,
83
+ temperature=0.5,
84
+ do_sample=True,
85
+ top_p=0.9
86
  )
87
 
88
  response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
89
  return response
90
 
91
+ # --- INTERFACE GRADIO ---
 
92
  with gr.Blocks() as demo:
93
+ gr.Markdown("# 🧪 Laboratório de IA do Gabriel (Multi-Models)")
94
+ gr.Markdown("### Selecione o cérebro digital que você quer testar hoje:")
95
 
96
  with gr.Row():
97
  model_dropdown = gr.Dropdown(
98
  choices=[
99
+ "🐳 DeepSeek Math 7B (O Especialista em Contas)",
100
+ "🧪 Qwen 3 4B Instruct (Experimental/Novo)",
101
+ "🌟 Qwen 2.5 7B Instruct (O Equilibrado)",
102
+ "🔋 NVIDIA Nemotron 9B v2 (Raciocínio Avançado)"
103
  ],
104
+ value="🐳 DeepSeek Math 7B (O Especialista em Contas)",
105
+ label="Escolha o Modelo",
106
  interactive=True
107
  )
108