Gegevens voorbereiden voor het afstemmen van Foundation Model
Belangrijk
Deze functie bevindt zich in openbare preview in de volgende regio's: centralus
, eastus
, eastus2
, en northcentralus
westus
.
In dit artikel worden de geaccepteerde bestandsindelingen voor trainings- en evaluatiegegevens voor de Foundation Model Fine-tuning (nu onderdeel van Mozaïek AI Model Training) taken beschreven: onder supervisie afstemmen, voltooien van chats en vervolgtraining.
In het volgende notebook ziet u hoe u uw gegevens kunt valideren. Het is ontworpen om onafhankelijk te worden uitgevoerd voordat u begint met trainen. Het valideert dat uw gegevens de juiste indeling hebben voor Het verfijnen van Foundation Model en bevat code om u te helpen bij het schatten van de kosten tijdens de training, door uw onbewerkte gegevensset te tokeniseren.
Gegevens valideren voor trainingsuitvoeringennotitieblok
Gegevens voorbereiden voor afstemming onder supervisie
Voor taken onder supervisie kunnen de trainingsgegevens zich in een van de volgende schema's hebben:
Prompt- en antwoordparen.
{"prompt": "your-custom-prompt", "response": "your-custom-response"}
Prompt- en voltooiingsparen.
{"prompt": "your-custom-prompt", "completion": "your-custom-response"}
Notitie
Prompt-response en prompt-voltooiing worden niet sjabloond, dus modelspecifieke tempatie, zoals mistral's instructopmaak , moet worden uitgevoerd als een voorverwerkingsstap.
Geaccepteerde gegevensindelingen zijn:
Een Unity Catalog-volume met een
.jsonl
bestand. De trainingsgegevens moeten de JSONL-indeling hebben, waarbij elke regel een geldig JSON-object is. In het volgende voorbeeld ziet u een voorbeeld van een prompt- en antwoordpaar:{"prompt": "What is Databricks?","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."}
Een Delta-tabel die voldoet aan een van de hierboven genoemde geaccepteerde schema's. Voor Delta-tabellen moet u een
data_prep_cluster_id
parameter opgeven voor gegevensverwerking. Zie Een trainingsuitvoering configureren.Een openbare gegevensset met een knuffelend gezicht.
Als u een openbare Hugging Face-gegevensset gebruikt als uw trainingsgegevens, geeft u het volledige pad op met de splitsing, bijvoorbeeld
mosaicml/instruct-v3/train and mosaicml/instruct-v3/test
. Dit is een account voor gegevenssets met verschillende gesplitste schema's. Geneste gegevenssets van Hugging Face worden niet ondersteund.Zie de
mosaicml/dolly_hhrlhf
gegevensset op Hugging Face voor een uitgebreider voorbeeld.De volgende voorbeeldrijen met gegevens zijn afkomstig uit de
mosaicml/dolly_hhrlhf
gegevensset.{"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: what is Databricks? ### Response: ","response": "Databricks is a cloud-based data engineering platform that provides a fast, easy, and collaborative way to process large-scale data."} {"prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request. ### Instruction: Van Halen famously banned what color M&Ms in their rider? ### Response: ","response": "Brown."}
Gegevens voorbereiden voor voltooiing van chat
Voor taken voor het voltooien van chats moeten de gegevens in chatindeling een bestandsindeling .jsonl
hebben, waarbij elke regel een afzonderlijk JSON-object is dat één chatsessie vertegenwoordigt. Elke chatsessie wordt weergegeven als een JSON-object met één sleutel, "messages"
die wordt toegewezen aan een matrix met berichtobjecten. Als u wilt trainen op chatgegevens, geeft u gewoon de task_type = 'CHAT_COMPLETION'
.
Berichten in chatindeling worden automatisch opgemaakt volgens de chatsjabloon van het model, dus u hoeft geen speciale chattokens toe te voegen om het begin of einde van een chat handmatig te signaleren. Een voorbeeld van een model dat gebruikmaakt van een aangepaste chatsjabloon, is Mistral-instruct.
Notitie
Mistrale modellen accepteren system
geen rollen in hun gegevensindelingen.
Elk berichtobject in de matrix vertegenwoordigt één bericht in het gesprek en heeft de volgende structuur:
role
: Een tekenreeks die de auteur van het bericht aangeeft. Mogelijke waarden zijn"system"
,"user"
en"assistant"
. Als de rol issystem
, moet dit de eerste chat in de berichtenlijst zijn. Er moet ten minste één bericht met de rol"assistant"
zijn en alle berichten na de (optionele) systeemprompt moeten wisselen tussen de gebruiker/assistent. Er mogen geen twee aangrenzende berichten met dezelfde rol zijn. Het laatste bericht in de"messages"
matrix moet de rol hebben"assistant".
content
: Een tekenreeks die de tekst van het bericht bevat.
Hier volgt een voorbeeld van gegevens in chatindeling:
{"messages": [
{"role": "system", "content": "A conversation between a user and a helpful assistant."},
{"role": "user", "content": "Hi there. What's the capital of the moon?"},
{"role": "assistant", "content": "This question doesn't make sense as nobody currently lives on the moon, meaning it would have no government or political institutions. Furthermore, international treaties prohibit any nation from asserting sovereignty over the moon and other celestial bodies."},
]
}
Gegevens voorbereiden voor vervolgtraining
Voor vervolgtrainingstaken zijn de trainingsgegevens uw ongestructureerde tekstgegevens. De trainingsgegevens moeten zich in een Unity Catalog-volume met bestanden bevinden .txt
. Elk .txt
bestand wordt behandeld als één voorbeeld. Als uw .txt
bestanden zich in een volumemap van Unity Catalog bevinden, worden deze bestanden ook verkregen voor uw trainingsgegevens. Alle niet-bestandentxt
in het volume worden genegeerd. Zie Bestanden uploaden naar een Unity Catalog-volume.
In de volgende afbeelding ziet u voorbeeldbestanden .txt
in een Unity Catalog-volume. Als u deze gegevens wilt gebruiken in uw vervolgconfiguratie voor de uitvoering van de training, stelt u deze in train_data_path = "dbfs:/Volumes/main/finetuning/cpt-data"
.