TRL documentation

Utilidades de datos

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v1.17.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilidades de datos

is_conversational

trl.is_conversational

< >

( example: dict[str, typing.Any] ) → bool

Parámetros

  • example (dict[str, Any]) — Una entrada de datos individual de un conjunto de datos. La entrada puede tener diferentes claves dependiendo del tipo de conjunto de datos.

Devuelve

bool

True si los datos están en un formato conversacional, False en caso contrario.

Comprueba si el ejemplo está en un formato conversacional.

Ejemplos:

>>> example = {"prompt": [{"role": "user", "content": "What color is the sky?"}]}
>>> is_conversational(example)
True

>>> example = {"prompt": "The sky is"}
>>> is_conversational(example)
False

maybe_convert_to_chatml

trl.maybe_convert_to_chatml

< >

( example: dict[str, list] ) → dict[str, list]

Parámetros

  • example (dict[str, list]) — Una entrada de datos individual que contiene una lista de mensajes.

Devuelve

dict[str, list]

Ejemplo reformateado al estilo ChatML.

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

< >

( 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

< >

( 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}
Update on GitHub