9

Parallelismo GPU ed evoluzione che migliora l'evoluzione

AI999第5课:方法演化:从优化解到优化算法本身
00:00

Quando gli algoritmi evolutivi vengono usati permigliorare gli algoritmi evolutivi stessi, nel sistema coesistono due livelli di calcolo: quello interno è l'esecuzione e la valutazione di un gran numero di configurazioni algoritmiche su molte istanze di task, mentre quello esterno seleziona, muta e aggiorna le configurazioni sulla base di questi risultati. Senza una solida base parallela, l'evoluzione esterna viene trascinata in un collo di bottiglia dalla valutazione sequenziale del livello interno.Il parallelismo GPUè proprio la chiave che trasforma l'"evoluzione che migliora l'evoluzione" da idea teorica in un processo eseguibile ad alto throughput: i task del livello interno vengono eseguiti in parallelo a lotti e producono continuamente dati di prestazione, e l'evoluzione esterna usa questi dati come feedback per selezionare di volta in volta configurazioni algoritmiche migliori.

Evoluzione che migliora l'evoluzione: ciclo chiuso a due livelli con parallelismo GPUInvio della nuova generazione di configurazioniEvoluzione esterna: selettore di configurazioniIn base al feedback di fitness, seleziona · muta · aggiorna le configurazioni algoritmicheFeedback di fitnessLivello di aggregazione delle valutazioni: feedback statisticoAggrega le prestazioni dei task paralleli interni → stima la fitness di ciascuna configurazioneAggregazione delle prestazioni dei taskEsecuzione batch parallela su GPU · Livello interno: configurazione × istanza di taskConfigurazione θ1Configurazione θ2Configurazione θ3Configurazione θ4Ogni cella = un'esecuzione parallela e una valutazione di una configurazione algoritmica su una determinata istanza di taskPerché il parallelismo è crucialeCampioni di feedback più abbondantiStima della fitness più stabileDirezione di ricerca più affidabileMeccanismo a ciclo chiusoThroughput paralleloFeedback sulle prestazioniSelezione delle configurazioni

Ciascuno dei due livelli ha un ruolo distinto

  • Livello interno (esecuzione e valutazione): esegue in batch su GPU un gran numero di configurazioni algoritmiche candidate (iperparametri, operatori o strategie di ricerca diversi), completando esecuzione e valutazione per ogni istanza di task. La granularità fine e l'elevato numero dei task si adattano perfettamente alle caratteristiche di throughput batch della GPU.
  • Livello intermedio (aggregazione del feedback): aggrega le prestazioni grezze dell'enorme mole di task interni in indicatori statistici, stima la qualità di ciascuna configurazione sull'intera distribuzione dei task e produce la fitness utilizzata dal livello esterno.
  • Livello esterno (selezione delle configurazioni): prende in input il feedback statistico ed esegue selezione, mutazione o aggiornamento, generando la generazione successiva di configurazioni e reinviandola al livello interno, chiudendo così il ciclo.

Perché il parallelismo GPU è insostituibile

Nel tradizionale ciclo sequenziale, il tempo effettivo di una singola iterazione è determinato congiuntamente dal "numero di configurazioni candidate × numero di campioni di task": basta una scala leggermente maggiore per renderlo insostenibile, e il ciclo sequenziale diventa così il principale collo di bottiglia che limita il numero di configurazioni candidate e di campioni di task. Il parallelismo GPU consente a moltissimi algoritmi interni di essere eseguiti simultaneamente, riducendo il ciclo sequenziale da "collo di bottiglia principale" a "costo batch accettabile", ampliando al contempo lo spazio di configurazioni esplorabili e la quantità di campioni di task.

Meccanismo centrale: un unico ciclo chiuso

L'intero sistema può essere riassunto come un ciclo di "throughput parallelo dei task interni → aggregazione del feedback sulle prestazioni → selezione delle configurazioni nel livello esterno" : maggiore è il grado di parallelismo, più abbondanti sono i campioni di feedback, più stabile è la stima della fitness da parte del livello esterno e più affidabile è la direzione di miglioramento delle configurazioni; le configurazioni migliorate vengono poi reinviate al livello di base, entrando nella successiva tornata di throughput parallelo. È proprio questo ciclo chiuso a dotare gli algoritmi della capacità di auto-ottimizzarsi in modo continuo e a trasformare l'"evoluzione che migliora l'evoluzione" da idea teorica in un processo altamente efficiente ed eseguibile.

Punti critici
Non confondere i due livelli: quello interno "esegue l'algoritmo sul task e assegna un punteggio", quello esterno "fa evolvere la scelta delle configurazioni". Il feedback può provenire solo dalle prestazioni reali di esecuzione del livello interno, non da congetture casuali o costanti impostate a mano dal livello esterno.