DeepMind mengeluarkan kod sumber untuk S6, pengkompil JIT untuk Python

s6-deepmind

S6, ialah perpustakaan pengkompil JIT yang berdiri sendiri untuk CPython

deepmind, terkenal dengan perkembangannya dalam bidang kecerdasan buatan, baru-baru ini mengumumkan bahawa telah membuat keputusan untuk mengeluarkan kod sumber projek S6, iaitu dia dibangunkan daripada pengkompil JIT untuk bahasa Python.

Projek itu menarik kerana direka bentuk sebagai perpustakaan sambungan yang boleh disepadukan dengan CPython standard, yang menyediakan keserasian CPython penuh dan tidak memerlukan pengubahsuaian kod penterjemah. Projek itu telah dibangunkan sejak 2019, tetapi malangnya telah dikurangkan dan tidak lagi dalam pembangunan.

S6 ialah projek yang dimulakan dalam DeepMind pada 2019 untuk mempercepatkan CPython dengan kompilasi tepat-dalam-masa ("JIT". Fungsi ini akan disediakan sebagai perpustakaan Python biasa dan tiada perubahan pada penterjemah CPython akan diperlukan. S6 bertujuan untuk melakukan untuk Python apa yang V8 lakukan untuk Javascript (nama itu adalah penghormatan kepada V8). Kerja ini berdasarkan CPython versi 3.7. Bergantung pada beban kerja, kami melihat peningkatan sehingga 9.5x dalam penanda aras biasa.

Sebab utama mengapa ia diputuskan untuk mengeluarkan kod sumber, salah satunya dan seperti yang telah disebutkan adalah bahawa projek itu berhenti mendapat sokongan, satu lagi sebab utama diberikan bahawa berdasarkan perkembangan yang dibuat, ini masih boleh berguna untuk menambah baik python .

Kami telah berhenti mengusahakan S6 secara dalaman. Oleh itu, repositori ini telah diarkibkan dan kami tidak menerima permintaan atau isu tarik. Kami sumber terbuka dan memberikan gambaran keseluruhan reka bentuk di bawah untuk merangsang perbualan dalam komuniti Python dan memberi inspirasi kepada kerja masa depan untuk menambah baik Python.

Mengenai operasi S6, kita harus menyebutnya S6 untuk Python dibandingkan dengan enjin V8 untuk JavaScript dari segi tugas yang diselesaikannya. Perpustakaan menggantikan pemacu penterjemah kod bait ceval.c sedia ada dengan pelaksanaannya sendiri yang menggunakan kompilasi JIT untuk mempercepatkan pelaksanaan.

S6 menyemak sama ada fungsi semasa telah disusun dan, jika ya, laksanakan kod yang disusun, dan jika tidak, laksanakan fungsi dalam mod tafsiran bytecode yang serupa dengan penterjemah CPython. Tafsiran mengira bilangan pernyataan dan panggilan yang dilaksanakan yang dikaitkan dengan fungsi yang sedang diproses.

Selepas mencapai pencapaian tertentu, proses binaan dimulakan untuk mempercepatkan kod yang kerap berjalan. Penyusunan dilakukan pada perwakilan perantaraan strongjit, yang, selepas pengoptimuman, ditukar kepada arahan mesin sistem sasaran menggunakan perpustakaan asmjit.

Bergantung pada sifat beban, dalam keadaan optimum, S6 menunjukkan peningkatan dalam kelajuan pelaksanaan ujian sehingga 9,5 kali berbanding CPython biasa.

Apabila 100 lelaran dilaksanakan dari suite ujian Richards, terdapat pecutan sebanyak 7 kali, dan apabila menjalankan ujian Raytrace, yang mengandungi banyak matematik, ia adalah 3 hingga 4,5 kali lebih pantas.

Tugas yang sukar untuk dioptimumkan dengan S6 ialah projek yang menggunakan C API, seperti NumPy, serta operasi yang berkaitan dengan keperluan untuk menyemak jenis sejumlah besar nilai.

Prestasi yang lemah juga dilihat untuk panggilan fungsi tunggal yang menggunakan banyak sumber kerana penggunaan pelaksanaan penterjemah S6 Python yang tidak dioptimumkan (pembangunan belum mencapai tahap pengoptimuman mod tafsir).

Contohnya, dalam ujian Unpack Sequence, yang membongkar set besar tatasusunan/tuple, satu panggilan menunjukkan kelembapan sehingga 5 kali dan panggilan kitaran menghasilkan 0,97 daripada CPython.

Akhirnya bagi mereka yang berminat untuk mengetahui lebih lanjut mengenainya, anda harus tahu bahawa kod pengkompil JIT ditulis dalam C++ dan pada masa ini berdasarkan CPython 3.7, sebagai tambahan kepada fakta bahawa kod sumber sudah dibuka di bawah lesen Apache 2.0 dan boleh dirujuk dari pautan di bawah.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.