|
|
---
|
|
|
license: apache-2.0
|
|
|
base_model: HuggingFaceTB/SmolLM2-1.7B-Instruct
|
|
|
tags:
|
|
|
- generated_from_trainer
|
|
|
- espiritismo
|
|
|
- portuguese
|
|
|
- fine-tuned
|
|
|
- peft
|
|
|
- lora
|
|
|
model-index:
|
|
|
- name: SmolLM2-1.7B-Espirita
|
|
|
results: []
|
|
|
---
|
|
|
|
|
|
# SmolLM2-1.7B-Espirita
|
|
|
|
|
|
Este modelo é uma versão fine-tuned do [HuggingFaceTB/SmolLM2-1.7B-Instruct](https://huggingface.co/HuggingFaceTB/SmolLM2-1.7B-Instruct) usando LoRA (Low-Rank Adaptation) em um dataset de obras espíritas em português.
|
|
|
|
|
|
## Descrição do Dataset
|
|
|
|
|
|
O modelo foi treinado em um dataset contendo 12.842 pares de instrução-resposta extraídos de 11 obras clássicas do espiritismo:
|
|
|
|
|
|
- **Evangelho Redivivo** (Livros 1-5)
|
|
|
- **O Livro dos Espíritos**
|
|
|
- **O Livro dos Médiuns**
|
|
|
- **O Céu e o Inferno**
|
|
|
- **O Evangelho Segundo o Espiritismo**
|
|
|
- **O que é o Espiritismo**
|
|
|
- **Obras Póstumas**
|
|
|
|
|
|
## Configuração do Treinamento
|
|
|
|
|
|
- **Modelo Base**: HuggingFaceTB/SmolLM2-1.7B-Instruct
|
|
|
- **Método**: LoRA (Low-Rank Adaptation)
|
|
|
- **Quantização**: 4-bit
|
|
|
- **Épocas**: 3
|
|
|
- **Batch Size**: 4
|
|
|
- **Learning Rate**: 2e-4
|
|
|
- **Max Length**: 512 tokens
|
|
|
- **LoRA Rank**: 16
|
|
|
- **LoRA Alpha**: 32
|
|
|
|
|
|
## Como Usar
|
|
|
|
|
|
```python
|
|
|
from transformers import AutoTokenizer, AutoModelForCausalLM
|
|
|
from peft import PeftModel
|
|
|
import torch
|
|
|
|
|
|
# Carrega o modelo base
|
|
|
base_model = AutoModelForCausalLM.from_pretrained(
|
|
|
"HuggingFaceTB/SmolLM2-1.7B-Instruct",
|
|
|
torch_dtype=torch.float16,
|
|
|
device_map="auto"
|
|
|
)
|
|
|
|
|
|
# Carrega o tokenizer
|
|
|
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceTB/SmolLM2-1.7B-Instruct")
|
|
|
|
|
|
# Carrega os adaptadores LoRA
|
|
|
model = PeftModel.from_pretrained(base_model, "elissoncardoso1/SmolLM2-1.7B-Espirita")
|
|
|
|
|
|
# Função para gerar resposta
|
|
|
def gerar_resposta(pergunta, max_length=256):
|
|
|
prompt = f"Pergunta: {pergunta}\nResposta:"
|
|
|
|
|
|
inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=512)
|
|
|
|
|
|
with torch.no_grad():
|
|
|
outputs = model.generate(
|
|
|
**inputs,
|
|
|
max_length=max_length,
|
|
|
temperature=0.7,
|
|
|
do_sample=True,
|
|
|
pad_token_id=tokenizer.eos_token_id
|
|
|
)
|
|
|
|
|
|
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
|
|
return response.split("Resposta:")[-1].strip()
|
|
|
|
|
|
# Exemplo de uso
|
|
|
pergunta = "O que é a reencarnação segundo o espiritismo?"
|
|
|
resposta = gerar_resposta(pergunta)
|
|
|
print(resposta)
|
|
|
```
|
|
|
|
|
|
## Limitações
|
|
|
|
|
|
- O modelo foi treinado especificamente em conteúdo espírita em português
|
|
|
- Pode não ter conhecimento atualizado sobre eventos recentes
|
|
|
- As respostas refletem o conteúdo das obras utilizadas no treinamento
|
|
|
|
|
|
## Licença
|
|
|
|
|
|
Este modelo está licenciado sob Apache 2.0. O conteúdo das obras espíritas utilizadas está em domínio público.
|
|
|
|