TRL documentation

Utilitários de Dados

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Utilitários de Dados

is_conversational

trl.is_conversational

< >

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

Parâmetros

  • example (dict[str, Any]) — Uma única entrada de dados de um conjunto de dados. O exemplo pode ter diferentes chaves dependendo do tipo de conjunto de dados.

Retorna

bool

True se os dados estão em um formato conversacional, False caso contrário.

Verifique se o exemplo está em um formato conversacional.

Exemplos:

>>> 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]) — Uma única entrada de dados contendo uma lista de mensagens.

Retorna

dict[str, list]

Exemplo reformulado no estilo ChatML.

Convert um conjunto de dados conversacional com os campos from e value para o formato ChatML.

Esta função modifica dados conversacionais para alinhá-los ao formato ChatML da OpenAI:

  • Substitui a chave "from" por "role" nos dicionários de mensagens.
  • Substitui a chave "value" por "content" nos dicionários de mensagens.
  • Renomeia "conversations" para "messages" para consistência com o ChatML.

Exemplo:

>>> 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]) — Um dicionário representando uma única entrada de dados no conjunto de dados de preferências. Ele deve conter as chaves "chosen" e "rejected", em que cada valor é conversacional ou padrão (str).

Retorna

dict[str, list]

Um dicionário contendo:

  • "prompt": O prefixo comum mais longo entre as conclusões “chosen” e “rejected”.
  • "chosen": O restante da conclusão “chosen”, com o prompt removido.
  • "rejected": O restante da conclusão “rejected”, com o prompt removido.

Extrai o prompt compartilhado de um exemplo de dados de preferência, onde o prompt é implícito tanto nas conclusões escolhidas quanto nas rejeitadas.

A função identifica a sequência comum mais longa (prefixo) de turnos de conversa entre as conclusões “chosen” e “rejected” e extrai isso como o prompt. Em seguida, remove esse prompt das respectivas conclusões “chosen” e “rejected”.

Exemplos:

>>> 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.'}]}

Ou, com o 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 ou DatasetDict ou IterableDataset ou IterableDatasetDict) — Conjunto de dados de preferências para desparear. O conjunto de dados deve ter as colunas "chosen", "rejected" e, opcionalmente, "prompt".
  • **map_kwargs (dict, opcional) — Argumentos de palavra-chave adicionais para passar ao método map do dataset ao desparear preferências.

Desparear um conjunto de dados de preferências.

A saída contém "prompt", "completion" e "label", além de quaisquer colunas extras, que são duplicadas para cada linha escolhida e rejeitada.

Exemplo:

>>> 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