


Pengurangan memori sebanyak 3%-7%! Google mencadangkan rangka kerja pembelajaran mesin MLGO untuk pengoptimuman pengkompil
Dengan kelahiran komputer moden, masalah bagaimana untuk menyusun kod yang lebih cepat dan lebih kecil muncul.
Pengoptimuman kompilasi ialah kaedah pengoptimuman dengan nisbah kos-faedah tertinggi Pengoptimuman kod yang lebih baik boleh mengurangkan kos operasi aplikasi pusat data yang besar. Saiz kod terkumpul adalah penting untuk sistem mudah alih dan terbenam atau perisian yang digunakan pada partition but selamat, kerana binari yang disusun mesti memenuhi belanjawan saiz kod yang ketat. Apabila bidang semakin maju, heuristik yang semakin kompleks menghimpit ruang sistem yang terhad, menghalang penyelenggaraan dan penambahbaikan selanjutnya.
Penyelidikan terkini menunjukkan bahawa pembelajaran mesin boleh membuka lebih banyak peluang dalam pengoptimuman pengkompil dengan menggantikan heuristik kompleks dengan strategi pembelajaran mesin. Walau bagaimanapun, penggunaan strategi pembelajaran mesin dalam tujuan umum, penyusun gred industri kekal sebagai cabaran.
Untuk menyelesaikan masalah ini, dua jurutera kanan di Google, Qian Yundi dan Mircea Trofin, mencadangkan "MLGO, rangka kerja pengoptimuman pengkompil berpandukan pembelajaran mesin", yang merupakan industri pertama Rangka kerja universal untuk menyepadukan teknik pembelajaran mesin secara sistematik ke dalam LLVM, infrastruktur penyusun industri sumber terbuka yang ada di mana-mana dalam membina perisian berprestasi tinggi yang kritikal misi.
Alamat kertas: https://arxiv.org/pdf/2101.04808.pdf
MLGO menggunakan pembelajaran pengukuhan untuk melatih rangkaian saraf untuk membuat keputusan, menggantikan algoritma heuristik dalam LLVM. Menurut penerangan pengarang, terdapat dua pengoptimuman MLGO pada LLVM:
1) Kurangkan jumlah kod melalui sebaris
2) Melalui peruntukan daftar Meningkatkan prestasi kod.
Kedua-dua pengoptimuman tersedia dalam repositori LLVM dan telah digunakan dalam pengeluaran.
1 Bagaimanakah MLGO berfungsi?
Sebaris membantu mengurangkan saiz kod dengan membuat keputusan yang mengalih keluar kod berlebihan. Dalam contoh di bawah, fungsi pemanggil <code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border-radius: 6px; line-height: inherit; overflow-wrap: break-word; text-indent: 0px;"><span style="font-size: 15px;">foo()</span>
foo() dipanggil atau berfungsi <span style="font-size: 15px;">bar()</span>
<span style="font-size: 15px;">bar()</span>
<span style="font-size: 15px;">bar()</span>
, dan
bar()<span style="font-size: 15px;">baz()</span>
sendiri memanggil <span style="font-size: 15px;">foo()</span>
baz(). Sebaris dua tapak panggilan ini akan mengembalikan
<p style="text-align: center;">foo()<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168291834816871.png" class="lazy" alt="内存减少3%-7%!谷歌提出用于编译器优化的机器学习框架 MLGO"></p>
fungsi yang akan mengurangkan saiz kod. Kapsyen: Sebaris mengurangkan saiz kod dengan mengalih keluar kod berlebihan
Dalam kod sebenar, terdapat beribu-ribu fungsi yang memanggil satu sama lain, sekali gus membentuk graf panggilan. Semasa fasa sebaris, pengkompil merentasi graf panggilan semua pasangan pemanggil-pemanggil dan memutuskan sama ada untuk sebaris pasangan pemanggil-pemanggil. Ini adalah proses membuat keputusan yang berterusan, kerana keputusan sebaris sebelumnya akan mengubah graf panggilan, mempengaruhi keputusan seterusnya dan keputusan akhir. Dalam contoh di atas, graf panggilan<code style="font-family: monospace; font-size: 12px; background-color: rgba(0, 0, 0, 0.06); padding: 0px 2px; border-radius: 6px; line-height: inherit; overflow-wrap: break-word; text-indent: 0px;"><span style="font-size: 15px;">foo()</span>
foo() → <span style="font-size: 15px;">bar()</span>
<span style="font-size: 15px;">bar()</span>
<span style="font-size: 15px;">baz()</span>
→
baz()
Memerlukan keputusan "ya" pada kedua-dua belah pihak untuk mengecilkan saiz kod.
Sebelum MLGO, keputusan sebaris/bukan sebaris telah dibuat oleh heuristik yang menjadi semakin sukar untuk diperbaiki dari semasa ke semasa. MLGO menggantikan heuristik dengan model pembelajaran mesin. Semasa merentasi graf panggilan, pengkompil mencari cadangan rangkaian saraf sama ada untuk menyelaraskan pasangan pemanggil-pemanggil tertentu melalui ciri yang berkaitan (iaitu, input) dalam graf input, dan melaksanakan keputusan secara berurutan sehingga keseluruhan graf Sehingga graf panggilan dicapai.
Ilustrasi: Ilustrasi MLGO semasa proses inlining, "#bbs", "#users" dan "callsite height" ialah contoh ciri pasangan pemanggil-pemanggil
MLGO menggunakan kecerunan dasar dan algoritma dasar evolusi untuk latihan RL bagi rangkaian keputusan. Walaupun tiada kebenaran asas tentang keputusan yang optimum, RL dalam talian menggunakan dasar terlatih yang berulang antara latihan dan pemasangan yang dijalankan untuk mengumpul data dan menambah baik dasar. Khususnya, memandangkan model yang sedang dalam latihan, pengkompil merujuk model semasa fasa sebaris untuk membuat keputusan sebaris/bukan sebaris. Selepas penyusunan, ia menghasilkan log proses keputusan berurutan (status, tindakan, ganjaran). Log ini kemudiannya diserahkan kepada jurulatih untuk mengemas kini model. Proses ini diulang sehingga model yang memuaskan diperolehi.
Nota gambar: Tingkah laku pengkompil semasa latihan
- pengkompil menyusun kod sumber foo.cpp ke dalam objek fail foo.o, dan melakukan satu siri pengoptimuman, salah satunya ialah saluran sebaris.
Dasar terlatih dibenamkan ke dalam pengkompil, memberikan keputusan sebaris/bukan sebaris semasa proses penyusunan. Tidak seperti senario latihan, strategi ini tidak menghasilkan log. Model TensorFlow dibenamkan dalam XLA AOT, yang menukar model kepada kod boleh laku. Ini mengelakkan kebergantungan dan overhed masa jalan TensorFlow, meminimumkan masa tambahan dan kos memori yang diperkenalkan oleh inferens model ML pada masa penyusunan.
Kapsyen: Tingkah laku pengkompil dalam persekitaran pengeluaran
Kami Saiz sebaris strategi telah dilatih pada pakej dalaman yang besar yang mengandungi 30k modul. Strategi terlatih boleh digeneralisasikan apabila menyusun perisian lain, dan
mengurangkan masa dan overhed memori sebanyak 3% ~ 7%. Selain keluasan merentas perisian, keluasan merentas masa juga penting, kedua-dua perisian dan pengkompil sedang dalam pembangunan aktif, jadi strategi yang terlatih diperlukan untuk mengekalkan prestasi yang baik dalam jumlah masa yang munasabah. Kami menilai prestasi model pada set perisian yang sama selepas tiga bulan dan mendapati hanya sedikit kemerosotan.Carta: Peratusan pengurangan saiz dasar saiz sebaris, paksi-x mewakili perisian yang berbeza, paksi-y mewakili pengurangan peratusan. "Latihan" ialah perisian yang melatih model dan "InfraX" ialah pakej perisian dalaman yang berbeza.
Latihan ubah saiz sebaris MLGO telah digunakan pada Fuchsia, sistem pengendalian sumber terbuka umum yang direka untuk menggerakkan ekosistem perkakasan dan perisian yang berbeza, Di mana saiz binari adalah kunci. Di sini, MLGO menunjukkan pengurangan 6.3% dalam saiz unit terjemahan C++.
2 Daftar Peruntukan
Sebagai rangka kerja umum, kami menggunakan MLGO untuk menambah baik saluran peruntukan daftar (Register allocation) untuk meningkatkan prestasi kod dalam LLVM. Peruntukan daftar menyelesaikan masalah memperuntukkan daftar fizikal kepada skop aktif (iaitu pembolehubah).
Apabila kod dilaksanakan, julat langsung yang berbeza diselesaikan pada masa yang berbeza, mengeluarkan daftar untuk peringkat pemprosesan seterusnya. Dalam contoh berikut, setiap arahan "tambah" dan "darab" memerlukan semua operan dan keputusan berada dalam daftar fizikal. Julat masa nyata x diberikan kepada daftar hijau dan dilengkapkan sebelum julat masa nyata daftar biru atau kuning. Selepas x selesai, daftar hijau tersedia dan ditetapkan kepada julat langsung t.
Semasa pelaksanaan kod, julat langsung yang berbeza diselesaikan pada masa yang berbeza dan daftar dikeluarkan untuk digunakan dalam peringkat pemprosesan seterusnya. Dalam contoh di bawah, setiap arahan "tambah" dan "darab" memerlukan semua operan dan keputusan berada dalam daftar fizikal. Julat aktif x diberikan kepada daftar hijau dan lengkap sebelum julat langsung daftar biru atau kuning. Selepas x selesai, daftar hijau menjadi tersedia dan diberikan kepada julat langsung t .
Ilustrasi: Contoh peruntukan daftar
Apabila memperuntukkan julat aktif q Apabila , tiada daftar tersedia, jadi saluran peruntukan daftar mesti memutuskan julat aktif mana yang boleh "diusir" daripada daftarnya untuk memberi ruang kepada q. Ini dipanggil masalah "pengusiran lapangan", dan di sinilah kami melatih model untuk menggantikan keputusan heuristik asal. Dalam contoh ini, ia mengusir z daripada daftar kuning dan menetapkannya kepada q dan separuh pertama z.
Kami kini mempertimbangkan separuh bawah yang tidak diperuntukkan daripada julat sebenar z. Kami mempunyai satu lagi konflik, kali ini julat aktif t diusir dan berpecah, separuh pertama t dan bahagian terakhir z berakhir menggunakan daftar hijau. Bahagian tengah Z sepadan dengan arahan q = t * y, di mana z tidak digunakan, jadi ia tidak diperuntukkan kepada mana-mana daftar, dan nilainya disimpan dalam timbunan dari daftar kuning dan kemudian dimuatkan semula ke dalam daftar hijau . Perkara yang sama berlaku dengan t. Ini menambah arahan muatan/simpan tambahan pada kod, mengurangkan prestasi. Matlamat algoritma peruntukan daftar adalah untuk meminimumkan ketidakcekapan ini. Ini digunakan sebagai ganjaran untuk membimbing latihan dasar RL.
Sama seperti strategi saiz sebaris, strategi peruntukan daftar (regalloc-for-Performance) telah dilatih pada pakej perisian yang besar dalam Google dan boleh digeneralisasikan merentas perisian yang berbeza sesaat (QPS) bertambah baik sebanyak 0.3% ~ 1.5% pada set aplikasi pusat data besar dalaman. Penambahbaikan dalam QPS berterusan selama beberapa bulan selepas penggunaan, menunjukkan kebolehgeneralisasian model.
3 Ringkasan
MLGO menggunakan pembelajaran tetulang untuk melatih rangkaian saraf untuk membuat keputusan Ia merupakan strategi pembelajaran mesin yang menggantikan kaedah heuristik yang kompleks. Sebagai rangka kerja gred perindustrian am ia akan lebih mendalam dan digunakan secara meluas dalam lebih banyak persekitaran daripada sekadar menyelaraskan dan mendaftarkan peruntukan.
MLGO boleh dibangunkan kepada: 1) lebih mendalam, seperti menambah lebih banyak ciri dan menggunakan algoritma RL yang lebih baik; 2) lebih luas, boleh digunakan untuk menyelaraskan dan pengagihan semula Lebih banyak heuristik pengoptimuman di luar.
Pengarang bersemangat tentang kemungkinan yang boleh dibawa oleh MLGO ke bidang pengoptimuman pengkompil dan mengharapkan penggunaan selanjutnya dan sumbangan masa depan daripada komuniti penyelidikan.
Atas ialah kandungan terperinci Pengurangan memori sebanyak 3%-7%! Google mencadangkan rangka kerja pembelajaran mesin MLGO untuk pengoptimuman pengkompil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



