DeepMind julkaisi lähdekoodin S6:lle, JIT-kääntäjälle Pythonille

s6-deepmind

S6 on erillinen JIT-kääntäjäkirjasto CPythonille

syvä mieli, tunnettu kehitystyöstään tekoälyn alalla, ilmoitti äskettäin siitä on tehnyt päätöksen S6-projektin lähdekoodin julkaisemisesta, jonka hän kehitti JIT-kääntäjästä Python-kielelle.

Projekti on mielenkiintoinen koska on suunniteltu laajennuskirjastoksi joka voidaan integroida tavalliseen CPythoniin, joka tarjoaa täyden CPython-yhteensopivuuden eikä vaadi muutoksia tulkkikoodista. Projektia on kehitetty vuodesta 2019, mutta valitettavasti sitä on pienennetty eikä se ole enää kehitteillä.

S6 oli DeepMindissä vuonna 2019 aloitettu projekti CPythonin nopeuttamiseksi just-in-time ("JIT") -kokoelmalla. Nämä toiminnot toimitettaisiin normaalina Python-kirjastona, eikä CPython-tulkkiin tarvittaisi tehdä muutoksia. S6:n tarkoituksena oli tehdä Pythonille sama, kuin V8 teki Javascriptille (nimi on kunnianosoitus V8:lle). Työ perustui CPython-versioon 3.7. Työmäärästä riippuen havaitsimme jopa 9.5-kertaisia ​​nopeuksia yleisissä vertailuissa.

Pääsyynä siihen, miksi lähdekoodi päätettiin julkaista, yksi niistä ja kuten jo mainittiin, oli se, että projektin tuki lakkasi, toinen pääsyynä mainittiin, että luotujen kehitysten perusteella näistä voi silti olla hyötyä pythonin parantamisessa. .

Olemme lopettaneet S6:n sisäisen työskentelyn. Sellaisenaan tämä arkisto on arkistoitu, emmekä hyväksy vetopyyntöjä tai ongelmia. Olemme avoimen lähdekoodin ja annoimme alla suunnittelukatsauksen herättääksemme keskusteluja Python-yhteisössä ja innostaaksemme tulevaa työtä Pythonin parantamiseksi.

Mitä tulee S6:n toimintaan, meidän on mainittava se Pythonin S6 verrataan JavaScriptin V8-moottoriin sen ratkaisemien tehtävien suhteen. Kirjasto korvaa olemassa olevan ceval.c-tavukooditulkkiohjaimen omalla toteutuksellaan, joka käyttää JIT-käännöstä suoritusta nopeuttamaan.

S6 tarkistaa, onko nykyinen funktio jo käännetty ja jos on, suorittaa käännetyn koodin, ja jos ei, suorittaa toiminnon tavukoodin tulkintatilassa, joka on samanlainen kuin CPython-tulkki. Tulkinta laskee käsiteltyyn funktioon liittyvien suoritettujen lauseiden ja kutsujen määrän.

Kun tietty virstanpylväs on saavutettu, rakennusprosessi aloitetaan koodin nopeuttamiseksi joka toimii usein. Kääntäminen suoritetaan strongjit-väliesitykseen, joka optimoinnin jälkeen muunnetaan kohdejärjestelmän konekäskyiksi asmjit-kirjaston avulla.

Kuorman luonteesta riippuen optimaalisissa olosuhteissa S6:n testien suoritusnopeus on jopa 9,5-kertainen tavalliseen CPythoniin verrattuna.

Kun 100 iteraatiota suoritetaan Richardsin testisarjasta, on 7-kertainen kiihtyvyys, ja kun ajetaan Raytrace-testiä, joka sisältää paljon matematiikkaa, se on 3-4,5 kertaa nopeampi.

Tehtävät, joita on vaikea optimoida S6:n kanssa ovat projekteja, jotka käyttävät C API:ta, kuten NumPy, sekä toiminnot, jotka liittyvät suuren määrän arvojen tyyppien tarkistamiseen.

Huono suorituskyky näkyy myös yksittäisissä toiminnoissa jotka kuluttavat paljon resursseja johtuen S6 Python -tulkin optimoimattomasta toteutuksesta (kehitys ei ole edennyt tulkintatilan optimoinnin vaiheeseen).

Esimerkiksi Unpack Sequence -testissä, joka purkaa suuria taulukoita/tupleja, yksi puhelu osoittaa jopa 5-kertaisen hidastumisen, ja syklinen kutsu tuottaa 0,97 CPythonista.

Vihdoin niille, jotka ovat kiinnostuneita tietämään siitä lisää, sinun pitäisi tietää, että JIT-kääntäjäkoodi on kirjoitettu C++-kielellä ja perustuu tällä hetkellä CPython 3.7:ään, sen lisäksi, että lähdekoodi on jo avoin Apache 2.0 -lisenssillä ja sitä voi tarkastella alla olevasta linkistä.


Artikkelin sisältö noudattaa periaatteita toimituksellinen etiikka. Ilmoita virheestä napsauttamalla täällä.

Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista.

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.