Vai al contenuto principale

Che cos'è GRPO? Group Relative Policy Optimization spiegato

Esplora cos'è GRPO, come funziona, i componenti essenziali per implementarlo e quando è più appropriato usarlo.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

La Group Relative Policy Optimization (GRPO) è una tecnica all'avanguardia di reinforcement learning (RL) che alimenta le prestazioni impressionanti dei più recenti large language model (LLM). Pur avendo ottenuto ampia attenzione dopo il rilascio di DeepSeek-R1, GRPO è stata introdotta per la prima volta in DeepSeekMath, un LLM ottimizzato per il ragionamento matematico avanzato. GRPO è stata originariamente progettata per migliorare l'efficienza nel fine-tuning e si è dimostrata un metodo economico e versatile, abbracciato dalla community.

In questo articolo faremo un approfondimento su GRPO. Vedremo cos'è, come funziona, i componenti essenziali necessari per la sua implementazione e quando è più opportuno usarla. L'obiettivo di questa guida è accompagnarti attraverso le intuizioni chiave alla base di GRPO, che ne giustificano la crescente popolarità.

Se non vedi l'ora di saperne di più su DeepSeek, dai un'occhiata al nostro corso, Working with DeepSeek in Python. 

Introduzione al Reinforcement Learning

Come esploriamo nella nostra guida al fine-tuning degli LLM, il supervised fine-tuning (SFT) è la tecnica di addestramento tradizionale che consiste nell'addestrare un modello usando dati etichettati. Cioè, usando esempi che mostrano i completamenti o gli output attesi per determinati input.

Una delle limitazioni dell'SFT è che fa molto affidamento su grandi dataset etichettati, che possono essere costosi e dispendiosi in termini di tempo da produrre. Inoltre, i modelli addestrati tramite SFT rischiano di overfittare sugli esempi di training, il che significa che si comportano bene sui dati visti ma faticano a generalizzare a situazioni nuove o inaspettate.

Un'alternativa all'SFT è il reinforcement learning, con il quale, invece di imparare da esempi fissi, un agente impara interagendo con l'ambiente e provando azioni diverse per completare un compito. Dopo ogni azione, l'agente riceve feedback sotto forma di ricompense o penalità. L'obiettivo è massimizzare la ricompensa totale nel tempo scoprendo le strategie che funzionano meglio.

Possiamo rappresentare un semplice workflow RL come segue:

Diagram of a simple RL workflow.

Diagram of a simple RL workflow.

Se vuoi iniziare a mettere le mani in pasta con l'RL in Python, il tutorial Reinforcement Learning: An Introduction With Python Examples fa per te!

Reinforcement learning in parole semplici

Per illustrare il concetto di reinforcement learning, immagina di insegnare a tua cugina ad andare in bicicletta. All'inizio fatica a pedalare e a mantenere l'equilibrio, spesso ondeggia o cade.

Ogni volta che percorre un po' più strada, la incoraggi. Questo feedback positivo la spinge ad andare avanti. Ma quando prova a scendere le scale in bici, la fermi subito e le spieghi i rischi. Questo funge da segnale negativo per scoraggiare tali azioni.

Allo stesso modo, il reinforcement learning consente ai modelli di esplorare azioni diverse. Ricompense positive rinforzano gli esiti desiderabili, mentre ricompense negative scoraggiano comportamenti indesiderati. Nel tempo, il modello apprende a prendere decisioni migliori grazie a questo feedback.

Approcci al reinforcement learning

Esistono tecniche diverse per applicare il reinforcement learning a un modello. In concreto, GRPO è considerata un'evoluzione della proximal policy optimization (PPO) e della direct policy optimization (DPO).

Hai mai sentito parlare di PPO e DPO?

Proximal policy optimization