DeepSeek adalah alat pengambilan maklumat yang kuat. .

DeepSeek adalah enjin carian proprietari yang hanya mencari dalam pangkalan data atau sistem tertentu, lebih cepat dan lebih tepat. Apabila menggunakannya, pengguna dinasihatkan untuk membaca dokumen itu, cuba strategi carian yang berbeza, dapatkan bantuan dan maklum balas mengenai pengalaman pengguna untuk memanfaatkan kelebihan mereka.

Artikel ini memperkenalkan proses pendaftaran versi web Web Open Exchange (GATE.IO) dan aplikasi Perdagangan Gate secara terperinci. Sama ada pendaftaran web atau pendaftaran aplikasi, anda perlu melawat laman web rasmi atau App Store untuk memuat turun aplikasi tulen, kemudian isi nama pengguna, kata laluan, e -mel, nombor telefon bimbit dan maklumat lain, dan lengkap e -mel atau pengesahan telefon bimbit.

Mengapa pautan Bybit Exchange tidak dimuat turun dan dipasang secara langsung? Bybit adalah pertukaran cryptocurrency yang menyediakan perkhidmatan perdagangan kepada pengguna. Aplikasi mudah alih Exchange tidak boleh dimuat turun terus melalui AppStore atau GooglePlay untuk sebab -sebab berikut: 1. Aplikasi pertukaran cryptocurrency sering tidak memenuhi keperluan ini kerana ia melibatkan perkhidmatan kewangan dan memerlukan peraturan dan standard keselamatan tertentu. 2. Undang -undang dan Peraturan Pematuhan di banyak negara, aktiviti yang berkaitan dengan urus niaga cryptocurrency dikawal atau terhad. Untuk mematuhi peraturan ini, aplikasi bybit hanya boleh digunakan melalui laman web rasmi atau saluran yang diberi kuasa lain

