|
--- |
|
language: |
|
- en |
|
- zh |
|
- es |
|
license: apache-2.0 |
|
library_name: transformers |
|
widget: |
|
- text: <s> [|User|] Hola </s>[|Assistant|] |
|
- text: <s> [|User|] Que es Python? </s>[|Assistant|] |
|
- text: <s> [|User|] Hi </s>[|Assistant|] |
|
|
|
tags: |
|
- unsloth |
|
- Sorah |
|
- spanish |
|
- HirCoir |
|
--- |
|
|
|
# MiniChat-2-3B-Sorah |
|
|
|
![Sorah](sorah.jpeg) |
|
|
|
MiniChat-2-3B-Sorah es un modelo de lenguaje basado en MiniChat-1.5-3B y ajustado con datos de instrucci贸n y preferencia. |
|
|
|
El modelo MiniChat-1.5-3B-Sorah complementa el modelo de voz Sorah, que fue creado por el proyecto Piper. El modelo Sorah est谩 en proceso de entrenamiento y mejoras, por lo que su acceso no es p煤blico, pero puedes encontrar m谩s informaci贸n en el [repositorio de Sorah Neuronal](https://huggingface.co/HirCoir/piper-sorah-neuronal). |
|
|
|
|
|
El modelo MiniChat-2-3B-Sorah supera a Vicuna-7B y se acerca a LLaMA-2-Chat-7B en MT-Bench. |
|
|
|
A continuaci贸n, se muestra un ejemplo de c贸digo para usar Sorah basado en MiniChat-2-3B: |
|
|
|
```python |
|
import torch |
|
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
from conversation import get_default_conv_template |
|
|
|
# Cargar MiniChat-2-3B-Sorah |
|
tokenizer = AutoTokenizer.from_pretrained("HirCoir/minichat-3b-sorah", use_fast=False) |
|
|
|
# Configuraci贸n para GPU |
|
model = AutoModelForCausalLM.from_pretrained( |
|
"HirCoir/minichat-3b-sorah", |
|
use_cache=True, |
|
device_map="auto", |
|
torch_dtype=torch.float16 |
|
).eval() |
|
|
|
# Configuraci贸n para CPU (opcional) |
|
# model = AutoModelForCausalLM.from_pretrained( |
|
# "HirCoir/minichat-3b-sorah", |
|
# use_cache=True, |
|
# device_map="cpu", |
|
# torch_dtype=torch.float16 |
|
# ).eval() |
|
|
|
# Crear una conversaci贸n |
|
conv = get_default_conv_template("minichat") |
|
|
|
# Ejemplo de pregunta |
|
question = "Como te llamas?" |
|
|
|
# A帽adir la pregunta a la conversaci贸n |
|
conv.append_message(conv.roles[0], question) |
|
conv.append_message(conv.roles[1], None) |
|
|
|
# Obtener el prompt |
|
prompt = conv.get_prompt() |
|
input_ids = tokenizer([prompt]).input_ids |
|
|
|
# Generar respuesta |
|
output_ids = model.generate( |
|
torch.as_tensor(input_ids).cuda(), |
|
do_sample=True, |
|
temperature=0.7, |
|
max_new_tokens=1024 |
|
) |
|
output_ids = output_ids[0][len(input_ids[0]):] |
|
output = tokenizer.decode(output_ids, skip_special_tokens=True).strip() |
|
|
|
# La respuesta se almacena en 'output' |
|
# Salida: "def common_elements(arr1, arr2):\n if len(arr1) == 0:\n return []\n if len(arr2) == 0:\n return arr1\n\n common_elements = []\n for element in arr1:\n if element in arr2:\n common_elements.append(element)\n\n return common_elements" |
|
# Una conversaci贸n multivuelta se puede realizar a帽adiendo preguntas continuamente a `conv`. |
|
``` |