PPO è un algoritmo RL ampiamente utilizzato, progettato per ottimizzare il comportamento di un modello massimizzandone le ricompense usando un modello di reward separato. Un ottimo esempio di PPO in azione è il reinforcement learning from human feedback (RLHF) di OpenAI. Nell'RLHF, prima si raccoglie feedback umano sugli output del modello e poi questi dati vengono usati per addestrare un modello di reward che predice il feedback. Avere un modello di reward è un modo per scalare il feedback umano, senza bisogno di umani.

Infine, PPO usa il modello di reward durante l'addestramento per regolare i parametri del modello, incoraggiandolo a generare risposte più allineate alle preferenze umane. Il seguente diagramma illustra il workflow PPO:

Diagram of the PPO workflow.

Diagram of the PPO workflow.

Se vuoi implementare il workflow PPO in Python, valuta il tutorial Proximal Policy Optimization with PyTorch and Gymnasium.

Direct policy optimization

Addestrare un modello di reward separato può essere complesso e a forte impatto di risorse. Per semplificare questo processo, è stata introdotta la DPO, cambiando il modo in cui si raccoglie il feedback umano.

Invece di chiedere alle persone di valutare le risposte con punteggi numerici, la DPO si basa su confronti di preferenza. Agli annotatori umani vengono mostrate due risposte e viene chiesto di scegliere quella che preferiscono. Questo crea un dataset di esempi preferiti e meno preferiti.

Il modello viene poi ottimizzato direttamente su queste coppie di preferenze, invece di fare affidamento sul modello di reward. Con questo approccio, il modello impara ad aumentare la probabilità di generare la risposta preferita riducendo quella della meno preferita. 

Questo approccio permette al modello di allinearsi alle preferenze umane senza la necessità di un modello di reward separato. Diamo un'occhiata a questo nuovo workflow:

Diagram of the DPO workflow.

Diagram of the DPO workflow.

Il tutorial OpenAI's Preference Fine-Tuning: A Guide With Examples ti aiuterà a implementare la DPO in pratica.

Sfide di PPO e DPO

