DeepMind ha rilasciato il codice sorgente per S6, un compilatore JIT per Python

S6-mente profonda

S6, è una libreria di compilatori JIT standalone per CPython

mente profonda, noto per i suoi sviluppi nel campo dell'intelligenza artificiale, lo ha recentemente annunciato ha preso la decisione di rilasciare il codice sorgente del progetto S6, che è stato sviluppato da un compilatore JIT per il linguaggio Python.

Il progetto è interessante perché è progettato come una libreria di estensione che può essere integrato con CPython standard, che fornisce la piena compatibilità con CPython e non richiede modifiche del codice interprete. Il progetto è in fase di sviluppo dal 2019, ma purtroppo è stato ridimensionato e non è più in fase di sviluppo.

S6 era un progetto avviato all'interno di DeepMind nel 2019 per velocizzare CPython con la compilazione just-in-time ("JIT"). Queste funzioni verrebbero fornite come una normale libreria Python e non sarebbero necessarie modifiche all'interprete CPython. S6 intendeva fare per Python ciò che V8 faceva per Javascript (il nome è un omaggio a V8). Il lavoro era basato su CPython versione 3.7. A seconda del carico di lavoro, abbiamo riscontrato incrementi di velocità fino a 9.5 volte nei benchmark comuni.

Il motivo principale per cui si è deciso di rilasciare il codice sorgente, uno di questi e come già accennato è che il progetto ha smesso di avere supporto, un altro dei motivi principali è stato dato che in base agli sviluppi creati, questi possono comunque essere utili per migliorare python .

Abbiamo smesso di lavorare su S6 internamente. Pertanto, questo repository è stato archiviato e non accettiamo richieste o problemi di pull. Abbiamo open source e fornito una panoramica del design di seguito per stimolare le conversazioni all'interno della comunità Python e ispirare il lavoro futuro per migliorare Python.

Per quanto riguarda il funzionamento di S6, dovremmo menzionarlo S6 per Python si confronta con il motore V8 per JavaScript in termini di compiti che risolve. La libreria sostituisce il driver dell'interprete di bytecode ceval.c esistente con la propria implementazione che utilizza la compilazione JIT per accelerare l'esecuzione.

S6 verifica se la funzione corrente è già stata compilata e, in tal caso, esegue il codice compilato e, in caso contrario, esegue la funzione in una modalità di interpretazione del bytecode simile all'interprete CPython. L'interpretazione conta il numero di istruzioni e chiamate eseguite associate alla funzione in elaborazione.

Dopo aver raggiunto un determinato traguardo, viene avviato il processo di compilazione per velocizzare il codice che viene eseguito frequentemente. La compilazione viene eseguita sulla rappresentazione intermedia strongjit, che, dopo l'ottimizzazione, viene convertita in istruzioni macchina del sistema di destinazione utilizzando la libreria asmjit.

A seconda della natura del carico, in condizioni ottimali, S6 dimostra un aumento della velocità di esecuzione del test fino a 9,5 volte rispetto al normale CPython.

Quando vengono eseguite 100 iterazioni dalla suite di test Richards, c'è un'accelerazione di 7 volte, e quando si esegue il test Raytrace, che contiene molta matematica, è da 3 a 4,5 volte più veloce.

Compiti difficili da ottimizzare con S6 sono i progetti che utilizzano l'API C, come NumPy, nonché operazioni relative alla necessità di verificare i tipi di un numero elevato di valori.

Si osservano scarse prestazioni anche per le chiamate a funzione singola che consumano molte risorse a causa dell'uso dell'implementazione non ottimizzata dell'interprete Python S6 (lo sviluppo non ha raggiunto la fase di ottimizzazione della modalità di interpretazione).

Ad esempio, nel test Unpack Sequence, che decomprime grandi insiemi di array/tuple, una singola chiamata mostra un rallentamento fino a 5 volte e una chiamata ciclica produce 0,97 da CPython.

Infine per chi è interessato a saperne di più, dovresti sapere che il codice del compilatore JIT è scritto in C++ ed è attualmente basato su CPython 3.7, oltre al fatto che il codice sorgente è già aperto con licenza Apache 2.0 ed è consultabile dal link sottostante.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.