DianoGPT-Small 🚀

DianoGPT Banner DianoGPT-Small é um modelo baseado na arquitetura T5 (Text-to-Text Transfer Transformer), otimizado para geração de conversas em linguagem natural. Ele foi fine-tuned para fornecer respostas contextuais e interações fluidas.

🌟 Características

  • 🔹 Baseado em T5-Small
  • 🔹 6 camadas no encoder e decoder
  • 🔹 32K tokens no vocabulário
  • 🔹 Mais de 60M de parâmetros
  • 🔹 Treinado para conversação contextual

🚀 Como Usar

Carregue o modelo e gere respostas com apenas algumas linhas de código:

from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

# Carregando o modelo e o tokenizer
tokenizer = AutoTokenizer.from_pretrained("DianoAI/Diano-Small")
model = AutoModelForSeq2SeqLM.from_pretrained("DianoAI/Diano-Small")

# Exemplo de geração de resposta
def chat(input_text):
    input_ids = tokenizer.encode(input_text, return_tensors="pt")
    output_ids = model.generate(input_ids, max_length=50, num_beams=5, early_stopping=True)
    return tokenizer.decode(output_ids[0], skip_special_tokens=True)

print(chat("Olá, como você está?"))

🧠 Arquitetura

O modelo segue a estrutura do T5 e possui as seguintes configurações:

  • Dimensão do Modelo: 512
  • Cabeças de Atenção: 8
  • Camadas: 6 no encoder e 6 no decoder
  • Dropout: 0.1
  • Tokens Especiais: <pad>, </s>, <unk> e <extra_id_X>

📊 Treinamento

Abaixo está um gráfico da perda (loss) durante o treinamento: Loss Training

⚠️ Limitações

  • 🔸 O modelo aceita no máximo 512 tokens de entrada.
  • 🔸 Pode gerar respostas imprecisas em contextos muito complexos.
  • 🔸 Ainda não é otimizado para múltiplos idiomas além do português.

🎯 Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests com sugestões e melhorias. 🚀

🐟 Licença

Este modelo é licenciado sob a MIT License. Consulte o arquivo LICENSE para mais detalhes.

🤗 Inference API

Este modelo está disponível através da Inference API do Hugging Face. Você pode usá-lo diretamente:

import requests

API_URL = "https://api-inference.huggingface.co/models/DianoAI/Diano-Small"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

def query(payload):
    response = requests.post(API_URL, headers=headers, json=payload)
    return response.json()

output = query({
    "inputs": "Olá, como você está?",
    "parameters": {"max_length": 50}
})

🚀 Hugging Face Spaces

Este modelo pode ser facilmente integrado com Hugging Face Spaces. Aqui está um exemplo básico de código para criar uma aplicação Gradio:

import gradio as gr
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

# Carrega o modelo
tokenizer = AutoTokenizer.from_pretrained("DianoAI/Diano-Small")
model = AutoModelForSeq2SeqLM.from_pretrained("DianoAI/Diano-Small")

# Função para gerar resposta
def generate_response(message, history):
    input_ids = tokenizer.encode(message, return_tensors="pt")
    output = model.generate(
        input_ids,
        max_length=100,
        num_beams=5,
        temperature=0.7,
        early_stopping=True
    )
    response = tokenizer.decode(output[0], skip_special_tokens=True)
    return response

# Interface Gradio
with gr.Blocks() as demo:
    gr.Markdown("# 🤖 DianoAI Chat")
    chatbot = gr.Chatbot()
    msg = gr.Textbox(placeholder="Digite sua mensagem aqui...")
    clear = gr.Button("Limpar Conversa")
    
    msg.submit(generate_response, [msg, chatbot], [msg, chatbot])
    clear.click(lambda: None, None, chatbot, queue=False)

demo.launch()

Para usar o modelo em um Space, inclua as seguintes dependências no seu requirements.txt:

transformers
torch
gradio

🔧 Arquivos para Spaces

Se você criar um Space para este modelo, aqui está um exemplo de arquivo app.py que você pode usar:

import gradio as gr
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import torch

# Definir configurações do modelo
MODEL_NAME = "DianoAI/Diano-Small"
MAX_LENGTH = 100
TEMPERATURE = 0.7
NUM_BEAMS = 5

# Carregar modelo e tokenizer
print(f"Carregando modelo {MODEL_NAME}...")
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
print(f"Modelo carregado com sucesso! Utilizando: {device}")

# Função para gerar resposta
def predict(message, history):
    input_ids = tokenizer.encode(message, return_tensors="pt").to(device)
    output = model.generate(
        input_ids,
        max_length=MAX_LENGTH,
        num_beams=NUM_BEAMS,
        temperature=TEMPERATURE,
        early_stopping=True
    )
    response = tokenizer.decode(output[0], skip_special_tokens=True)
    return response

# Interface Gradio
with gr.Blocks(css="footer {visibility: hidden}") as demo:
    gr.Markdown("# 🤖 DianoAI Chat")
    gr.Markdown("Converse com o assistente virtual DianoAI, baseado em português brasileiro.")
    
    chatbot = gr.Chatbot(height=400)
    msg = gr.Textbox(placeholder="Digite sua mensagem aqui...", lines=2)
    clear = gr.Button("Limpar Conversa")
    
    msg.submit(predict, [msg, chatbot], [msg, chatbot])
    clear.click(lambda: None, None, chatbot, queue=False)
    
    gr.Markdown("### Exemplos de perguntas:")
    examples = gr.Examples(
        examples=[
            "Olá, como você está?",
            "Qual é o seu propósito?",
            "Me conte algo interessante sobre o Brasil.",
            "Como posso começar a aprender programação?",
        ],
        inputs=msg
    )
    
    gr.Markdown("## Sobre o Modelo")
    gr.Markdown("DianoAI/Diano-Small é um modelo conversacional em português brasileiro baseado na arquitetura T5.")

demo.launch()

Além disso, você vai precisar de um arquivo requirements.txt:

transformers>=4.30.0
torch>=2.0.0
gradio>=3.40.0
Downloads last month
81
Safetensors
Model size
60.5M params
Tensor type
F32
·
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.

Model tree for DianoAI/Diano-Small

Base model

google-t5/t5-small
Finetuned
(1)
this model

Space using DianoAI/Diano-Small 1