notizia

Quadro volante paddle avanzato 3.0!Un articolo spiega le cinque nuove funzionalità tra cui “Integrated Large Model Training and Pushing”

2024-08-01

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

In quanto software di base, il framework di deep learning non solo promuove il rapido progresso della tecnologia di deep learning, ma pone anche solide basi per l’applicazione diffusa della tecnologia dell’intelligenza artificiale.

Il framework di deep learning fornisce agli sviluppatori interfacce di sviluppo comode e facili da usare che astraggono dati e operazioni in modo elevato, consentendo agli sviluppatori di concentrarsi maggiormente sulla progettazione di algoritmi e modelli senza doversi impantanare nei dettagli dell'elaborazione dei dati sottostanti. Attraverso queste interfacce, gli sviluppatori non hanno bisogno di percepire e gestire direttamente i complessi dettagli di sviluppo dell'hardware sottostante, migliorando così notevolmente l'efficienza e l'esperienza di sviluppo. In secondo luogo, il framework di deep learning fornisce anche la potente funzione di differenziazione automatica. Gli sviluppatori di solito devono solo scrivere il codice per la rete di propagazione in avanti, mentre l’ingombrante rete di propagazione all’indietro viene completata automaticamente dal framework.

Essendo la prima piattaforma cinese di deep learning autosviluppata, ricca di funzionalità, open source e aperta, Fei Paddle è stata rilasciata dalla versione 1.0, che utilizza immagini statiche per impostazione predefinita, alla versione 2.0, che utilizza immagini dinamiche per impostazione predefinita e può realizzare l'integrazione di immagini dinamiche e statiche, formazione e spinta. Fei Paddle Framework È stato in grado di integrare perfettamente la flessibilità della grafica dinamica e l'efficienza della grafica statica e supporta recentemente la formazione parallela ibrida dei modelli, la versione 3.0, che è stata perfezionata per era dei modelli di grandi dimensioni, è stato ufficialmente rilasciato! Flying Paddle ha ufficialmente aperto una nuova generazione di innovazione tecnologica del telaio!

Pensiero progettuale

La progettazione del framework di deep learning è fondamentale per promuovere lo sviluppo della tecnologia dell’intelligenza artificiale e il suo obiettivo principale è facilitare l’innovazione e l’applicazione della tecnologia di deep learning.

Come fare questo?

Il quadro deve considerare pienamente le esigenze degli sviluppatori e dei produttori di hardware.

Dal punto di vista dell'utente, un eccellente framework di deep learning dovrebbe fornire agli sviluppatori la migliore esperienza di sviluppo. Ciò non significa solo fornire un ambiente di sviluppo user-friendly, ma, cosa ancora più importante, deve essere in grado di ridurre significativamente i costi di apprendimento e di tempo degli sviluppatori, migliorando al contempo significativamente la comodità dello sviluppo. A tal fine, il Flying Paddle Framework propone il concetto di "unificazione di movimento e statica, integrazione di allenamento e spinta e parallelismo automatico", che migliora notevolmente l'efficienza dello sviluppo.

Dal punto di vista dell’adattamento dell’hardware, le moderne applicazioni di deep learning spesso devono essere eseguite su diverse piattaforme hardware, pertanto il framework deve essere compatibile e adattabile a una varietà di dispositivi hardware diversi. Ciò richiede che il framework isoli in modo intelligente le differenze tra le diverse interfacce hardware e ottenga un’ampia adattabilità dell’hardware. Allo stesso tempo, per sfruttare appieno le prestazioni dell'hardware, il framework deve anche avere la capacità di software e hardware di lavorare insieme per garantire prestazioni ottimali quando si utilizzano le risorse hardware.

Allo stesso tempo, un buon quadro deve anche tenere conto della tendenza generale dello sviluppo della tecnologia IA e delle effettive esigenze applicative del settore.

In termini di sviluppo tecnologico, tecnologie all’avanguardia come Large Language Model (LLM), MOE (Mixture of Experts), multimodalità e intelligenza scientifica (AI for Science) sono gradualmente diventate nuovi punti caldi della ricerca. Man mano che la complessità del modello aumenta, problemi come i colli di bottiglia di calcolo, di archiviazione, di accesso alla memoria e di comunicazione diventano gradualmente più importanti e la necessità di formazione distribuita e ottimizzazione generale delle prestazioni diventa sempre più urgente.

