TRL documentation
Utilidades de datos
Utilidades de datos
is_conversational
trl.is_conversational
< source >( example: dict[str, typing.Any] ) → bool
Comprueba si el ejemplo está en un formato conversacional.
maybe_convert_to_chatml
trl.maybe_convert_to_chatml
< source >( example: dict[str, list] ) → dict[str, list]
Convierte un conjunto de datos conversacional con los campos from y value al formato ChatML.
Esta función modifica los datos conversacionales para que se ajusten al formato ChatML de OpenAI:
- Reemplaza la clave
"from"con"role"en los diccionarios de mensajes. - Reemplaza la clave
"value"con"content"en los diccionarios de mensajes. - Renombra
"conversations"a"messages"para mantener la consistencia con ChatML.
Ejemplo:
>>> from trl import maybe_convert_to_chatml
>>> example = {
... "conversations": [
... {"from": "user", "value": "What color is the sky?"},
... {"from": "assistant", "value": "It is blue."},
... ]
... }
>>> maybe_convert_to_chatml(example)
{'messages': [{'role': 'user', 'content': 'What color is the sky?'},
{'role': 'assistant', 'content': 'It is blue.'}]}extract_prompt
trl.extract_prompt
< source >( example: dict[str, collections.abc.Sequence] ) → dict[str, list]
Parámetros
- example (
dict[str, list]) — Un diccionario que representa una entrada de datos individual en el conjunto de datos de preferencias. Debe contener las claves"chosen"y"rejected", donde cada valor es conversacional o estándar (str).
Devuelve
dict[str, list]
Un diccionario que contiene:
"prompt": El prefijo común más largo entre las completaciones “chosen” y “rejected”."chosen": El resto de la finalización “chosen”, con el prompt eliminado."rejected": El resto de la finalización “rejected”, con el prompt eliminado.
Extrae el prompt compartido de un ejemplo de datos de preferencia, donde el prompt es implícito tanto en las finalizaciones elegidas como en las rechazadas.
La función identifica la secuencia común más larga (prefijo) de turnos de conversación entre las finalizaciones “chosen” y “rejected” y la extrae como el prompt. A continuación, elimina este prompt de las finalizaciones “chosen” y “rejected” correspondientes.
Ejemplos:
>>> example = {
... "chosen": [
... {"role": "user", "content": "What color is the sky?"},
... {"role": "assistant", "content": "It is blue."},
... ],
... "rejected": [
... {"role": "user", "content": "What color is the sky?"},
... {"role": "assistant", "content": "It is green."},
... ],
... }
>>> extract_prompt(example)
{'prompt': [{'role': 'user', 'content': 'What color is the sky?'}],
'chosen': [{'role': 'assistant', 'content': 'It is blue.'}],
'rejected': [{'role': 'assistant', 'content': 'It is green.'}]}O, con el método map de Dataset:
>>> from trl import extract_prompt
>>> from datasets import Dataset
>>> dataset_dict = {
... "chosen": [
... [
... {"role": "user", "content": "What color is the sky?"},
... {"role": "assistant", "content": "It is blue."},
... ],
... [
... {"role": "user", "content": "Where is the sun?"},
... {"role": "assistant", "content": "In the sky."},
... ],
... ],
... "rejected": [
... [
... {"role": "user", "content": "What color is the sky?"},
... {"role": "assistant", "content": "It is green."},
... ],
... [
... {"role": "user", "content": "Where is the sun?"},
... {"role": "assistant", "content": "In the sea."},
... ],
... ],
... }
>>> dataset = Dataset.from_dict(dataset_dict)
>>> dataset = dataset.map(extract_prompt)
>>> dataset[0]
{'prompt': [{'role': 'user', 'content': 'What color is the sky?'}],
'chosen': [{'role': 'assistant', 'content': 'It is blue.'}],
'rejected': [{'role': 'assistant', 'content': 'It is green.'}]}unpair_preference_dataset
trl.unpair_preference_dataset
< source >( dataset: typing.Union[~DatasetType, ~IterableDatasetType]**map_kwargs )
Parámetros
- dataset (Dataset o DatasetDict o IterableDataset o IterableDatasetDict) —
Conjunto de datos de preferencias para desparear. El conjunto de datos debe tener las columnas
"chosen","rejected"y opcionalmente"prompt". - **map_kwargs (
dict, opcional) — Argumentos de palabra clave adicionales para pasar al método map del conjunto de datos al desparear preferencias.
Desasociar un conjunto de datos de preferencias.
La salida contiene "prompt", "completion" y "label", además de cualquier columna extra, que se duplican para cada fila elegida y rechazada.
Ejemplo:
>>> from datasets import Dataset
>>> dataset_dict = {
... "prompt": ["The sky is", "The sun is"],
... "chosen": [" blue.", "in the sky."],
... "rejected": [" green.", " in the sea."],
... }
>>> dataset = Dataset.from_dict(dataset_dict)
>>> dataset = unpair_preference_dataset(dataset)
>>> dataset
Dataset({
features: ['prompt', 'completion', 'label'],
num_rows: 4
})
>>> dataset[0]
{'prompt': 'The sky is', 'completion': ' blue.', 'label': True}