Update README.md
Browse files
README.md
CHANGED
|
@@ -1,24 +1,119 @@
|
|
| 1 |
---
|
|
|
|
|
|
|
| 2 |
tags:
|
| 3 |
- gguf
|
| 4 |
- llama.cpp
|
| 5 |
- unsloth
|
| 6 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
---
|
| 8 |
|
| 9 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
|
|
|
|
| 12 |
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
- For multimodal models: **llama-mtmd-cli** **-m** model_name.gguf **--mmproj** mmproj_file.gguf
|
| 16 |
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
|
| 20 |
-
|
| 21 |
-
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
-
|
| 24 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
language:
|
| 3 |
+
- pt
|
| 4 |
tags:
|
| 5 |
- gguf
|
| 6 |
- llama.cpp
|
| 7 |
- unsloth
|
| 8 |
+
- text-classification
|
| 9 |
+
- intent-detection
|
| 10 |
+
- gemma-3
|
| 11 |
+
- delivery
|
| 12 |
+
base_model: google/gemma-3-270m-it
|
| 13 |
+
license: gemma
|
| 14 |
+
datasets:
|
| 15 |
+
- RiosWesley/rango-router-BR
|
| 16 |
+
inference:
|
| 17 |
+
parameters:
|
| 18 |
+
temperature: 0.6
|
| 19 |
+
top_p: 0.95
|
| 20 |
+
top_k: 64
|
| 21 |
---
|
| 22 |
|
| 23 |
+
# Rango Router BR - Gemma 3 270M (GGUF)
|
| 24 |
+
|
| 25 |
+
**Rango Router BR** é um modelo *Tiny LLM* (baseado no Gemma 3 270M) finetunado para atuar como um classificador de intenções (router) extremamente rápido e leve para sistemas de atendimento de delivery no Brasil.
|
| 26 |
+
|
| 27 |
+
Este modelo foi treinado e convertido para o formato GGUF usando [Unsloth](https://github.com/unslothai/unsloth).
|
| 28 |
+
|
| 29 |
+
## Funcionalidade
|
| 30 |
+
|
| 31 |
+
O modelo lê a mensagem do usuário (que pode conter gírias, abreviações e linguagem informal brasileira) e classifica a intenção em um formato JSON.
|
| 32 |
+
|
| 33 |
+
### Intenções Suportadas (Output):
|
| 34 |
+
O modelo retorna um JSON com uma das três chaves:
|
| 35 |
+
|
| 36 |
+
1. **`INFO_FLOW`**: O usuário quer informações (cardápio, horário, endereço, pix).
|
| 37 |
+
2. **`ORDER_FLOW`**: O usuário quer fazer, alterar ou confirmar um pedido.
|
| 38 |
+
3. **`HUMAN_HANDOFF`**: O usuário está irritado, teve problemas ou pediu um humano.
|
| 39 |
+
|
| 40 |
+
## Configurações de Inferência Recomendadas
|
| 41 |
+
|
| 42 |
+
Para garantir a melhor consistência no formato JSON e precisão na classificação, recomendamos os seguintes parâmetros:
|
| 43 |
+
|
| 44 |
+
| Parâmetro | Valor | Motivo |
|
| 45 |
+
| :--- | :--- | :--- |
|
| 46 |
+
| **Temperature** | `0.6` | Equilíbrio ideal para este modelo de 270M não "alucinar" o JSON, mas entender variações linguísticas. |
|
| 47 |
+
| **Top P** | `0.95` | Nucleus sampling padrão para evitar respostas de baixa probabilidade. |
|
| 48 |
+
| **Top K** | `64` | Limita o vocabulário de escolha, ajudando a manter o foco nas tags JSON. |
|
| 49 |
+
|
| 50 |
+
## Como rodar
|
| 51 |
+
|
| 52 |
+
### 1. Ollama (Recomendado)
|
| 53 |
+
|
| 54 |
+
Crie um arquivo chamado `Modelfile` com o seguinte conteúdo (as configurações já estão incluídas):
|
| 55 |
|
| 56 |
+
```dockerfile
|
| 57 |
+
FROM ./gemma-3-270m-it.Q8_0.gguf
|
| 58 |
|
| 59 |
+
# Template de chat padrão do Gemma 3
|
| 60 |
+
TEMPLATE "<start_of_turn>user\n{{ .Prompt }}<end_of_turn>\n<start_of_turn>model\n"
|
|
|
|
| 61 |
|
| 62 |
+
# Parâmetros recomendados para o Router
|
| 63 |
+
PARAMETER temperature 0.6
|
| 64 |
+
PARAMETER top_p 0.95
|
| 65 |
+
PARAMETER top_k 64
|
| 66 |
+
PARAMETER stop "<end_of_turn>"
|
| 67 |
+
```
|
| 68 |
|
| 69 |
+
Depois crie e rode o modelo:
|
| 70 |
+
```bash
|
| 71 |
+
ollama create rango-router -f Modelfile
|
| 72 |
+
ollama run rango-router "Manda o cardápio aí chefia"
|
| 73 |
+
```
|
| 74 |
|
| 75 |
+
### 2. Llama.cpp (CLI)
|
| 76 |
+
|
| 77 |
+
Ao rodar via linha de comando, passe as flags correspondentes:
|
| 78 |
+
|
| 79 |
+
```bash
|
| 80 |
+
llama-cli --hf RiosWesley/gemma-3-270m-router-br-gguf \
|
| 81 |
+
--temp 0.6 \
|
| 82 |
+
--top-p 0.95 \
|
| 83 |
+
--top-k 64 \
|
| 84 |
+
-p "<start_of_turn>user\nO motoboy sumiu, cadê meu lanche?<end_of_turn>\n<start_of_turn>model"
|
| 85 |
+
```
|
| 86 |
+
|
| 87 |
+
### 3. Python (Llama-cpp-python)
|
| 88 |
+
|
| 89 |
+
```python
|
| 90 |
+
from llama_cpp import Llama
|
| 91 |
+
|
| 92 |
+
llm = Llama(
|
| 93 |
+
model_path="./gemma-3-270m-it.Q8_0.gguf",
|
| 94 |
+
n_ctx=2048
|
| 95 |
+
)
|
| 96 |
+
|
| 97 |
+
output = llm(
|
| 98 |
+
"<start_of_turn>user\nQuero pedir uma pizza meia a meia\n<end_of_turn>\n<start_of_turn>model",
|
| 99 |
+
max_tokens=128,
|
| 100 |
+
temperature=0.6,
|
| 101 |
+
top_p=0.95,
|
| 102 |
+
top_k=64,
|
| 103 |
+
stop=["<end_of_turn>"]
|
| 104 |
+
)
|
| 105 |
+
|
| 106 |
+
print(output['choices'][0]['text'])
|
| 107 |
+
```
|
| 108 |
+
|
| 109 |
+
## Arquivos Disponíveis
|
| 110 |
+
|
| 111 |
+
* `gemma-3-270m-it.Q8_0.gguf`: Versão quantizada em 8-bit (Recomendada).
|
| 112 |
+
|
| 113 |
+
## Dados de Treinamento
|
| 114 |
+
|
| 115 |
+
O modelo foi treinado no dataset **[RiosWesley/rango-router-BR](https://huggingface.co/datasets/RiosWesley/rango-router-BR)**, contendo frases coloquiais do português brasileiro focadas em contextos de alimentação e restaurantes.
|
| 116 |
+
|
| 117 |
+
---
|
| 118 |
+
*Model finetuned using [Unsloth](https://github.com/unslothai/unsloth).*
|
| 119 |
+
```
|