LLVM Creator Mengembangkan Bahasa Pemrograman Mojo Baru

Chris Lattner, pendiri dan kepala arsitek LLVM dan pencipta bahasa pemrograman Swift, dan Tim Davis, mantan kepala proyek AI Google seperti Tensorflow dan JAX, memperkenalkan bahasa pemrograman baru, Mojo, yang menggabungkan kemudahan penggunaan untuk pengembangan penelitian dan pembuatan prototipe cepat dengan potensi untuk memformulasikan produk akhir berkinerja tinggi. Yang pertama dicapai melalui penggunaan sintaksis bahasa Python yang familiar, dan yang kedua karena kemampuan untuk mengkompilasi ke dalam kode mesin, mekanisme untuk pengoperasian memori yang aman, dan penggunaan alat untuk akselerasi perhitungan perangkat keras.

Proyek ini difokuskan pada penggunaan pengembangan di bidang pembelajaran mesin, tetapi disajikan sebagai bahasa tujuan umum yang memperluas kemampuan Python dengan alat pemrograman sistem dan cocok untuk berbagai tugas. Misalnya, bahasa ini dapat diterapkan pada bidang-bidang seperti komputasi kinerja tinggi, pemrosesan data, dan transformasi. Fitur menarik dari Mojo adalah kemampuan untuk menentukan karakter emoji "🔥" sebagai ekstensi untuk file kode (misalnya, "helloworld.🔥"), selain ekstensi teks ".mojo".

Saat ini, bahasa tersebut sedang dalam tahap pengembangan intensif dan hanya antarmuka online yang ditawarkan untuk pengujian. Rakitan terpisah untuk berjalan pada sistem lokal dijanjikan akan dipublikasikan nanti, setelah menerima masukan tentang pengoperasian lingkungan web interaktif. Kode sumber untuk compiler, JIT dan pengembangan lain yang terkait dengan proyek ini rencananya akan dibuka setelah arsitektur internal selesai (model untuk mengembangkan prototipe kerja di balik pintu tertutup mengingatkan pada tahap awal pengembangan LLVM, Clang dan Cepat). Karena sintaks Mojo didasarkan pada bahasa Python, dan sistem tipenya dekat dengan C/C++, di masa depan mereka berencana untuk mengembangkan alat untuk menyederhanakan terjemahan proyek yang ada yang ditulis dalam C/C++ dan Python ke Mojo, serta untuk mengembangkan proyek hybrid yang menggabungkan kode Python dan Mojo.

Proyek ini dirancang untuk melibatkan sumber daya perangkat keras yang tersedia dari sistem heterogen dalam melakukan perhitungan. Misalnya, GPU, akselerator pembelajaran mesin khusus, dan vektor instruksi prosesor (SIMD) dapat digunakan untuk menjalankan aplikasi Mojo dan memparalelkan komputasi. Alasan yang diberikan untuk mengembangkan subset terpisah dari bahasa Python daripada bergabung dengan pekerjaan pengoptimalan CPython yang ada mencakup fokus pada kompilasi, integrasi kemampuan pemrograman sistem, dan penggunaan arsitektur internal yang berbeda secara fundamental yang memungkinkan kode dijalankan pada GPU dan berbagai macam hal. akselerator perangkat keras. Namun, pengembang Mojo bermaksud untuk tetap kompatibel dengan CPython sebisa mungkin.

Mojo dapat digunakan baik dalam mode interpretasi menggunakan JIT, dan untuk kompilasi menjadi file yang dapat dieksekusi (AOT, sebelumnya). Kompiler memiliki teknologi modern bawaan untuk pengoptimalan otomatis, caching, dan kompilasi terdistribusi. Teks sumber dalam bahasa Mojo diubah menjadi kode perantara tingkat rendah MLIR (Multi-Level Intermediate Representation), yang dikembangkan oleh proyek LLVM dan memberikan kemampuan tambahan untuk mengoptimalkan pemrosesan grafik aliran data. Kompiler memungkinkan Anda menggunakan berbagai backend yang mendukung MLIR untuk menghasilkan kode mesin.

Menggunakan mekanisme perangkat keras tambahan untuk mempercepat penghitungan memungkinkan pencapaian kinerja yang lebih unggul dari aplikasi C/C++ selama penghitungan intensif. Misalnya, saat menguji aplikasi untuk menghasilkan set Mandelbrot, aplikasi yang dikompilasi dalam bahasa Mojo saat dijalankan di AWS cloud (r7iz.metal-16xl) ternyata 6 kali lebih cepat dibandingkan implementasi di C++ (0.03 detik vs. .0.20 detik), dan juga 35 ribu kali lebih cepat dibandingkan aplikasi Python saat menggunakan standar CPython 3.10.9 (0.03 detik vs. 1027 detik) dan 1500 kali lebih cepat saat menggunakan PYPY (0.03 detik vs. 46.1 detik) .

Saat menilai kinerja di bidang pemecahan masalah pembelajaran mesin, Mesin Inferensi Modular tumpukan AI, yang ditulis dalam bahasa Mojo, dibandingkan dengan solusi berdasarkan pustaka TensorFlow, 3 kali lebih cepat saat memproses model bahasa pada sistem dengan prosesor Intel, 6.4 kali lebih cepat saat memproses eksekusi model pembuatan rekomendasi dan 2.1 kali lebih cepat saat bekerja dengan model untuk memproses informasi visual. Saat menggunakan prosesor AMD, keuntungan saat menggunakan Mojo adalah 3.2, 5, dan 2.2 kali lipat, dan saat menggunakan prosesor ARM - masing-masing 5.3, 7.5, dan 1.7 kali. Solusi berbasis PyTorch tertinggal 1.4, 1.1, dan 1.5 kali dari Mojo pada CPU Intel, 2.1, 1.2, dan 1.5 kali pada CPU AMD, serta 4, 4.3, dan 1.3 kali pada CPU ARM.

LLVM Creator Mengembangkan Bahasa Pemrograman Mojo Baru

Bahasa ini mendukung pengetikan statis dan fitur penyimpanan memori tingkat rendah yang mengingatkan pada Rust, seperti pelacakan referensi seumur hidup dan pemeriksa pinjaman. Selain fasilitas untuk pekerjaan aman dengan pointer, bahasa ini juga menyediakan fitur untuk pekerjaan tingkat rendah, misalnya, akses langsung ke memori dalam mode tidak aman menggunakan tipe Pointer, memanggil instruksi SIMD individual, atau mengakses ekstensi perangkat keras seperti TensorCores dan AMX .

LLVM Creator Mengembangkan Bahasa Pemrograman Mojo Baru

Untuk menyederhanakan pemisahan kode Python klasik dan yang dioptimalkan untuk fungsi dengan definisi tipe eksplisit untuk semua variabel, diusulkan untuk menggunakan kata kunci terpisah “fn” daripada “def”. Demikian pula untuk kelas, jika Anda perlu mengemas data secara statis ke dalam memori selama kompilasi (seperti di C), Anda dapat menggunakan tipe “struct” alih-alih “kelas”. Dimungkinkan juga untuk mengimpor modul dalam bahasa C/C++, misalnya, untuk mengimpor fungsi cos dari perpustakaan matematika, Anda dapat menentukan “from “math.h” import cos”.

Sumber: opennet.ru

Tambah komentar