

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
<a name="rft-prepare-data-open-weight"></a>

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
<a name="rft-data-format-open-weight"></a>

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
<a name="fine-tuning-openai-files-api"></a>

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](https://platform.openai.com/docs/api-reference/files)

### Carica il file di allenamento
<a name="fine-tuning-openai-upload-file"></a>

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

------

### Recupera i dettagli del file
<a name="fine-tuning-openai-retrieve-file"></a>

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

------

### Elenca i file
<a name="fine-tuning-openai-list-files"></a>

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

------

### Elimina file
<a name="fine-tuning-openai-delete-file"></a>

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
<a name="rft-data-characteristics-open-weight"></a>

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
<a name="rft-additional-properties-open-weight"></a>

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

------