Mojo Akhirnya Open Source... Jadi Saya Mengujinya

BBetter Stack
컴퓨터/소프트웨어

스크립트

00:00:00Mojo, bahasa pemrograman tersebut, baru saja mencapai versi 1.0, dan waktunya terasa sedikit aneh.
00:00:05Bahasa ini diluncurkan dengan kompiler tertutup, tujuh hari kemudian mereka menjadikannya sumber terbuka,
00:00:09dan Qualcomm baru saja membeli perusahaan tersebut.
00:00:12Tapi mari lupakan semua itu sejenak.
00:00:14Hal utama dari Mojo adalah kode yang mirip Python tanpa harus meninggalkan C++ atau CUDA demi kecepatan.
00:00:20Jadi mari kita lihat apakah ini benar-benar terbukti.
00:00:27Inti dari Mojo adalah sebuah pertanyaan.
00:00:30Bagaimana jika Anda bisa menulis kode yang terasa dan terlihat persis seperti Python,
00:00:34tetapi menjalankan bagian yang benar-benar penting tanpa meninggalkan C++ atau CUDA?
00:00:39Satu bahasa yang mudah dibaca di seluruh CPU dan GPU.
00:00:42Itulah inti dari semuanya di sini.
00:00:43Dan sekarang setelah Mojo akhirnya mencapai versi 1.0, saya ingin melihat berapa banyak dari ini yang benar-benar nyata.
00:00:49Jadi sebelum kita membahas Qualcomm atau sumber terbuka, mari kita jalankan saja.
00:00:53Jika Anda menikmati alat coding untuk mempercepat alur kerja Anda, pastikan untuk berlangganan.
00:00:57Kami selalu merilis video baru setiap saat.
00:00:59Saya akan melakukannya di komputer saya, tetapi saya tidak akan membuat tutorial Mojo di sini.
00:01:03Jika Anda belum pernah melihatnya sebelumnya, ya, tampilannya memang akan mirip seperti Python,
00:01:07tetapi Anda akan melihat beberapa perbedaan utama.
00:01:10Di sisi kiri adalah Python.
00:01:12Di sisi kanan adalah Mojo.
00:01:13Ini adalah perulangan yang sama, kisi yang sama, batas iterasi yang sama.
00:01:17Saya tidak akan membahas satu pun perhitungan matematika dari ini.
00:01:20Perhatikan kedua perulangan while tersebut.
00:01:21Keduanya melakukan hal yang sama.
00:01:23Kita akan menjalankan Python terlebih dahulu di sini.
00:01:26Baiklah, bagus.
00:01:27Itu berjalan.
00:01:28Programnya tereksekusi.
00:01:28Sekarang, program yang sama dikompilasi dengan Mojo.
00:01:32Sekali lagi, mari kita jalankan.
00:01:35Dan, bum.
00:01:35Itu dia.
00:01:36Sekarang, nilai checksum tidak akan cocok pada digit terakhir.
00:01:39Keduanya berselisih beberapa ratus dari seperempat juta.
00:01:43Python melakukan perkalian, lalu penambahan.
00:01:45Kompilasi Mojo dapat menggabungkan itu menjadi satu instruksi.
00:01:49Beberapa piksel memerlukan iterasi tambahan.
00:01:51Anggap detik di sini sebagai angka yang sebenarnya.
00:01:54Dan ini bukan NumPy.
00:01:55Ini bukan sebuah model.
00:01:56Peningkatan performa bukan hanya pada perulangan CPU yang menjadi lebih cepat.
00:02:00Anda bisa mulai dengan Python karena itu mudah.
00:02:03Kemudian jalurnya beralih ke C++ atau CUDA.
00:02:06Sekarang Anda memiliki dua file dan keduanya mulai terpisah.
00:02:09Jadi, inilah pertanyaan yang diajukan oleh Mojo.
00:02:12Bisakah file yang Anda baca menjadi file yang sama yang berjalan di GPU?
00:02:17Fungsi ini adalah kernel.
00:02:18Setiap utas GPU menambahkan satu pasang angka.
00:02:20Itu saja.
00:02:21Saya tidak beralih ke Metal, Swift, atau CUDA.
00:02:24Kompilasi kodenya.
00:02:26Dan sekarang kodenya sudah berjalan.
00:02:28Jadi, ya.
00:02:30Mojo bisa melakukan sesuatu yang cukup menarik di sini.
00:02:32Dan saya baru saja mengompilasi kernel GPU yang berfungsi di MacBook menggunakan bahasa yang sama seperti saat saya menulis
00:02:38kode biasa, yaitu Python.
00:02:40Kode pembelajaran mesin Anda dimulai dengan Python karena Python mudah digunakan.
00:02:44Kita semua tahu ini.
00:02:45Kemudian, pada akhirnya, performa mulai menjadi hal yang penting.
00:02:48Jadi, bagian-bagian penting ditulis ulang dalam C++ atau CUDA.
00:02:52Sekarang, kita memelihara dua versi dari sistem yang sama.
00:02:55Dan sekali lagi, seiring waktu, hal itu justru menambah kebingungan.
00:02:58Hal utama dari Mojo adalah file yang mudah dibaca dan file yang cepat sebenarnya adalah hal yang sama.
00:03:03Sekarang, orang di balik semua ini adalah Chris Lattner.
00:03:06Ia membangun LLVM, lalu Clang, dan kemudian Swift.
00:03:10Tetapi membuat kernel GPU berjalan adalah satu hal.
00:03:14Menyebut bahasanya sebagai versi 1.0, itu adalah hal yang sedikit berbeda.
00:03:18Jadi, apa arti sebenarnya dari versi 1.0 di sini?
00:03:21Bukan berarti Mojo sudah selesai.
00:03:23Ini kurang lebih berarti stabilitas.
00:03:25Ada janji bahwa kode yang Anda tulis hari ini tidak akan rusak.
00:03:29Itulah arti dari rilis besar seperti ini.
00:03:30Tetapi kemudian Anda menemui bagian aneh yang pertama.
00:03:32Mojo mencapai versi 1.1 bahkan sebelum kompilernya bersumber terbuka.
00:03:37Pustaka standarnya sudah dibuka pada bulan Maret 2024.
00:03:40Kernel maks dibuka pada tahun 2025.
00:03:43Tetapi kompilernya, hal yang benar-benar melakukan kompilasi, tetap bersifat proprietari hingga 18 Agustus tahun ini.
00:03:50Apache 2.0, dan itu penting karena hanya tujuh hari sebelumnya ketika Mojo 1.0 dirilis, kompiler tersebut masih tertutup.
00:03:57Dan itu menjawab salah satu kritik terbesar yang diterima Mojo selama tiga tahun berturut-turut.
00:04:02Anda dulu bisa berkata, tentu saja, tetapi kompilernya tertutup.
00:04:05Kita tidak bisa benar-benar mengatakan itu lagi, yang terdengar seperti, baiklah, ini bergerak ke arah yang benar.
00:04:10Mungkin memang begitu.
00:04:10Sampai Anda melihat apa yang terjadi tiga minggu sebelumnya.
00:04:14Akuisisi Qualcomm selesai pada 29 Juli.
00:04:16Mojo 1.0 dirilis pada 11 Agustus.
00:04:19Kompilernya dibuka pada 18 Agustus.
00:04:21Jadi tonggak keterbukaan terbesar dalam sejarah Mojo terjadi kurang dari tiga minggu setelah Modular berhenti menjadi perusahaan independen.
00:04:29Dan itu langsung menciptakan dua cara pandang yang sangat berbeda.
00:04:33Pertama adalah Qualcomm membeli Modular karena mereka ingin Mojo ada di mana-mana.
00:04:37Sepertinya tidak.
00:04:37Atau Qualcomm membeli Modular, dan pada akhirnya seluruh hal ini diserap ke dalam perusahaan yang jauh lebih besar.
00:04:44Qualcomm membuat cip.
00:04:45Bahasa yang dikompilasi dengan baik untuk cip menjadi jauh lebih bernilai.
00:04:49Kita benar-benar dapat menggunakannya secara bebas.
00:04:50Jadi, langkah sumber terbuka itu masuk akal.
00:04:53Tetapi apakah Mojo berhasil atau tidak mungkin bukan ditentukan oleh Qualcomm.
00:04:57Hal itu akan ditentukan oleh apakah bahasanya benar-benar cukup bagus untuk membenarkan perpindahan sejak awal.
00:05:02Tetapi sekali lagi, di sinilah semua itu mulai menjadi rumit.
00:05:05Mojo memiliki masalah tolok ukur.
00:05:07Kembali pada tahun 2023, angka besarnya adalah Mojo bisa 68.000 kali lebih cepat daripada Python.
00:05:13Itu luar biasa.
00:05:14Ada juga unggahan yang masih ada yang mengklaim Mojo 50% lebih cepat daripada Rust pada penguraian DNA.
00:05:19Tolok ukur itu dibedah habis.
00:05:21Mereka menunjukkan bahwa tolok ukur tersebut tidak mengukur apa yang diklaimnya.
00:05:25Dan Anda masih akan melihat angka 35.000 kali beredar di luar sana.
00:05:29Itu berasal dari perkalian matriks.
00:05:31Tetapi yang mereka bandingkan adalah, yah,
00:05:34di satu sisi, implementasi Mojo yang sepenuhnya bervektor, diparalelkan, dan di-tiling.
00:05:40Di sisi lain, perulangan rangkap tiga Python murni.
00:05:44Ya, perulangan rangkap tiga.
00:05:45Bukan NumPy, hanya perulangan bersarang yang tidak akan pernah digunakan oleh siapa pun di dunia ini.
00:05:49Jadi saya tidak terlalu peduli dengan klaim 35.000 kali lebih cepat.
00:05:52Saya ingin angka dari mesin ini.
00:05:54Saya menggunakan M4 Pro dibandingkan dengan Python murni.
00:05:57Dibandingkan dengan Python murni, 26 setengah kali lebih cepat.
00:06:00Dibandingkan dengan NumPy, per operasi, mendekati sekitar dua kali lebih cepat.
00:06:05Sekarang, jelas angka 26 bukanlah 68.000.
00:06:08Tetapi 26 kali tetaplah angka yang bagus karena NumPy sudah menggunakan C di bagian dasarnya.
00:06:14Pada titik itu, Anda sebenarnya tidak mengalahkan Python.
00:06:16Anda mengalahkan C dengan perilaku memori yang lebih baik.
00:06:19Dan itulah hal yang membuat frustrasi tentang Mojo.
00:06:21Namun performa sebenarnya bukanlah alasan terbesar mengapa saya ragu menggunakan Mojo hari ini.
00:06:25Saya sudah mencoba menggunakannya sebelumnya.
00:06:27Saya menjalankannya di sini hari ini.
00:06:28Hal yang utama adalah kestabilan.
00:06:30Sekarang, seberapa stabilkah ini?
00:06:32Karena Mojo 1.0 dirilis dengan 41 peringatan API tidak stabil, termasuk int, print, dan len, yang merupakan fungsi bawaan inti.
00:06:40Fitur-fitur itu ditandai tidak stabil di dalam rilis yang disebut-sebut sebagai rilis stabilitas.
00:06:45Dan pada hari yang sama Mojo berjanji kode Anda tidak akan rusak, penghapusan kata kunci FN merusak sekitar 39 ekosistem paket.
00:06:52Sekarang, kata kunci FN yang sangat penting dalam cara kerja Mojo telah dihapus sepenuhnya.
00:06:58Tidak ada proses FC.
00:06:59Dan meskipun kompiler sekarang sudah bersumber terbuka, mereka belum menerima kontribusi untuk itu.
00:07:04Jadi Mojo 1.0 sudah stabil, sepertinya begitu.
00:07:07Tetapi mungkin tidak sesetabil seperti yang mereka katakan.
00:07:09Yang membawa kita pada satu-satunya pertanyaan yang benar-benar penting.
00:07:12Haruskah Anda menggunakannya?
00:07:13Sekarang, jika Anda menulis kernel GPU, CUDA, Triton, dunia semacam itu, saya pikir Mojo benar-benar layak dicoba selama sehari atau dua hari.
00:07:21Satu bahasa untuk CPU dan GPU, dan saya berhasil mengompilasi kernel GPU yang berfungsi di laptop.
00:07:27Tidak banyak hal lain yang dapat melakukan itu.
00:07:29Tetapi bahasa ini masih memiliki banyak ruang untuk berkembang.
00:07:31Jadi saya tidak akan memprioritaskan ini sama sekali untuk saat ini.
00:07:35Tiga tahun lalu, argumen menentang Mojo sangatlah sederhana.
00:07:38Bahasa baru yang keren, tetapi siapa yang akan menggunakannya?
00:07:40Itu adalah bahasa tertutup dari sebuah perusahaan rintisan yang meminta para pengembang mempertaruhkan segalanya pada hal ini.
00:07:44Hari ini, kompilernya menggunakan lisensi Apache 2.0.
00:07:47Bahasanya sudah berada di versi 1.0.
00:07:48Dan perusahaan rintisan tersebut kini menjadi bagian dari Qualcomm.
00:07:51Saya Josh dari BetterStack.
00:07:53Jika Anda menikmati kiat dan trik coding seperti ini, pastikan untuk berlangganan.
00:07:56Sampai jumpa di video lainnya.

