DeepMind open sourced S6, perpustakaan kalayan palaksanaan kompiler JIT pikeun CPython

DeepMind, dipikawanoh pikeun kamajuan dina widang kecerdasan jieunan, geus dibuka kodeu sumber proyék S6, nu ngembangkeun hiji kompiler JIT pikeun basa Python. Proyék éta metot sabab dirancang salaku perpustakaan extension nu integrates kalawan CPython baku, mastikeun kasaluyuan pinuh ku CPython teu merlukeun modifikasi tina kode juru. Proyék éta parantos dikembangkeun ti taun 2019, tapi hanjakalna dihentikan sareng henteu berkembang deui. Kusabab pamekaran anu diciptakeun tiasa mangpaat pikeun ningkatkeun Python, éta mutuskeun pikeun muka sumber kode. Kode kompiler JIT ditulis dina C ++ sarta dumasar kana CPython 3.7. tur open sourced handapeun lisénsi Apache 2.0.

Dina watesan tugas bisa ngajawab, S6 pikeun Python ngabandingkeun kana mesin V8 pikeun JavaScript. Perpustakaan ngagantikeun nu aya bytecode juru Handler ceval.c kalawan palaksanaan sorangan anu ngagunakeun kompilasi JIT pikeun nyepetkeun palaksanaan. S6 mariksa naha fungsi ayeuna geus disusun tur, upami kitu, executes kode disusun, sarta lamun henteu, ngajalankeun fungsi dina modeu interpretasi bytecode, sarupa jeung juru CPython. Salila interpretasi, jumlah paréntah dieksekusi sareng telepon anu aya hubunganana sareng fungsi anu diprosés diitung. Saatos ngahontal milestone anu tangtu, prosés kompilasi dimimitian pikeun nyepetkeun kode anu sering dieksekusi. Kompilasi dilaksanakeun kana perwakilan strongjit panengah, anu, saatos optimasi, dirobih kana paréntah mesin tina sistem target nganggo perpustakaan asmjit.

Gumantung kana sifat beban kerja, S6 dina kaayaan optimal nunjukkeun kanaékan laju palaksanaan tés dugi ka 9.5 kali dibandingkeun CPython biasa. Nalika ngajalankeun 100 iterasi tina Richards test suite, a speedup 7x dititénan, sarta nalika ngajalankeun test Raytrace, nu ngalibatkeun jumlah badag itungan matematik, a speedup 3-4.5x observasi.

Diantara tugas anu hese ngaoptimalkeun nganggo S6 nyaéta proyék-proyék anu nganggo C API, sapertos NumPy, ogé operasi anu aya hubunganana sareng kabutuhan mariksa jinis-jinis nilai anu ageung. Kinerja low ogé dititénan pikeun panggero tunggal fungsi sumberdaya-intensif alatan pamakéan palaksanaan unoptimized S6 sorangan tina juru Python (kamekaran teu ngahontal tahap optimizing mode interpretasi). Contona, dina tés Unpack Sequence, nu unpacks susunan badag tina arrays / tuples, ku panggero tunggal aya slowdown nepi ka 5 kali, sarta ku panggero siklik kinerja 0.97 ti CPython.

sumber: opennet.ru

Tambahkeun komentar