A livello di industrializzazione, il framework deve avere capacità di processo completo che supportino l’integrazione di formazione, compressione e ragionamento. Ciò significa che, dall’addestramento del modello all’ottimizzazione fino all’effettiva distribuzione e inferenza, il framework dovrebbe fornire una soluzione completa ed efficiente per soddisfare le reali esigenze del settore per la tecnologia di deep learning.

Solo un framework in grado di tenere il passo con le tendenze e resistere al perfezionamento può fornire un supporto continuo e stabile agli sviluppatori di tutti i ceti sociali nell’industria, nel mondo accademico e nella ricerca.


Concetto di design e caratteristiche principali di Flying Paddle Frame 3.0

Per riassumere i requisiti di cui sopra, Feipiao fornirà agli sviluppatori un framework di deep learning che "unifica dinamico e statico, integra formazione e push, parallelizzazione automatica, ottimizzazione automatica e ampio adattamento hardware. Gli sviluppatori possono scrivere codice distribuito proprio come scrivere stand-. solo codice, senza la necessità di percepire comunicazioni complesse e logiche di pianificazione, è possibile realizzare lo sviluppo di modelli di grandi dimensioni è possibile scrivere reti neurali in Python proprio come scrivere formule matematiche, senza utilizzare linguaggi di sviluppo hardware per scrivere codici kernel operatori complessi; e puoi ottenere un funzionamento efficiente.

È nata la versione 3.0 del Flying Paddle Framework, continuando il concetto di progettazione della versione 2.x di formazione e push unificati dinamici e statici. La sua interfaccia di sviluppo è completamente compatibile con la versione 2.x. Ciò significa che il codice sviluppato utilizzando la versione 2.x può essere eseguito direttamente sulla versione 3.0 senza modifiche nella maggior parte dei casi. Si concentra sul lancio di quattro nuove funzionalità: parallelizzazione automatica unificata dinamica e statica, ottimizzazione automatica del compilatore, addestramento di modelli di grandi dimensioni e integrazione push e adattamento multi-hardware di modelli di grandi dimensioni. Queste funzionalità sono state sviluppate a partire dalla versione 2.6 o precedente di Flying Paddle Framework e hanno ora raggiunto la fase di utilizzo di prova esterna. Queste nuove funzionalità hanno apportato miglioramenti significativi in ​​termini di esperienza utente, prestazioni, comodità dello sviluppo secondario e adattabilità dell'hardware. Fei Paddle ha rilasciato ufficialmente la versione 3.0. Questa versione contiene miglioramenti ad alcune funzioni esistenti della versione framework 2.x ed è matura e stabile senza utilizzare nuove funzionalità.

Panoramica dell'architettura della struttura

Per realizzare le caratteristiche sopra menzionate del framework di deep learning, l'architettura del framework deve essere progettata attentamente per garantire che possa supportare la costruzione di vari modelli complessi e ottenere un'integrazione perfetta con diversi chip. Successivamente, verrà utilizzato un diagramma intuitivo dell'architettura per dimostrare in dettaglio i moduli funzionali coperti nel framework di nuova generazione di Flying Paddle, nonché le interazioni e le connessioni tra questi moduli. Quello che segue è il diagramma dell'architettura di Flying Paddle Framework 3.0.


Diagramma dell'architettura Flying Paddle Framework 3.0

Interfacce ricche: Flying Paddle Framework fornisce una varietà di interfacce di sviluppo relative al deep learning, come rappresentazione tensoriale, calcoli matematici, reti di modelli, strategie di ottimizzazione, ecc. Attraverso queste interfacce, gli sviluppatori possono facilmente creare e addestrare i propri modelli di deep learning senza entrare nei dettagli tecnici sottostanti.

Nell'interfaccia di sviluppo, il Flying Paddle Framework può essere suddiviso in quattro livelli: livello di presentazione, livello di pianificazione, livello operatore e livello di adattamento.

Livello di presentazione: si concentra sull'espressione e sulla conversione dei grafici computazionali e fornisce funzioni principali come da dinamico a statico (da grafici dinamici a grafici statici), differenziazione automatica, parallelismo automatico, combinazione di operatori e ottimizzazione dei grafici computazionali attraverso una rappresentazione intermedia altamente scalabile PIR. Supporto solido.