Adalah penting untuk memilih saluran rasmi untuk memuat turun aplikasi dan memastikan keselamatan akaun anda.

Artikel ini mencadangkan sepuluh platform perdagangan cryptocurrency teratas yang memberi perhatian kepada, termasuk Binance, OKX, Gate.io, Bitflyer, Kucoin, Bybit, Coinbase Pro, Kraken, BYDFI dan Xbit yang desentralisasi. Platform ini mempunyai kelebihan mereka sendiri dari segi kuantiti mata wang transaksi, jenis urus niaga, keselamatan, pematuhan, dan ciri khas. Memilih platform yang sesuai memerlukan pertimbangan yang komprehensif berdasarkan pengalaman perdagangan anda sendiri, toleransi risiko dan keutamaan pelaburan. Semoga artikel ini membantu anda mencari saman terbaik untuk diri sendiri

Untuk mengakses versi Login Laman Web Binance yang terkini, ikuti langkah mudah ini. Pergi ke laman web rasmi dan klik butang "Login" di sudut kanan atas. Pilih kaedah log masuk anda yang sedia ada. Masukkan nombor mudah alih berdaftar atau e -mel dan kata laluan anda dan pengesahan lengkap (seperti kod pengesahan mudah alih atau Google Authenticator). Selepas pengesahan yang berjaya, anda boleh mengakses Portal Log masuk laman web rasmi Binance.

Panduan ini menyediakan langkah muat turun dan pemasangan terperinci untuk aplikasi Bitget Exchange rasmi, sesuai untuk sistem Android dan iOS. Panduan ini mengintegrasikan maklumat dari pelbagai sumber yang berwibawa, termasuk laman web rasmi, App Store, dan Google Play, dan menekankan pertimbangan semasa muat turun dan pengurusan akaun. Pengguna boleh memuat turun aplikasinya dari saluran rasmi, termasuk App Store, muat turun APK laman web rasmi dan melompat laman web rasmi, dan lengkap pendaftaran, pengesahan identiti dan tetapan keselamatan. Di samping itu, panduan itu merangkumi soalan dan pertimbangan yang sering ditanya, seperti