La DPO offre molti vantaggi rispetto alla PPO. A partire dai dati necessari: PPO deve prima raccogliere i dati per addestrare il modello di reward e poi effettuare il training effettivo di questo modello ausiliario (con tutte le sfide tecniche dell'addestramento di un nuovo modello), ancora prima di iniziare ad addestrare il tuo modello target. DPO semplifica il processo eliminando la necessità di avere un modello di reward separato. Tuttavia, questo approccio richiede comunque una quantità consistente di dati di preferenza.

A questo punto, intravedi un modo per eliminare queste limitazioni?

E se invece di affidarci a feedback esterni, trovassimo un modo automatico per validare e valutare le risposte del modello?

È esattamente ciò che GRPO porta in tavola!

Che cos'è GRPO?

La Group Relative Policy Optimization è una tecnica RL che non richiede dati etichettati, ma solo un modo per "verificare" la correttezza e ordinare di conseguenza le risposte. La verifica è normalmente ottenuta tramite funzioni di reward programmabili, ad esempio funzioni che possono prendere la risposta del modello in input e restituire un punteggio su qualche aspetto della funzione.

Alcuni approcci GRPO usano un LLM-giudice per verificare e valutare le risposte, ma l'idea centrale di GRPO può essere sfruttata senza la necessità di un modello esterno in domini come lo sviluppo software, poiché diversi aspetti del codice generato possono essere verificati da strumenti esterni. Per esempio,

  • Il codice compila? Qui ci basta usare il compilatore.
  • Ha errori a runtime? Qui ci basta eseguire il codice.
  • Supera i test unitari? Qui servono solo i test unitari.
  • L'output del linter del codice è pulito? Qui basta un linter.

Come vedi, non servono né persone né dati di preferenza!

Funzioni di reward

Nell'articolo originale di DeepSeek-Math, le funzioni di reward sono state progettate per valutare la correttezza e il formato delle soluzioni matematiche. Se hai mai chiesto a un LLM un output strutturato, ti sarai reso conto che il modello potrebbe aver seguito il formato desiderato per gran parte del completamento, ma c'era sempre un caso limite che mandava in crisi la tua pipeline, giusto?

Nel caso di DeepSeek-Math, le funzioni di reward erano focalizzate su correttezza e formattazione:

  • Ricompense di accuratezza valutano se la risposta finale del modello è corretta. Per problemi matematici deterministici, si richiede al modello di presentare la risposta finale in un formato specifico (ad esempio, all'interno di un riquadro), consentendo la verifica automatica rispetto al ground truth.
  • Ricompense di formato assicurano che le risposte del modello rispettino una struttura predefinita. In particolare, si incoraggia il modello a racchiudere il proprio ragionamento all'interno di tag designati (ad esempio, <think> e </think>). Questa formattazione facilita l'estrazione e l'analisi del processo di pensiero del modello, promuovendo chiarezza e coerenza negli output.

Workflow GRPO

A questo punto potresti chiederti: dove si inserisce GRPO nel workflow di addestramento di un modello?

Rivediamo il processo passo dopo passo!

  1. Invia un prompt all'LLM e campiona più risposte candidate.
  2. Scrivi una o più funzioni programmabili che prendono in input le coppie prompt-risposta e assegnano un punteggio a ciascuna.
  3. Usa questi punteggi per aggiornare i pesi dell'LLM, aumentando la probabilità di produrre risposte con punteggi superiori alla media e diminuendola per quelle con punteggi inferiori alla media.

Seguendo questo loop, GRPO ottimizza il modello direttamente in base all'output delle funzioni di reward, senza bisogno di raccogliere dati di preferenza.

Diagram of the GRPO workflow with score rewards computed by an external actor.

Diagram of the GRPO workflow with score rewards computed by an external actor.

Infine, è interessante notare che GRPO porta anche il vantaggio di insegnare al modello nuovi compiti, invece di limitarsi a orientare l'apprendimento verso una preferenza, come in PPO o DPO.

Vantaggi di GRPO

Come si può osservare dal diagramma sopra, il principale vantaggio di GRPO è che non richiede dati etichettati, ma solo un modo per "verificare" la correttezza, ottenuto tramite l'uso di funzioni di reward programmabili.

Un altro vantaggio è che richiede molti meno esempi rispetto al fine-tuning, rendendo questa tecnica un'alternativa conveniente.

Inoltre, il modello apprende attivamente dal feedback piuttosto che da esempi etichettati fissi, il che riduce il rischio di overfitting. Addestrare modelli con GRPO consente loro di scoprire in modo organico strategie migliori e migliorare la propria catena di pensiero.

Casi d'uso di GRPO

Come discusso in precedenza, il caso d'uso principale di GRPO si presenta quando non hai dati etichettati ma sei in grado di verificare la correttezza dell'output. È anche molto efficace quando disponi di dati etichettati limitati, ma non abbastanza per effettuare il tradizionale supervised fine-tuning. Questo rende GRPO particolarmente preziosa in scenari in cui l'etichettatura è costosa o impraticabile.

Alcuni domini in cui GRPO ha dimostrato vantaggi significativi includono:

  • Competenze matematiche: ad esempio, nel caso del modello DeepSeek-Math, GRPO ha migliorato efficacemente la capacità del modello di risolvere problemi matematici complessi senza ampi dataset etichettati.
  • Generazione di codice: GRPO aiuta a migliorare l'accuratezza e l'affidabilità del codice generato consentendo al sistema di auto-verificare gli output e affinarli iterativamente.
  • Ragionamento multi-step: è stato dimostrato che GRPO migliora le prestazioni dei modelli in compiti che richiedono ragionamento sequenziale e l'integrazione di più passaggi logici.

GRPO avanzata

Ci sono alcuni suggerimenti e trucchi avanzati da conoscere quando si implementa GRPO nella pratica. 

Funzioni di reward avanzate

Le funzioni di reward forniscono feedback al modello su quanto bene stia raggiungendo il suo obiettivo. Ci sono componenti critici in questo processo:

  • Diversità nelle risposte: generare un'ampia gamma di output candidati aumenta le probabilità di scoprire soluzioni o strategie di qualità superiore.
  • Diversità nelle ricompense: progettare funzioni di reward che sappiano distinguere tra diversi livelli di successo o di risultato parziale, invece di un semplice segnale binario pass/fail. Questo è noto come partial credit rewards, che forniscono feedback più sfumati assegnando crediti parziali a diversi aspetti della risposta. Esempi includono verificare che almeno il formato dell'output sia corretto, che il codice generato compili correttamente o che il codice superi un sottoinsieme di test unitari. Questo tipo di ricompensa graduata incoraggia il modello a migliorare in modo incrementale, anche se la risposta non è del tutto corretta.

Inoltre, impostare una baseline per l'intero gruppo può svolgere un ruolo importante nel rendere stabile e migliorare il processo di training. Sottraendo questa baseline dalle ricompense individuali, il modello riceve feedback relativo alle prestazioni complessive del gruppo, il che riduce la varianza nelle stime di reward e incoraggia miglioramenti incrementali rispetto alla media.

Temperatura 

Negli LLM, il parametro temperatura controlla la casualità del processo di campionamento durante la generazione dell'output. Impostare la temperatura a 0 produce un campionamento deterministico, il che significa che il modello sceglie sempre il token successivo più probabile. 

Sebbene questo garantisca coerenza, spesso porta a generare sempre lo stesso output, limitando la diversità delle risposte.

D'altra parte, aumentare la temperatura introduce più casualità, consentendo al modello di esplorare una gamma più ampia di possibilità. Questa diversità può essere utile per scoprire soluzioni diverse o inaspettate. 

Tuttavia, temperature più alte comportano un compromesso: la qualità di ogni singola ipotesi tende a essere inferiore perché il modello campiona più frequentemente token meno probabili. Per questo motivo, l'intero processo di apprendimento può rallentare.

Scegliere la temperatura giusta è a volte un'arte!

Reward hacking

I modelli sono furbi e a volte sfruttano in modo non previsto le funzioni di reward per massimizzare le ricompense senza raggiungere davvero l'obiettivo. 

Per esempio, supponiamo che il modello ottenga una ricompensa per produrre test per un dato frammento di codice. Potrebbe fornire una funzione di test, ma senza testare davvero nulla, aggirando l'obiettivo reale di verificare la correttezza del codice e ottenendo comunque la ricompensa.

Bisogna essere consapevoli di questi trucchi quando si scrivono le funzioni di reward. Ad esempio, nel caso della generazione di test, di solito si richiede che il modello generi almeno un'istruzione "assert" all'interno del test. In caso contrario, viene penalizzato.

Conclusione

Per concludere, vorrei applicare GRPO a uno scenario reale per assicurarmi che tutti i concetti siano ben compresi.

Immagina che tu e i tuoi amici partecipiate a una competizione di fitness in cui le ricompense vengono assegnate in base alle prestazioni in corsa, push-up e vogatore. Inizialmente, la palestra premia solo la persona con i risultati assoluti migliori. 

In questo modo, se Alice corre di più e fa più push-up di Ben, vince sempre, anche se Ben ha mostrato un miglioramento significativo. 

Questo sembra ingiusto per Ben, vero?

Per risolvere il problema, la palestra prova un approccio diverso: obiettivi personali basati sulle prestazioni passate. 

Ora ottieni ricompense solo se batti i tuoi record precedenti. Pur sembrando più equo, questo introduce nuovi problemi. I nuovi iscritti, come Charlie, non hanno dati passati con cui confrontarsi, il che rende difficile per loro partecipare. Inoltre, i trainer devono monitorare costantemente i progressi di ognuno, il che diventa inefficiente.

Infine, la palestra offre una soluzione migliore: GRPO. 

Prima dell'allenamento, l'istruttore attiva un sistema che analizza le caratteristiche dei partecipanti e li raggruppa in base a condizioni simili. Durante l'allenamento, il sistema traccia le prestazioni di ciascun partecipante e calcola un punteggio medio all'interno di ogni gruppo da usare come baseline. Successivamente, le ricompense vengono assegnate in base a quanto ciascuno supera la media del proprio gruppo in quello stesso giorno. 

Così, se Ben si comporta significativamente meglio degli altri nel suo gruppo, ottiene una ricompensa, anche se Alice ha ancora il punteggio complessivo più alto. Questo metodo è equo anche per i nuovi arrivati come Charlie, poiché vengono valutati rispetto ai pari nella stessa sessione, non sulla base della storia pregressa.

Un fattore importante in questo processo è la temperatura, che controlla quanto rigorosamente vengono premiati i miglioramenti. Se la temperatura è troppo bassa, contano solo i miglioramenti grandi rispetto alla baseline. Se è troppo alta, vengono premiati anche i piccoli miglioramenti, il che incoraggia la sperimentazione ma può portare a progressi irregolari. 

GRPO punta a trovare il giusto equilibrio, garantendo un miglioramento costante pur consentendo l'esplorazione.

Infine, c'è il rischio di reward hacking. Ciò significa che i partecipanti trovano modi per aggirare il sistema senza migliorare davvero. Ad esempio, Ben potrebbe concentrarsi solo sugli esercizi più facili per gonfiare il suo punteggio senza reale impegno. 

Per evitarlo, la palestra aggiunge salvaguardie, come richiedere un mix equilibrato di esercizi o penalizzare esercizi ripetitivi e a basso sforzo. Questi vincoli assicurano che le ricompense riflettano progressi reali.

Se vuoi imparare di più su come funzionano gli LLM e come svilupparne di tuoi, dai un'occhiata al nostro corso Developing Large Language Models.

FAQ su GRPO

Quanti dati servono per GRPO?

Generalmente meno di 1000 esempi etichettati.

GRPO richiede il tracciamento delle prestazioni passate?

No. GRPO utilizza solo le informazioni dell'attuale step di training.

Che cos'è un Gruppo in GRPO?

Un gruppo è un insieme di risposte del modello allo stesso prompt.

Come fa GRPO a prevenire il reward hacking?

Incorporando vincoli, GRPO scoraggia i modelli dallo sfruttare scorciatoie facili per gonfiare le ricompense.

Come vengono assegnate le ricompense in GRPO?

Ogni risposta viene ricompensata in base a quanto supera la baseline del gruppo, non sulla ricompensa assoluta.


Andrea Valenzuela's photo
Author
Andrea Valenzuela
LinkedIn
Twitter

Andrea Valenzuela lavora attualmente all’esperimento CMS presso l’acceleratore di particelle (CERN) a Ginevra, Svizzera. Con un’esperienza di sei anni in data engineering e analisi, si occupa di analisi dei dati e sviluppo software. Oggi si dedica a democratizzare l’apprendimento delle tecnologie legate ai dati tramite la pubblicazione su Medium ForCode'Sake.

Ha conseguito una laurea in Ingegneria Fisica presso l’Università Politecnica della Catalogna e un master in Sistemi Interattivi Intelligenti presso l’Università Pompeu Fabra. La sua esperienza di ricerca include lavori professionali con precedenti algoritmi OpenAI per la generazione di immagini, come i Normalizing Flows.

Argomenti
Large Language Models
Machine Learning
Intelligenza artificiale

I migliori corsi DataCamp

Corso

Reinforcement Learning from Human Feedback (RLHF)

4 ore
3.9K
Scopri come fare in modo che i modelli GenAI riflettano davvero i valori umani e allo stesso tempo fai pratica con gli LLM avanzati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro