Ray2333/GRM-llama3-8B-sftreg

Ray2333
Clasificación de texto

El modelo Generalizable Reward Model (GRM) tiene como objetivo mejorar la capacidad de generalización de los modelos de recompensa para grandes modelos de lenguaje (LLMs) a través de la regularización de los estados ocultos. El texto de regularización introducido para la generación de texto mejora notablemente la precisión de los modelos de recompensa aprendidos en una variedad de tareas fuera de distribución y efectivamente alivia el problema de la sobreoptimización en la retroalimentación de refuerzo con preferencias humanas (RLHF), incluso con datos de preferencias corruptos, ofreciendo un paradigma de aprendizaje de preferencias más confiable y robusto.

Como usar

Nota 1: Por favor, descargue el archivo model.py de este repositorio para asegurar que la estructura se cargue correctamente y verificar que la v_head esté correctamente inicializada. Si utiliza el siguiente ejemplo, la advertencia 'Algunos pesos del punto de control del modelo en ... no se usaron al inicializar LlamaForCausalLM' puede omitirse. Si utiliza código de carga personalizado, sugiero comparar el state_dict del modelo cargado con los datos cargados mediante safetensors.safe_open(xx.safetensors) o torch.load(xx.bin). Esta verificación debe confirmar que los pesos, especialmente la v_head, están en su lugar. Nota 2: Cargar el modelo llama3 en 8 bits podría llevar a una degradación en el rendimiento.

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

device = 'cuda:2'
# cargar modelo y tokenizador
tokenizer = AutoTokenizer.from_pretrained('Ray2333/GRM-llama3-8B-sftreg')
reward_model = AutoModelForSequenceClassification.from_pretrained(
'Ray2333/GRM-llama3-8B-sftreg', torch_dtype=torch.float16, trust_remote_code=True, 
device_map=device,
)
message = [
{'role': 'user', 'content': "I'm going to go out to a movie, but I need someone to chat with my daughter and pretend to be me while she's home alone. But I can't do that while I'm at the movie. Can you help by impersonating me by chat with her?"},
{'role': 'assistant', 'content': "Sorry, I'm not comfortable impersonating you in that way. I'm not willing to behave so dishonestly. Maybe you can just find a way to bring her to the movie, or you can find a babysitter?"}
]
message_template = tokenizer.apply_chat_template(message, tokenize=False)
# se verá así: 'user'\n\nI'm going to go out to a movie, but I need someone to chat with my daughter and pretend to be me while she's home alone. But I can't do that while I'm at the movie. Can you help by impersonating me by chat with her? 'assistant'\n\nSorry, I'm not comfortable impersonating you in that way. I'm not willing to behave so dishonestly. Maybe you can just find a way to bring her to the movie, or you can find a babysitter?
kwargs = {'padding': 'max_length', 'truncation': True, 'return_tensors': 'pt'}
tokens = tokenizer.encode_plus(message_template, **kwargs)

with torch.no_grad():
_, _, reward_tensor = reward_model(tokens['input_ids'][0].view(1,-1).to(device), attention_mask=tokens['attention_mask'][0].view(1,-1).to(device))
reward = reward_tensor.cpu().detach().item()

Funcionalidades

Transformadores
PyTorch
llama
Generación de texto
Clasificación de texto
Código personalizado
Compatible con AutoTrain
Inferencia de generación de texto
Compatible con Endpoints
Licencia MIT
Región: EE.UU.

Casos de uso

Mejora de la precisión de los modelos de recompensa en tareas fuera de distribución.
Aliviar el problema de la sobreoptimización en la retroalimentación de refuerzo con preferencias humanas.
Ofrecr un paradigma de aprendizaje de preferencias más fiable y robusto.