핵심 요약

Mojo mencapai versi 1.0 dan beralih ke sumber terbuka Apache 2.0 setelah diakuisisi Qualcomm, menawarkan performa CPU dan GPU berbasis sintaks Python meski masih menghadapi tantangan stabilitas API.

하이라이트

  • Mojo mencapai versi 1.0 dengan janji stabilitas kode dasar.

  • Perusahaan di balik Mojo diakuisisi oleh Qualcomm pada 29 Juli.

  • Kompilator Mojo resmi menggunakan lisensi sumber terbuka Apache 2.0.

  • Pengujian menunjukkan Mojo 26,5 kali lebih cepat daripada Python murni pada perangkat M4 Pro.

  • Rilis versi 1.0 masih memuat 41 peringatan API tidak stabil dan penghapusan kata kunci FN.

타임라인

Tujuan dan Perbandingan Performa Dasar Mojo

  • Mojo menggabungkan kemudahan sintaks Python dengan kecepatan C++ dan CUDA.
  • Komparasi perulangan menunjukkan perbedaan checksum tipis akibat penggabungan instruksi.
  • Kompilasi kernel GPU dapat langsung dijalankan di perangkat laptop.

Bahasa pemrograman ini dirancang untuk mengatasi masalah pemisahan kode antara Python dan C++ atau CUDA. Eksekusi perulangan menunjukkan bahwa kompilasi Mojo mampu melakukan optimasi instruksi secara langsung. Pengembang dapat menulis kernel GPU menggunakan sintaks yang mirip dengan kode Python biasa tanpa beralih ke bahasa lain.

Rilis Versi 1.0 dan Akuisisi Qualcomm

  • Versi 1.0 menjamin stabilitas agar kode tidak mudah rusak.
  • Akuisisi Qualcomm selesai pada 29 Juli mendahului rilis versi 1.0.
  • Kompilator beralih ke lisensi sumber terbuka Apache 2.0.

Chris Lattner memimpin pengembangan bahasa ini hingga mencapai versi 1.0. Perubahan status lisensi menjadi sumber terbuka terjadi tidak lama setelah perusahaan pengembangnya bergabung dengan Qualcomm. Langkah ini merespons kritik terkait sifat tertutup kompiler yang sebelumnya dipertanyakan oleh komunitas pengembang.

Masalah Tolok Ukur dan Stabilitas API

  • Klaim kecepatan ekstrem sebelumnya berasal dari perbandingan perulangan rangkap tiga Python murni.
  • Pengujian pada M4 Pro mencatat kecepatan 26,5 kali lipat dibanding Python murni.
  • Rilis versi 1.0 masih menyertakan puluhan peringatan API tidak stabil dan penghapusan kata kunci FN.

Angka performa yang fantastis sering kali membandingkan implementasi optimal Mojo dengan perulangan bersarang Python yang tidak efisien. Pengujian nyata menunjukkan peningkatan performa yang signifikan tetapi tidak setinggi klaim awal. Selain itu, perubahan kata kunci inti dan keberadaan fungsi bawaan yang belum stabil menunjukkan bahwa bahasa ini masih memerlukan pengembangan lebih lanjut.

커뮤니티 글

아직 글이 없습니다. 이 영상에 대한 첫 번째 글을 작성해 보세요!

이 영상에 대해 글쓰기