Livello di pianificazione: responsabile dell'orchestrazione intelligente e della pianificazione efficiente di codici o grafici di calcolo, nonché della capacità di gestire e ottimizzare la memoria grafica e la memoria in base alle esigenze effettive e supportare l'esecuzione efficiente di grafici dinamici e grafici statici. Sia che gli sviluppatori scelgano di utilizzare grafica dinamica o grafica statica per lo sviluppo del modello, Flying Paddle Framework può fornire un ambiente di esecuzione efficiente garantendo al tempo stesso un utilizzo ottimale delle risorse.

Livello operatore: è composto dal compilatore di rete neurale CINN e dalla libreria di operatori PHI, che copre funzioni chiave come la definizione del tensore, la definizione dell'operatore, la fusione automatica degli operatori e l'implementazione del kernel dell'operatore.

Livello di adattamento: viene utilizzato per implementare l'adattamento al chip sottostante, comprese funzioni come la gestione del dispositivo, l'adattamento dell'operatore, l'adattamento della comunicazione e l'accesso alla compilazione.

Di seguito si concentrerà sul nuovo e importante aggiornamento dell'architettura della versione Flying Paddle 3.0. Questo aggiornamento include principalmente i seguenti moduli:

1) Rappresentazione intermedia altamente scalabile PIR, creando una rappresentazione intermedia unificata per l'intera architettura, supera le barriere di ciascun modulo nel livello framework e migliora il potenziale di Flying Paddle nei campi del calcolo scientifico, dell'ottimizzazione della compilazione e dei modelli di grandi dimensioni ;

2) Il compilatore della rete neurale ottimizza automaticamente e migliora notevolmente le prestazioni end-to-end del modello attraverso la fusione automatica e l'ottimizzazione delle politiche;

3) La parallelizzazione automatica riduce i costi di sviluppo del modello e di ottimizzazione delle prestazioni di scene di modelli di grandi dimensioni e migliora notevolmente l'esperienza utente di scene di modelli di grandi dimensioni.

PIR di rappresentazione intermedia altamente estesa

La rappresentazione intermedia (IR) dei grafici computazionali è una pietra miliare importante per l'ottimizzazione delle prestazioni del framework di deep learning, per l'implementazione dell'inferenza e per i compilatori. Negli ultimi anni, sempre più framework e ricercatori hanno introdotto la tecnologia del compilatore nell'ottimizzazione dei modelli di reti neurali per il deep learning e, su questa base, hanno utilizzato concetti, tecnologie e strumenti del compilatore per ottimizzare e codificare automaticamente le reti neurali generate. Nell'era dei modelli di grandi dimensioni, i requisiti IR sono più elevati in termini di flessibilità, scalabilità e completezza.

Pertanto, con la versione 3.0, Feipiao standardizza la definizione di rappresentazione intermedia IR a livello di infrastruttura per ottenere una rappresentazione unificata dell'intera architettura e la condivisione dei risultati di sviluppo in tutte le direzioni a monte e a valle. L'architettura IR di nuova generazione di Feipiao si concentra sulle due importanti dimensioni di elevata flessibilità ed elevata scalabilità. È sviluppata attraverso capacità di espressione semantica più complete e robuste, rappresentazione unificata dell'intera architettura e un efficiente meccanismo di strategia di ottimizzazione delle prestazioni (Pass) collegabile per ottenere una semantica complessa. supportare, supportare in modo più conveniente strategie di segmentazione avanzate con la parallelizzazione automatica di modelli di grandi dimensioni e connettersi perfettamente con il compilatore della rete neurale per ottenere l'ottimizzazione automatica delle prestazioni e l'adattamento multi-hardware.



Flying Paddle Intermediate Representation (PIR) astrae un insieme di componenti di base altamente scalabili nello strato inferiore, che coprono Tipo, Attributo, Op, Tratto e Interfaccia, e introduce il concetto di Dialetto, dando agli sviluppatori la possibilità di espandersi in modo flessibile e personalizzare liberamente, così Fornisce funzionalità di espressione semantica complete e robuste. A livello di rappresentazione del modello, attraverso la gestione modulare di più dialetti e la rappresentazione multiterminale unificata, si ottiene una rappresentazione unificata dell'intera architettura che integra formazione e inferenza, si ottiene una connessione perfetta tra operatori e compilatori e l'ottimizzazione automatica e l'adattamento multi-hardware sono supportati. A livello di trasformazione del grafico, unificando i moduli sottostanti e semplificando i concetti di base, offre agli utenti un'esperienza di sviluppo a basso costo, facile da usare e ad alte prestazioni, nonché un meccanismo di ottimizzazione del passaggio ricco e collegabile. Flying Paddle PIR aderisce al principio di assegnazione singola statica (SSA) per garantire che il modello sia equivalente a un grafico aciclico diretto e utilizza Valore e Operazione per astrarre il grafico di calcolo, dove Operazione rappresenta il nodo e Valore rappresenta il bordo.

Operazione rappresenta un nodo nel grafico di calcolo: ogni Operazione rappresenta un operatore e contiene zero o più Regioni. La regione rappresenta una chiusura, che può contenere zero o più blocchi. Il blocco rappresenta un blocco di base conforme al principio di assegnazione singola statica (SSA) e contiene zero o più operazioni. Attraverso l'annidamento dei cicli tra questi tre, è possibile costruire strutture grammaticali arbitrariamente complesse.

Valore rappresenta un arco diretto nel grafico di calcolo: viene utilizzato per collegare due Operazioni, descrivendo così la catena Usa-Definisci (cioè catena UD) nel programma. Tra questi, OpResult funge da fine della definizione e viene utilizzato per definire un valore mentre OpOperand funge da fine di utilizzo e descrive l'utilizzo di un determinato valore;

Feipiao fornisce due meccanismi di sviluppo del Pass, PatternRewriter e Declarative Rewrite Rule (DRR in breve), che tengono conto della flessibilità di personalizzazione e della facilità di sviluppo. Il metodo di sviluppo Pass in tre fasi consente agli sviluppatori di concentrarsi maggiormente sull'elaborazione della logica Pass senza prestare attenzione ai dettagli dell'IR sottostante. Utilizzando il meccanismo di sviluppo del Pass di PIR, i costi di sviluppo del Pass vengono ridotti del 58% applicati agli scenari di inferenza, oltre l'84% delle inferenze del modello vengono accelerate di oltre il 10%;

Ottimizzazione automatica del compilatore di rete neurale

Ci sono tre ragioni per cui dobbiamo sviluppare la tecnologia del compilatore:

1) Tendenza allo sviluppo dell'hardware: combinando la storia dello sviluppo dell'hardware e le caratteristiche dell'evoluzione tecnologica, la potenza di calcolo si sviluppa molto più velocemente delle prestazioni di accesso alla memoria, le prestazioni della CPU e le prestazioni di accesso alla memoria del bus influiscono sulle prestazioni degli operatori ad uso intensivo di memoria (classe norma , attivazione, ecc.), le prestazioni della CPU e la larghezza di banda del bus influiscono sulla pianificazione e sulle prestazioni. La tecnologia di ottimizzazione generale della fusione automatica basata sul compilatore può fondere più operatori in un unico grande operatore Riducendo la quantità di accesso alla memoria e il numero di operatori, può migliorare notevolmente le prestazioni del modello.

2) Tendenza allo sviluppo del modello: la struttura del modello ha le caratteristiche della diversità e la richiesta di diversità dipende in larga misura dall'ottimizzazione generale del compilatore.

3) Ottimizzazione hardware multipla: esistono molti tipi di hardware sul mercato. Diverse piattaforme hardware hanno caratteristiche e requisiti di ottimizzazione diversi. Ciascun hardware richiede molta manodopera per essere ottimizzato essere notevolmente ridotto.

Illustriamolo attraverso un esempio. Prendiamo come esempio la normalizzazione RMS (Root Mean Square Layer Normalization), che viene spesso utilizzata nel modello Llama. La sua formula di calcolo è relativamente semplice e chiara.



Supponiamo di dover implementare il calcolo della normalizzazione RMS. Il modo più semplice è utilizzare l'interfaccia di sviluppo delle operazioni tensori fornita dal framework Flying Paddle e chiamare operazioni come quadrato, somma, divisione, radice e così via per completare The il codice è il seguente:



Il codice riportato sopra è semplice da sviluppare, ma le sue prestazioni sono scarse e occupano molta memoria video. Gli sviluppatori possono implementare FusedRMSNorm, ma i requisiti per gli sviluppatori sono più elevati e il costo è più elevato;

Con la tecnologia del compilatore di reti neurali, possiamo ottenere miglioramenti significativi delle prestazioni mantenendo un elevato grado di flessibilità e facilità d'uso. I seguenti risultati dei test delle prestazioni dell'operatore RMSNorm sulla piattaforma A100 ne sono una chiara prova: rispetto all'implementazione utilizzando una combinazione di interfacce di sviluppo Python, l'operatore compilato e ottimizzato funziona 4 volte più velocemente anche se è integrato con l'operatore manuale , è stato ottenuto anche un miglioramento delle prestazioni del 14%. Questo risultato dimostra pienamente l'equilibrio ideale tra flessibilità e prestazioni trovato dal telaio della pagaia da mosca.

Per questo motivo, Feipiao considera la tecnologia del compilatore di reti neurali un'importante direzione di ricerca e sviluppo. Quello che segue è il diagramma dell'architettura generale del compilatore Feipiao.



A livello di presentazione, con l'aiuto delle capacità di espansione di PIR, il modulo front-end CINN viene implementato per elaborare trasformazioni relative al livello, tra cui la suddivisione degli operatori, il ricalcolo, la divisione dei sottografi, i moduli di derivazione delle dimensioni e altri moduli, e infine ottiene più backend del compilatore Generare sottografi ottimizzati. Nel backend del compilatore, per questi sottografi fusionabili, il compilatore chiamerà inoltre la funzione Compute per convertirli in una rappresentazione intermedia di basso livello (IR) composta da un albero di sintassi astratto (AST) ed eseguirà un ciclo su questa base Fusion per garantire che possa essere integrato in un kernel; sull'IR sottostante del CINN verrà eseguita un'analisi di ottimizzazione delle prestazioni per ottenere la configurazione ottimale, infine, l'IR sottostante verrà ulteriormente attentamente convertito in un'implementazione di codice specifica;

I risultati sperimentali sul modello linguistico generativo Llama e sul modello grafico vincenziano Stable Diffusion mostrano che utilizzando la tecnologia di ottimizzazione del compilatore, rispetto alla versione base senza ottimizzazione manuale delle prestazioni, la velocità di inferenza è rispettivamente del 36% e del 30% più veloce.

Unificazione dinamica e statica e parallelizzazione automatica

Perché facciamo il parallelismo automatico?

Gli attuali metodi di formazione tradizionali per modelli di grandi dimensioni utilizzano una varietà di strategie parallele. Queste strategie parallele si basano sul metodo parallelo "manuale" implementato nella modalità grafico dinamico, ovvero, sulla base di una singola scheda, elaborazione manuale della segmentazione (. segmentazione di tensori, grafici di calcolo), comunicazione (aggiunta di operatori di comunicazione), ottimizzazione della memoria video (condivisione della memoria video, ricalcolo), ottimizzazione della pianificazione (orchestrazione della pipeline, calcolo e comunicazione asincroni) e altre strategie che gli sviluppatori non devono solo conoscere la struttura del modello, ma hanno anche una conoscenza approfondita delle strategie e dei framework paralleli. La logica di pianificazione rende molto elevato lo sviluppo e l'ottimizzazione delle prestazioni di modelli di grandi dimensioni. Oltre ad avere un team dedicato agli algoritmi responsabile dell'innovazione degli algoritmi del modello, deve esserci anche un team dedicato responsabile dell'ottimizzazione parallela del modello. Ciò comporta molti ostacoli all'innovazione e all'iterazione di modelli di grandi dimensioni.

Facciamo un semplice esempio per illustrare la differenza tra lo sviluppo di modelli di grandi dimensioni e la logica a scheda singola Poiché la strategia parallela causerà la modifica della forma di runtime di Tensor, gli operatori relativi all'elaborazione della forma devono considerare se saranno influenzati dalla strategia parallela. Come mostrato nell'elaborazione di rimodellamento di seguito, la strategia di segmentazione provoca la trasformazione della forma di input, quindi la forma di output deve essere ragionevolmente adattata in base alla strategia di segmentazione:



A tal fine, proponiamo uno schema parallelo automatico che unifica le condizioni dinamiche e statiche. Gli sviluppatori necessitano solo di una piccola quantità di annotazioni sulla segmentazione dei tensori e il framework può derivare automaticamente lo stato di segmentazione distribuita di tutti i tensori e gli operatori e aggiungere operatori di comunicazione appropriati per garantire la correttezza dei risultati, infine, si baserà sulla struttura del modello; e le informazioni del cluster, combinate con la memoria grafica e l'ottimizzazione del livello di pianificazione, trovano automaticamente la strategia parallela distribuita più efficiente.

Nella progettazione parallela automatica, gli sviluppatori necessitano solo di una piccola quantità di annotazioni di segmentazione dei tensori. Astraiamo i metodi di segmentazione e richiediamo due tipi di metodi di segmentazione: tensori di segmentazione (parametri, input) e grafici di calcolo di segmentazione (pipeline). Per implementare questi due tipi di metodi di segmentazione, il framework necessita di un meccanismo per descrivere la relazione di mappatura tra tensori distribuiti e dispositivi di calcolo. A tal fine, introduciamo i due concetti distribuiti di ProcessMesh e Placements che mappa una scheda GPU su a Process mappa più dispositivi in ​​array unidimensionali o multidimensionali composti da più processi La figura seguente mostra due diverse rappresentazioni astratte di ProcessMesh composte da 8 dispositivi.



Posizionamenti è un elenco composto da tre tag distribuiti: Replicate, Shard e Partial. La lunghezza è coerente con la dimensione di ProcessMesh. Viene utilizzato per indicare quale tag distribuito viene utilizzato per dividere il tensore distribuito nella dimensione del dispositivo di elaborazione corrispondente .This Le descrizioni dettagliate dei tre tag distribuiti sono le seguenti:

Come mostrato nella figura seguente, Replicato significa che il tensore esisterà sotto forma di replica su diversi dispositivi; Shard significa che il tensore sarà suddiviso su diversi dispositivi in ​​base a dimensioni specifiche; Parziale significa che il tensore sul dispositivo è incompleto e richiede Riduci somma o Riduci Lo stato completo può essere ottenuto solo dopo Media e altre operazioni in modi diversi.



Dopo aver completato l'astrazione del tag distribuito, chiamiamo
L'interfaccia paddle.distributed.shard_tensor() implementa la marcatura dello sharding del tensore. Attraverso la marcatura e la derivazione automatica dell'affettamento del tensore, possiamo rappresentare il parallelismo ibrido distribuito complesso. La figura seguente mostra un esempio specifico di parallelismo ibrido composto da parallelismo dei dati, parallelismo del modello tensore e parallelismo della pipeline.



Il codice seguente mostra un esempio specifico di parallelismo misto.



Adottando un approccio di sviluppo parallelo automatico, gli sviluppatori non devono più considerare logiche di comunicazione complesse. Prendendo come esempio il compito Llama, la quantità di codice core di addestramento distribuito è stata ridotta del 50%, riducendo così notevolmente la difficoltà di sviluppo. Da alcuni dei nostri esperimenti, si può vedere che con l'aiuto dell'analisi globale e di altre ottimizzazioni , le prestazioni sono anche migliori rispetto a quelle della parallelizzazione manuale dei grafici dinamici.

In futuro, esploreremo ulteriormente il parallelismo completamente automatico senza utilizzare marcatori di divisione del tensore, consentendo agli sviluppatori di scrivere codice distribuito proprio come scrivere codice autonomo, migliorando ulteriormente l’esperienza di sviluppo di modelli di grandi dimensioni.

Vantaggi industriali

In generale, il framework di nuova generazione di Flying Paddle - Flying Paddle Framework 3.0-Beta è progettato specificamente per modelli di grandi dimensioni e multi-core eterogenei. Si adatta verso il basso a multi-core eterogenei e libera completamente il potenziale dell'hardware verso l'alto supportando modelli di grandi dimensioni. Addestramento e inferenza del modello. Allo stesso tempo, ha quattro funzionalità principali: parallelizzazione automatica unificata dinamica e statica, ottimizzazione automatica del compilatore, formazione di modelli di grandi dimensioni e integrazione push e adattamento multi-hardware di modelli di grandi dimensioni, che migliora in modo completo la capacità di servire l'industria.

