Preparare i dati per modelli a peso aperto - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Preparare i dati per modelli a peso aperto

Quando ottimizzi modelli a peso aperto con la regolazione di precisione dei rinforzi utilizzando la compatibilità con OpenAI APIs, fornisci dati di addestramento inserendo i tuoi prompt in formato JSONL allo scopo. fine-tune

Formato e requisiti dei dati di formazione

I dati di formazione devono seguire il formato di completamento delle chat OpenAI con 100-20.000 esempi. Ogni esempio di formazione contiene:

  • messages: In questo campo, includi il ruolo dell'utente, del sistema o dell'assistente contenente il prompt di input fornito al modello.

  • reference_answer: In questo campo, deve contenere l'output previsto o i criteri di valutazione utilizzati dalla funzione di ricompensa per assegnare un punteggio alla risposta del modello. Non si limita agli output strutturati, ma può contenere qualsiasi formato che aiuti la funzione di ricompensa a valutare la qualità.

  • [Facoltativo] È possibile aggiungere campi utilizzati da grader Lambda per la valutazione.

Requisiti:

  • Formato JSONL con istruzioni nel formato di completamento della chat OpenAI (un prompt per riga)

  • Lo scopo deve essere impostato su fine-tune

  • Un minimo di 100 record nel set di dati di addestramento

  • Amazon Bedrock convalida automaticamente il formato del set di dati di addestramento

Example: General question-answering
{ "messages": [ { "role": "system", "content": "You are a helpful assistant" }, { role": "user", "content": "What is machine learning?"} ], "reference_answer": "Machine learning is a subset of artificial intelligence that enables computers to learn and make decisions from data without being explicitly programmed." }
Example: Math problem
{ "id": "sample-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }

API di file

Puoi utilizzare i file compatibili con OpenAI api per caricare i tuoi dati di allenamento per lavori di ottimizzazione. I file vengono archiviati in modo sicuro in Amazon Bedrock e vengono utilizzati per creare lavori di ottimizzazione. Per informazioni complete sull'API, consulta la documentazione di Files. OpenAI

Per caricare un file di allenamento, scegli la scheda corrispondente al metodo che preferisci, quindi segui i passaggi:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Upload training file with open(TRAINING_FILE_PATH, 'rb') as f: file_response = client.files.create( file=f, purpose='fine-tune' ) # Store file ID for next steps training_file_id = file_response.id print(f"✅ Training file uploaded successfully: {training_file_id}")
HTTP request

Invia una richiesta POST a/v1/files:

curl https://bedrock-mantle.us-west-2.api.aws/v1/files \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -F purpose="fine-tune" \ -F file="@training_data.jsonl"

Per recuperare i dettagli su un file specifico, scegli la scheda corrispondente al metodo che preferisci, quindi segui i passaggi:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Retrieve file details file_details = client.files.retrieve(training_file_id) # Print raw response print(json.dumps(file_details.model_dump(), indent=2))
HTTP request

Fai una richiesta GET a/v1/files/{file_id}:

curl https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \ -H "Authorization: Bearer $OPENAI_API_KEY"

Per elencare i file caricati, scegli la scheda corrispondente al metodo che preferisci, quindi segui i passaggi:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # List files files_response = client.files.list(purpose='fine-tune') # Print raw response print(json.dumps(files_response.model_dump(), indent=2))
HTTP request

Effettua una richiesta GET a/v1/files:

curl https://bedrock-mantle.us-west-2.api.aws/v1/files?purpose=fine-tune \ -H "Authorization: Bearer $OPENAI_API_KEY"

Per eliminare un file, scegli la scheda corrispondente al metodo preferito, quindi segui i passaggi:

OpenAI SDK (Python)
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables from openai import OpenAI client = OpenAI() # Delete file delete_response = client.files.delete(training_file_id)
HTTP request

Effettua una richiesta DELETE a/v1/files/{file_id}:

curl -X DELETE https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \ -H "Authorization: Bearer $OPENAI_API_KEY"

Caratteristiche dei dati di allenamento efficaci

Dati di addestramento RFT efficaci richiedono tre caratteristiche chiave:

  • Chiarezza e coerenza: utilizza istruzioni chiare e inequivocabili con una formattazione coerente. Evita etichette contraddittorie, istruzioni ambigue o risposte di riferimento contrastanti che fuorviano la formazione.

  • Diversità: includi diversi formati di input, casi limite e livelli di difficoltà che riflettono i modelli di utilizzo della produzione in diversi tipi di utenti e scenari.

  • Funzioni di ricompensa efficienti: progetta funzioni che vengano eseguite rapidamente (secondi, non minuti), parallelizzino e restituiscano AWS Lambda punteggi costanti per una formazione conveniente.

Proprietà aggiuntive

Il formato di dati RFT supporta campi personalizzati oltre ai requisiti di base dello schema (e). messages reference_answer Questa flessibilità consente di aggiungere tutti i dati aggiuntivi necessari alla funzione di ricompensa per una corretta valutazione.

Nota

Non è necessario configurarlo nella ricetta. Il formato dei dati supporta intrinsecamente campi aggiuntivi. Basta includerli nei dati di allenamento JSON e verranno passati alla funzione di ricompensa sul campo. metadata

Proprietà aggiuntive comuni

  • task_id— Identificatore univoco per il tracciamento

  • difficulty_level— Indicatore di complessità del problema

  • domain— Area o categoria tematica

  • expected_reasoning_steps— Numero di passaggi della soluzione

Questi campi aggiuntivi vengono trasferiti alla funzione di ricompensa durante la valutazione, abilitando una sofisticata logica di punteggio personalizzata in base al caso d'uso specifico.

Esempi con proprietà aggiuntive

Chemistry problem
{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 4 } }

Il reference_answer campo contiene l'output previsto o i criteri di valutazione utilizzati dalla funzione di ricompensa per assegnare un punteggio alla risposta del modello. Non si limita agli output strutturati, ma può contenere qualsiasi formato che aiuti la funzione di ricompensa a valutare la qualità.

Math problem with metadata
{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }