TRL documentation
Utilitaires de données
Utilitaires de données
is_conversational
trl.is_conversational
< source >( example: dict[str, typing.Any] ) → bool
Vérifiez si l'exemple est au format conversationnel.
maybe_convert_to_chatml
trl.maybe_convert_to_chatml
< source >( example: dict[str, list] ) → dict[str, list]
Convertir un jeu de données conversationnel avec les champs from et value au format ChatML.
Cette fonction modifie les données conversationnelles pour les aligner sur le format ChatML d’OpenAI :
- Remplace la clé
"from"par"role"dans les dictionnaires de messages. - Remplace la clé
"value"par"content"dans les dictionnaires de messages. - Renomme
"conversations"en"messages"pour assurer la cohérence avec ChatML.
Exemple :
>>> 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]
Paramètres
- example (
dict[str, list]) — Un dictionnaire représentant une entrée de données unique dans le jeu de données de préférence. Il doit contenir les clés"chosen"et"rejected", où chaque valeur est soit conversationnelle, soit standard (str).
Retourne
dict[str, list]
Un dictionnaire contenant :
"prompt": le préfixe commun le plus long entre les complétions « chosen » et « rejected »."chosen": le reste de la complétion « chosen », avec le prompt supprimé."rejected": le reste de la complétion « rejected », avec le prompt supprimé.
Extrait le prompt partagé d'un exemple de données de préférence, où le prompt est implicite dans les complétions choisie et rejetée.
La fonction identifie la plus longue séquence commune (préfixe) de tours de conversation entre les complétions « chosen » et « rejected » et l’extrait en tant que prompt. Elle supprime ensuite ce prompt des complétions « chosen » et « rejected » respectives.
Exemples :
>>> 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.'}]}En revanche, avec la méthode 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 )
Paramètres
- dataset (Dataset ou DatasetDict ou IterableDataset ou IterableDatasetDict) —
Jeu de données de préférence à dépaire. Le jeu de données doit avoir les colonnes
"chosen","rejected"et éventuellement"prompt". - **map_kwargs (
dict, facultatif) — Arguments de mot-clé supplémentaires à passer à la méthode map du jeu de données lors du dépairement des préférences.
Désappairer un jeu de données de préférences.
La sortie contient "prompt", "completion" et "label", ainsi que les colonnes supplémentaires, qui sont dupliquées pour chaque ligne choisie et rejetée.
Exemple :
>>> 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}