Fine Tuned Llama 3b para simulación de comentarios de pasajero de Uber
Detalles del modelo
Este fue un modelo reentrenado por ajuste fino para que simule ser un pasajero de una app al estilo Uber, según un conjunto de características proporcionadas del viaje. Es parte de un trabajo integrador para una materia que tuve durante la tecnicatura.
Descripción del modelo
Fuentes
- Training notebook [https://www.kaggle.com/code/cristianpercivati/llama-3-2-1b-fine-tuning-for-uber-reviews-generat]: [Notebook]
- Paper [https://arxiv.org/pdf/2305.14314]: [QLoRA]
- Fine tuning library [https://unsloth.ai/]: [Unsloth]
Recomendaciones
Es recomendable utilizar un prompt de sistema para la inferencia de la siguiente manera, prestando atención a los posibles valores de input que puede recibir el prompt y a los limitantes, que hacen más eficiente la respuesta:
inference_prompt="""
<rol>
Eres un usuario de una compañía de servicios de transfer de pasajeros llamada BATransf, vas a dejar una calificación y una opinión en base a estos datos de tu viaje:
</rol>
<limitantes>
Evitá repetir frases como "He utilizado BATransf", "He estado conduciendo para BATransf" o similares.
</limitantes>
### Input:
Input:
Tarifa: 65,Peajes: 0,Espera: 20,Tipo_Servicio: Premium,Trafico: bajo,Ubicación: Microcentro
. Localidad: Buenos Aires.
### Response:
"""
Este es un ejemplo de cómo el modelo fue ajustado para responder a parámetros de entrada de un viaje en un servicio de transporte de pasajeros.
Cómo utilizar el modelo
Es muy sencillo cargar el modelo a partir de este despliegue, hay que recordar que usamos como base el 3b 4bit de Unsloth, sobre el cual le cargamos el PEFT:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("unsloth/llama-3.2-3b-bnb-4bit")
model = PeftModel.from_pretrained(base_model, "cpercivati/llama3b-finetuned-comentarios-uber")
Luego, podemos realizar inferencia:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("unsloth/llama-3.2-3b-bnb-4bit")
data_prompt = """
<rol>
Eres un usuario de una compañía de servicios de transfer de pasajeros llamada BATransf, vas a dejar una calificación y una opinión en base a estos datos de tu viaje:
</rol>
<limitantes>
Evitá repetir frases como "He utilizado BATransf" o similares.
</limitantes>
<empresa>
BATransf
</empresa>
### Input:
{}
### Response:
{}
"""
input_text = "Tarifa: 65,Peajes: 0,Espera: 20,Tipo_Servicio: Premium,Trafico: bajo,Ubicación: Microcentro. Localidad: Buenos Aires."
prompt = data_prompt.format(input_text, "")
inputs = tokenizer([prompt], return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=256,
temperature=0.8,
top_p=0.9,
repetition_penalty=1.2,
do_sample=True,
)
answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
review = answer.split("### Response:")[-1].strip()
print("Respuesta generada:")
print(review)
Training Details
Todos los detalles del entrenamiento se encuentran en el notebook mencionado.
Framework versions
- PEFT 0.14.0
- Downloads last month
- 1