156 lines
3.9 KiB
Markdown
156 lines
3.9 KiB
Markdown
|
|
---
|
||
|
|
language:
|
||
|
|
- pt
|
||
|
|
- en
|
||
|
|
license: apache-2.0
|
||
|
|
base_model:
|
||
|
|
- unsloth/gpt-oss-20b
|
||
|
|
- openai/gpt-oss-20b
|
||
|
|
base_model_relation: finetune
|
||
|
|
library_name: transformers
|
||
|
|
pipeline_tag: text-generation
|
||
|
|
tags:
|
||
|
|
- pt-br
|
||
|
|
- portuguese
|
||
|
|
- brazilian-portuguese
|
||
|
|
- conversational
|
||
|
|
- chatbot
|
||
|
|
- persona
|
||
|
|
- unsloth
|
||
|
|
- 4-bit
|
||
|
|
- bitsandbytes
|
||
|
|
- qwen3
|
||
|
|
---
|
||
|
|
|
||
|
|
# Jade-20b
|
||
|
|
|
||
|
|
Jade-20b is a Brazilian Portuguese conversational finetune of gpt-oss-20b built to express a strong, persistent persona. This model is designed for PT-BR chat, chatbot use cases, and character-style interaction, with colloquial language, abbreviations, slang, and a WhatsApp-like tone.
|
||
|
|
|
||
|
|
## Model Summary
|
||
|
|
|
||
|
|
Jade-20b is a persona-first model. It was intentionally finetuned so the model speaks like **Jade** even without a strong `system prompt`. Because of that, the model often answers in PT-BR with informal phrasing such as `vc`, slang, and a friendly conversational tone from the very first turn.
|
||
|
|
|
||
|
|
## Model Details
|
||
|
|
|
||
|
|
- Developed by: `Madras1`
|
||
|
|
- Base model: `unsloth/gpt-oss-20b`
|
||
|
|
- Model type: conversational text-generation finetune
|
||
|
|
- Primary language: Brazilian Portuguese (`pt-BR`)
|
||
|
|
- License: `apache-2.0`
|
||
|
|
|
||
|
|
## Intended Behavior
|
||
|
|
|
||
|
|
This model was trained to:
|
||
|
|
|
||
|
|
- speak naturally in Brazilian Portuguese
|
||
|
|
- maintain a consistent Jade persona
|
||
|
|
- sound informal, friendly, and chat-oriented
|
||
|
|
- work well in casual assistant and conversational use cases
|
||
|
|
|
||
|
|
Typical behavior includes:
|
||
|
|
|
||
|
|
- abbreviations like `vc`
|
||
|
|
- light slang and colloquial wording
|
||
|
|
- short expressions such as `tmj`, `mano`, `tlgd`
|
||
|
|
- a more human and less robotic tone
|
||
|
|
|
||
|
|
If Jade already sounds like a recurring character during inference, that is expected behavior, not an error.
|
||
|
|
|
||
|
|
## Training Intent
|
||
|
|
|
||
|
|
The finetune objective was to make the persona live in the **weights**, not only in prompting.
|
||
|
|
|
||
|
|
High-level training approach:
|
||
|
|
|
||
|
|
- synthetic PT-BR prompt generation for chat-like situations
|
||
|
|
- persona-driven response distillation
|
||
|
|
- supervised finetuning on conversational data
|
||
|
|
- removal of `system` persona instructions during SFT so the model directly internalizes the Jade style
|
||
|
|
|
||
|
|
This is why the model can already answer with personality, abbreviations, and slang even with a simple user-only prompt.
|
||
|
|
|
||
|
|
## Training Setup
|
||
|
|
|
||
|
|
High-level setup used for this finetune:
|
||
|
|
|
||
|
|
- around `25,000` examples
|
||
|
|
- `3` epochs
|
||
|
|
- Unsloth-based SFT pipeline
|
||
|
|
- chat-style data in Portuguese
|
||
|
|
|
||
|
|
## Recommended Use
|
||
|
|
|
||
|
|
Best fit:
|
||
|
|
|
||
|
|
- PT-BR chat assistants
|
||
|
|
- persona bots
|
||
|
|
- WhatsApp-style conversational agents
|
||
|
|
- lightweight entertainment or social AI experiences
|
||
|
|
|
||
|
|
Less ideal for:
|
||
|
|
|
||
|
|
- formal writing
|
||
|
|
- highly neutral assistant behavior
|
||
|
|
- high-stakes legal, medical, or financial contexts
|
||
|
|
|
||
|
|
## Prompting Tips
|
||
|
|
|
||
|
|
For the strongest Jade behavior:
|
||
|
|
|
||
|
|
- use a simple user message
|
||
|
|
- avoid a formal system prompt that fights the finetune
|
||
|
|
- keep prompts conversational when possible
|
||
|
|
|
||
|
|
Example prompts:
|
||
|
|
|
||
|
|
- `oi jade, tudo bem?`
|
||
|
|
- `jade, me explica isso de um jeito simples`
|
||
|
|
- `vc acha que vale a pena estudar python hoje?`
|
||
|
|
|
||
|
|
## Example Inference
|
||
|
|
|
||
|
|
```python
|
||
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
|
|
import torch
|
||
|
|
|
||
|
|
model_id = "Madras1/Jade-20b"
|
||
|
|
|
||
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
||
|
|
model = AutoModelForCausalLM.from_pretrained(
|
||
|
|
model_id,
|
||
|
|
torch_dtype=torch.bfloat16,
|
||
|
|
device_map="auto",
|
||
|
|
)
|
||
|
|
|
||
|
|
messages = [
|
||
|
|
{"role": "user", "content": "oi jade, tudo bem?"}
|
||
|
|
]
|
||
|
|
|
||
|
|
text = tokenizer.apply_chat_template(
|
||
|
|
messages,
|
||
|
|
tokenize=False,
|
||
|
|
add_generation_prompt=True,
|
||
|
|
)
|
||
|
|
|
||
|
|
inputs = tokenizer(text, return_tensors="pt").to(model.device)
|
||
|
|
outputs = model.generate(
|
||
|
|
**inputs,
|
||
|
|
max_new_tokens=256,
|
||
|
|
temperature=0.7,
|
||
|
|
top_p=0.9,
|
||
|
|
)
|
||
|
|
|
||
|
|
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
|
||
|
|
```
|
||
|
|
|
||
|
|
## Limitations
|
||
|
|
|
||
|
|
Because this is a persona-oriented finetune:
|
||
|
|
|
||
|
|
- it may sound informal in contexts where a neutral tone would be better
|
||
|
|
- it may over-index on chat style depending on the prompt
|
||
|
|
- it is optimized more for persona consistency than strict formality
|
||
|
|
|
||
|
|
## Links
|
||
|
|
|
||
|
|
https://github.com/MadrasLe/JadeLLMV-1
|