Parallelizzazione automatica statica e dinamica unificata: questa funzione riduce notevolmente i costi di sviluppo industriale e formazione. Gli utenti devono solo contrassegnare una piccola quantità di segmentazione del tensore su una singola scheda e il Flying Paddle Framework completerà automaticamente la derivazione delle informazioni di segmentazione distribuita e aggiungerà operatori di comunicazione per garantire la correttezza della logica. Allo stesso tempo, in base alla struttura del modello e alle informazioni sul cluster, combinate con l'ottimizzazione della memoria video e del livello di pianificazione, Flying Paddle può trovare automaticamente la strategia parallela distribuita più efficiente, riducendo così notevolmente i costi di sviluppo dell'addestramento parallelo ibrido, consentendo gli sviluppatori a concentrarsi maggiormente su modelli e algoritmi di innovazione.

Ottimizzazione automatica del compilatore: questa funzionalità riduce significativamente il costo dell'ottimizzazione delle prestazioni. Il compilatore di Fei Paddle è progettato per essere integrato con il framework e può supportare l'addestramento efficiente e il ragionamento a forma variabile di vari modelli come modelli generativi e modelli di calcolo scientifico, fornendo un buon equilibrio tra flessibilità di calcolo e prestazioni elevate. Attraverso la fusione automatica degli operatori e della tecnologia di generazione del codice, le prestazioni di inferenza di modelli generativi come Llama2 e Stable Diffusion sono state migliorate di oltre il 30%.

Formazione integrata e promozione di modelli di grandi dimensioni: questa funzionalità offre al settore la migliore esperienza di sviluppo. Consente il riutilizzo reciproco delle funzionalità di training e inferenza, fornendo un'esperienza di sviluppo unificata e la massima efficienza di training per l'intero processo di modelli di grandi dimensioni. Passando dal movimento all’immobilità, il lavoro di allenamento e quello di ragionamento possono essere perfettamente collegati. I calcoli generativi durante il processo di training RLHF (apprendimento per rinforzo con feedback umano) possono essere riutilizzati per l'ottimizzazione dell'inferenza, ottenendo un'accelerazione 2,1x. Allo stesso tempo, l’efficienza della strategia parallela automatica distribuita per la formazione sul riutilizzo degli scenari di ragionamento e quantificazione è aumentata di 3,8 volte.

Adattamento multi-hardware di modelli di grandi dimensioni: una delle caratteristiche importanti di Flying Paddle è adattarsi a multi-core eterogenei e liberare completamente il potenziale dell'hardware. In termini di meccanismo di accesso, Flying Paddle fornisce un'interfaccia astratta semplice ed efficiente e un sistema operatore di base, riducendo i costi di adattamento. In termini di meccanismo operativo, ottimizza la pianificazione, la condivisione dello spazio di archiviazione e altri meccanismi per migliorare l'efficienza della pianificazione. Dal punto di vista dei core degli operatori, Feipiao fornisce una soluzione di ottimizzazione automatica della fusione del compilatore per migliorare le prestazioni end-to-end. Allo stesso tempo, Feipiao ha anche costruito infrastrutture di ricerca e sviluppo come l’integrazione del codice, l’integrazione continua e i test di regressione dei modelli per nuovi produttori di hardware. Questi meccanismi assicurano che il nuovo hardware sia incluso nel normale sistema di rilascio di Feipiao e gli utenti possano installarlo e provarlo direttamente senza compilarlo. Il meccanismo di accesso completamente funzionale ed a basso costo di Flying Paddle ha attratto i produttori di hardware a contribuire congiuntamente con 3.456 PR a Flying Paddle, inclusi un totale di oltre 25.000 commit.

Questo è il framework 3.0 di nuova generazione di Fei Paddle. Attualmente, la versione 3.0-Beta è aperta agli sviluppatori e tutte le interfacce di sviluppo sono completamente compatibili con la 2.0. Gli sviluppatori sono benvenuti a utilizzarla e a fornire feedback.