DeepMind merilis kode sumber untuk S6, kompiler JIT untuk Python

s6-deepmind

S6, adalah pustaka kompiler JIT mandiri untuk CPython

pikiran dalam, dikenal dengan perkembangannya di bidang kecerdasan buatan, baru-baru ini mengumumkan bahwa telah membuat keputusan untuk merilis kode sumber proyek S6, yang ia kembangkan dari kompiler JIT untuk bahasa Python.

Proyeknya menarik karena dirancang sebagai perpustakaan ekstensi yang dapat diintegrasikan dengan CPython standar, yang menyediakan kompatibilitas CPython penuh dan tidak memerlukan modifikasi dari kode penerjemah. Proyek ini telah dikembangkan sejak 2019, tetapi sayangnya telah diperkecil dan tidak lagi dalam pengembangan.

S6 adalah proyek yang dimulai dalam DeepMind pada tahun 2019 untuk mempercepat CPython dengan kompilasi just-in-time ("JIT"). Fungsi-fungsi ini akan disediakan sebagai pustaka Python normal dan tidak diperlukan perubahan pada juru bahasa CPython. S6 dimaksudkan untuk melakukan untuk Python apa yang dilakukan V8 untuk Javascript (nama tersebut merupakan penghormatan kepada V8). Pekerjaan didasarkan pada CPython versi 3.7. Bergantung pada beban kerja, kami melihat peningkatan hingga 9.5x dalam tolok ukur umum.

Alasan utama mengapa diputuskan untuk merilis kode sumber, salah satunya dan seperti yang telah disebutkan adalah bahwa proyek berhenti memiliki dukungan, alasan utama lainnya diberikan bahwa berdasarkan pengembangan yang dibuat, ini masih dapat berguna untuk meningkatkan python .

Kami telah berhenti mengerjakan S6 secara internal. Dengan demikian, repositori ini telah diarsipkan dan kami tidak menerima permintaan atau masalah tarik. Kami membuka sumber dan memberikan ikhtisar desain di bawah ini untuk merangsang percakapan dalam komunitas Python dan menginspirasi pekerjaan di masa depan untuk meningkatkan Python.

Mengenai pengoperasian S6, kami harus menyebutkan bahwa S6 untuk Python dibandingkan dengan mesin V8 untuk JavaScript dalam hal tugas yang diselesaikannya. Pustaka menggantikan driver interpreter bytecode ceval.c yang ada dengan implementasinya sendiri yang menggunakan kompilasi JIT untuk mempercepat eksekusi.

S6 memeriksa apakah fungsi saat ini telah dikompilasi dan, jika demikian, mengeksekusi kode yang dikompilasi, dan jika tidak, menjalankan fungsi dalam mode interpretasi bytecode yang mirip dengan interpreter CPython. Interpretasi menghitung jumlah pernyataan yang dieksekusi dan panggilan yang terkait dengan fungsi yang sedang diproses.

Setelah mencapai tonggak tertentu, proses pembuatan dimulai untuk mempercepat kode yang sering berjalan. Kompilasi dilakukan pada representasi perantara strongjit, yang, setelah pengoptimalan, dikonversi ke instruksi mesin sistem target menggunakan pustaka asmjit.

Bergantung pada sifat beban, dalam kondisi optimal, S6 menunjukkan peningkatan kecepatan eksekusi pengujian hingga 9,5 kali dibandingkan dengan CPython biasa.

Ketika 100 iterasi dijalankan dari rangkaian tes Richards, ada percepatan 7 kali dan saat menjalankan tes Raytrace, yang berisi banyak matematika, 3 hingga 4,5 kali lebih cepat.

Tugas yang sulit untuk dioptimalkan dengan S6 adalah proyek yang menggunakan C API, seperti NumPy, serta operasi yang terkait dengan kebutuhan untuk memeriksa jenis sejumlah besar nilai.

Performa buruk juga terlihat untuk panggilan fungsi tunggal yang menghabiskan banyak sumber daya karena penggunaan implementasi interpreter S6 Python yang tidak dioptimalkan (pengembangan belum mencapai tahap pengoptimalan mode interpretasi).

Misalnya, dalam pengujian Unpack Sequence, yang membongkar kumpulan array/tupel yang besar, satu panggilan menunjukkan perlambatan hingga 5 kali, dan panggilan siklik menghasilkan 0,97 dari CPython.

Akhirnya bagi mereka yang tertarik untuk mengetahui lebih banyak tentangnya, Anda harus tahu bahwa kode kompiler JIT ditulis dalam C++ dan saat ini didasarkan pada CPython 3.7, selain fakta bahwa kode sumber sudah terbuka di bawah lisensi Apache 2.0 dan dapat dikonsultasikan dari tautan di bawah.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.