- Python mendominasi AI kerana ekosistemnya, tetapi GIL, penaipan dinamik dan penterjemah menghalang prestasi.
- Mojo, berdasarkan MLIR, menawarkan kompilasi, selari sebenar dan keserasian dengan perpustakaan Python.
- Modular menyatukan masa jalan untuk PyTorch dan TensorFlow, dengan pecutan dan pengkuantitian bersepadu.
- Percepatan yang besar (Mandelbrot, SIMD) adalah mungkin; cabarannya adalah untuk membawa kelebihan itu kepada pengeluaran dan pelbagai perkakasan.

Perdebatan prestasi Mojo vs. Python sedang hangat kerana ia menyentuh inti pati AI moden: kelajuan sebenar, kemudahan penggunaan dan sokongan perkakasan. Dalam beberapa tahun kebelakangan ini, angka pecutan telah muncul yang, di atas kertas, kelihatan seperti fiksyen sains, tetapi ia disokong oleh perubahan besar dalam pengkompil dan cara kod dilaksanakan pada CPU, GPU dan pemecut AI.
Dalam artikel ini, kami telah menyusun gambaran keseluruhan komprehensif tentang semua yang diterbitkan merentasi pelbagai sumber tentang Python, batasan prestasinya dan pendekatan Mojo , bahasa yang dikuasakan oleh Modular dan dipelopori oleh Chris Lattner (LLVM, Clang, Swift). Kami juga menerangkan MLIR, sebab-sebab di sebalik kesesakan GIL, perbezaan antara CUDA dan MPS, keserasian dengan ekosistem Python dan cabaran penggunaan yang masih menanti.
Python menguasai AI, tetapi seni binanya tidak membantu prestasi
Tidak hairanlah Python merupakan bahasa universal AI : sintaks mudah, beribu-ribu pustaka, banyak tutorial dan komuniti yang besar. Walau bagaimanapun, populariti ini datang dengan realiti yang tidak selesa: Python ditafsirkan , ditaip secara dinamik dan tertakluk kepada Kunci Jurubahasa Global (GIL) , yang mengehadkan pelaksanaan serentak kod Python tulen kepada satu thread.
Reka bentuk ini membolehkan pembangunan yang lebih pantas, tetapi ia menjejaskan kelajuan dan kecekapan memori berbanding bahasa yang dikompilasi seperti C/C++, Swift atau Rust. Dalam beban kerja ML/DL, di mana setiap milisaat dikira dan perkakasan sangat pantas, penalti ini sangat ketara.
Untuk mengimbanginya, ekosistem telah menggunakan penyelesaian: NumPy (dengan bahagian dalam C dan Fortran), perpustakaan yang mewakilkan kepada kod natif dan sambungan C/C++ untuk operasi kritikal. Ia berfungsi, ya, tetapi ia memperkenalkan lapisan, kebergantungan dan raksasa versi, rangka kerja dan hujung belakang Frankenstein yang boleh menjadi sukar untuk diselenggara dalam pengeluaran.
Tambahan pula, paralelisme dalam Python sering bergantung pada pemprosesan berbilang atau pada pustaka yang melepaskan GIL dalam bahagian natif. Hasilnya ialah, melainkan beban kerja diwakilkan dengan baik kepada C/C++ atau GPU, prestasi mentah Python menjadi hambatan.
NumPy dan "tampalan" lain: penting, tetapi dengan pengehadan
NumPy ialah contoh klasik: kebanyakan operasi kritikalnya ditulis dalam C atau Fortran , yang jauh lebih pantas daripada Python tulen. Walau bagaimanapun, apabila melibatkan paralelisme halus, penskalaan kepada berbilang teras atau penyepaduan dengan pemecut baharu, batasan Python muncul semula , terutamanya jika aliran kawalan kerap kembali kepada penterjemah.
Pendekatan berlapis ini (Python → sambungan C/C++ → pemacu/perkakasan) berkesan, tetapi kompleks untuk dinyahpepijat dan digunakan . Dalam AI pada skala besar, dengan latihan, inferens dan saluran paip pasca pemprosesan, kerumitan operasi ini hampir sama beratnya dengan FLOPS yang tersedia.
CUDA, MPS dan masalah mudah alih
Pecutan CUDA (NVIDIA) merupakan penyelamat, tetapi juga sangkar berlapis emas: sesetengah model dan pengoptimuman bergantung sepenuhnya pada susunan NVIDIA. Jika anda cuba menjalankan kod yang sama pada Apple Silicon dengan Metal Performance Shaders (MPS) atau pada GPU AMD, anda mungkin menghadapi arahan yang tidak disokong atau laluan pengiraan yang tidak lengkap.
Perbandingan yang paling biasa adalah jelas: dengan CUDA anda memandu "Ferrari," manakala MPS boleh terasa lebih terhad untuk beban kerja tertentu. Walaupun begitu, industri ini sedang berusaha ke arah piawaian dan kebolehgunaan kerana tiada siapa yang mahu mengikat perniagaan mereka kepada satu vendor perkakasan melainkan jika benar-benar perlu.
MLIR: jambatan era baru pengkomputeran yang diperlukan
Untuk memahami apa yang dicadangkan oleh Mojo, kita perlu membincangkan tentang MLIR (Perwakilan Pertengahan Berbilang Aras) , sebuah projek yang lahir dalam ekosistem LLVM yang menambah perwakilan perantaraan yang direka untuk prestasi tinggi dan pembelajaran mesin . Tidak seperti saluran paip LLVM klasik, MLIR mengendalikan graf data, vektorisasi, teselasi, penyisipan DMA dan pengurusan cache eksplisit.
Secara ringkasnya: MLIR membolehkan transformasi kod peringkat tinggi kepada pelaksanaan yang sangat hampir dengan perkakasan sasaran (CPU, GPU, TPU, NPU, FPGA, dll.), mengekstrak paralelisme dan menggunakan pengoptimuman HPC yang tidak diliputi oleh pengkompil klasik dengan baik untuk domain ini.
Apa sebenarnya Mojo?
Mojo ialah bahasa yang menampilkan dirinya sebagai superset Python : ia mengekalkan sintaks yang biasa, boleh memanfaatkan pustaka yang sama dan mengintegrasikan model kompilasi moden yang disokong oleh MLIR. Ia dilancarkan pada tahun 2023, pada mulanya sebagai taman permainan web yang boleh diakses atas permintaan dan kemudian dengan pelaksanaan setempat pada GNU/Linux dan macOS. Pada Februari 2025, pustaka piawainya telah dijadikan sumber terbuka, walaupun pengkompil masih ditutup sehingga hari ini.
Matlamatnya bercita-cita tinggi: kesederhanaan Python dengan prestasi C/C++ , serta keselamatan dan kemudahan pengguna yang telah kita lihat dalam bahasa seperti Rust atau Swift. Dalam erti kata lain, menulis pada tahap tinggi dan menghasilkan binari yang kecil, pantas dan mudah digunakan.
Kekunci reka bentuk: menaip, ingatan, struktur dan fungsi
Antara ciri yang paling menarik ialah penaipan yang kuat (dan penaipan statik apabila diperlukan), penggunaan let/var untuk mengisytiharkan elemen yang tidak berubah dan boleh berubah, dan sokongan untuk struct dengan reka bentuk yang ditakrifkan kompilasi, yang memudahkan penjanaan kod mesin yang optimum.
Mojo membolehkan anda mengisytiharkan fungsi dengan `fn` sebagai tambahan kepada `def` ; secara amnya, `fn` cenderung untuk membayangkan lebih banyak sekatan dan, oleh itu, potensi pengoptimuman yang lebih baik untuk pengkompil. Ia juga mempunyai "abstraksi kos sifar" dan keupayaan penalaan kendiri , di mana pengkompil memilih parameter yang cekap untuk platform sasaran.
Tanpa GIL dan dengan selari sebenar
Tidak seperti Python, Mojo tidak bergantung pada GIL . Runtime dan pengkompil direka bentuk untuk memanfaatkan thread, vektor dan pemecut tanpa pembangun perlu bergelut dengan keserentakan asas penterjemah. Dalam praktiknya, ini bermakna tugas yang dalam Python "bertemu" dengan GIL benar-benar boleh dijalankan secara selari.
Perkara ini adalah kunci dalam pengkomputeran intensif: jika anda boleh memecahkan masalah kepada subtugasan dan menjalankannya secara serentak dengan cara asli, lonjakan prestasi bukanlah secara tambahan, ia adalah perubahan liga.
Prestasi: daripada Mandelbrot kepada versi vektor
Untuk mengukur penambahbaikan, ujian berulang ialah set Mandelbrot , penjana fraktal intensif pengiraan yang sesuai untuk selari. Dengan Python tulen, masa melebihi 1000 saat telah dilaporkan , manakala pelaksanaan dalam Mojo telah menurun kepada sekitar 0,03 saat selepas pengoptimuman berturut-turut.
Perkembangan jenis berikut telah didokumenkan: versi Python naif → NumPy → versi Mojo naif → Mojo vektor dengan SIMD . Dengan saluran penambahbaikan ini, peningkatan kelajuan yang sangat besar telah diperhatikan, antara 35.000x hingga angka yang dilaporkan sebanyak 68.000x dalam senario tertentu. Ini adalah angka yang menakjubkan yang, seperti biasa, bergantung pada algoritma, perkakasan dan penjagaan yang anda berikan untuk pengoptimuman.
Penyusunan dan penggunaan mudah
Mojo mengikuti falsafah bina-ke-binari : anda membina, anda mendapat fail boleh laku dan anda mengedarkannya . Jika anda datang dari Python, ini dapat mengelakkan masalah persekitaran maya , roda dan kombinasi versi pustaka yang tidak selalunya berfungsi dengan baik bersama.
Untuk memberi anda gambaran, "Hello World" boleh dikompilasi dan dijalankan dengan mojo hello.mojo yang ringkas . Tambahan pula, fail-fail tersebut mempunyai sambungan .mojo (emoji api juga telah menjadi popular sebagai kenyitan mata), menjadikannya lebih mudah dikenal pasti dalam projek hibrid.
Keserasian Python dan ekosistem
Sebahagian daripada daya tarikan Mojo ialah ia tidak memaksa anda untuk membuang apa yang telah anda miliki : keserasiannya dengan ekosistem Python bermakna anda boleh terus menggunakan pustaka seperti NumPy, Pandas atau Matplotlib, sambil menerima pakai struktur dan jenis yang lebih cekap apabila sesuai dengan anda.
Dalam praktiknya, strategi "Python++" ini melancarkan lengkung penerimaan: anda mengekalkan pangkalan kod anda , memindahkan bahagian panas ke Mojo, dan memanfaatkan pengkompil dan MLIR untuk meningkatkan prestasi tanpa meninggalkan sintaks yang anda tahu.
Modular: masa jalan untuk menyatukan PyTorch dan TensorFlow
Selain bahasa tersebut, Modular telah memperkenalkan rangka kerja/masa jalan universal yang mampu menjalankan model PyTorch dan TensorFlow tanpa memerlukan pemasangan kedua-dua tindanan. Menurut sumber-sumber ini, seni binanya boleh mempercepatkan pelaksanaan TensorFlow sehingga 3x dan PyTorch sehingga 2,5x , di samping mengintegrasikan alat pengkuantuman , sekali gus menyumbang kepada kebolehskalaan AI.
Visinya adalah untuk mengelakkan neraka "tiga lapisan" (Python → C/C++ → perkakasan khusus) dengan lapisan pengaturcaraan tunggal dan bahagian belakang yang berkomunikasi dengan sebarang perkakasan dan memanfaatkan sepenuhnya setiap platform tanpa menulis semula model anda setiap hari.
Kuantiti: mengurangkan saiz tanpa mengorbankan ketepatan
Mengkuantitikan model adalah seperti MP3 untuk rangkaian saraf: anda mengurangkan ketepatan dalam pemberat/lapisan tertentu dan, sebagai balasannya, anda mengurangkan saiz dan mempercepatkan inferens. Kehilangan ketepatan biasanya kecil (contohnya, meningkat daripada 94% kepada 91% dalam pengelas) dan peningkatan dalam penggunaan dan kelajuan lebih daripada sekadar mengimbanginya.
Pendekatan ini adalah kunci untuk membawa model ke peranti tempatan sambil menghormati privasi. Malah, susunan seperti Core ML dan pemecut seperti NPU Apple (melalui MPS/Accelerate) sedang berusaha ke arah model termampat yang sesuai dan berjalan lancar pada iPhone atau Mac tanpa menghantar data ke awan.
Daripada Swift untuk TensorFlow ke Mojo: Perjalanan Lattner
Laluan ke tahap ini bukanlah satu kebetulan. Selepas berkhidmat di Apple (LLVM, Clang, Swift ), Chris Lattner pernah bekerja di Tesla dan Google Brain, di mana beliau menerajui Swift untuk TensorFlow . Percubaan untuk menggabungkan bahasa moden dengan pembelajaran mesin telah ditangguhkan, tetapi ia menghasilkan pengajaran yang kini telah terpahat dalam MLIR dan reka bentuk Mojo.
Sebelum Modular, Lattner juga berkecimpung dalam dunia RISC-V (SciFive), yang sesuai dengan idea bahawa masa depan AI melibatkan pelbagai jenis perkakasan dan kita memerlukan pengkompil dan masa jalan yang mampu menyesuaikan diri dengan cepat kepada kesemuanya.
Status projek, sokongan dan penerimaan
Mojo dilancarkan pada tahun 2023, dan walaupun bahasa ini berkembang pesat, ia masih dalam fasa kematangan . Pustaka standardnya dibuka pada Februari 2025, tetapi pengkompilnya masih ditutup . Dari segi populariti (indeks TIOBE), Mojo berada di bawah 50 teratas, yang dijangkakan untuk bahasa yang baru berusia dua tahun.
Dalam bahagian "siapa siapa", sokongan daripada Amazon, AMD, NVIDIA dan Inworld telah disebut . Walaupun begitu, untuk bersaing dengan Python, ia memerlukan komuniti, dokumentasi, pakej dan kisah kejayaan pengeluaran yang boleh menjadi penanda aras untuk yang lain.
Cabaran: komuniti, refleksi, dan ciri dinamik
Selain prestasi, Python menang dari segi komuniti, sumber dan ekosistem . Mojo perlu merapatkan jurang dalam bidang di mana Python cemerlang, seperti mekanisme pantulan tertentu atau corak dinamik yang digunakan secara meluas. Ia juga perlu terus memperhalusi kemudahan penggunanya untuk menjadikan peralihan daripada Python lancar sepenuhnya.
Dari sudut teknikal, janji " pengkompilasi untuk semuanya " kedengaran hebat, tetapi setiap bahagian belakang (CUDA, ROCm, MPS, TPU, FPGA…) mempunyai nuansa tersendiri. Mengekalkan fungsi dan prestasi yang konsisten merentasi kesemuanya semasa runtime adalah satu maraton, bukan pecutan.
Mojo dan GPU: Melangkaui NVIDIA
Salah satu kekuatan Mojo dan MLIR ialah keupayaan mereka untuk menyasarkan GPU daripada NVIDIA dan AMD , bukan sahaja ekosistem CUDA. Jika sokongan ini kekal terkini dan berdaya saing, banyak syarikat akan melihat kelebihan strategik kerana tidak terikat dengan satu vendor sahaja.
Pada masa yang sama, dunia Apple (dengan MPS ) dan pemecut khusus lain (NPU, FPGA ) menuntut laluan dan pustaka kompilasi yang sesuai. Janji "tulis sekali, jalankan pantas ke mana-mana" adalah bercita-cita tinggi, dan jika ditunaikan dengan betul, ia akan menjadi pengubah permainan.
Perbahasan: Bahasa baharu atau “Python++”?
Dalam forum teknikal, terdapat perdebatan tentang sama ada Mojo ialah "satu lagi varian Python" atau bahasa baharu yang hanya berkongsi sintaks. Untuk kegunaan harian, perkara penting ialah anda boleh menggunakan semula kod dan pustaka anda sambil menulis komponen prestasi dengan jenis dan struktur yang lebih kaya pada masa yang sama.
Dualiti ini, digabungkan dengan pengkompil MLIR moden, adalah apa yang membolehkan "hello world" menjadi mesra pengguna di samping membolehkan kernel pengkomputeran anda mendekati atau mengatasi prestasi C/C++ dalam senario vektor.
Sumber, komuniti dan pembelajaran
Jika anda baru bermula dalam AI, komuniti pembelajaran terbuka sangat berharga. Ruang ini, yang ditujukan kepada pelajar dan guru, menawarkan peluang untuk bertanya soalan, berkongsi sumber dan maju daripada asas kepada teknik lanjutan. Ia merupakan tempat yang hebat untuk berlatih, membandingkan pendekatan dan mendapatkan jawapan dunia sebenar.
Ekosistem jangkauan juga membantu: daripada ringkasan pelancaran Mojo oleh pakar seperti Jeremy Howard, kepada kursus Python percuma di platform video yang membolehkan anda mengekod tanpa sebarang kos. Lebih kukuh komuniti di sekitar Mojo, lebih mudah bagi syarikat dan pembangun untuk menerima pakainya.
Nota praktikal dan butiran menarik
Butiran kecil tentang kualiti hidup juga menambah: fail .mojo , sokongan untuk fn / def , pelaksanaan langsung dengan arahan mojo atau niat eksplisit untuk menawarkan binari yang mudah diedarkan . Ia adalah perkara biasa, tetapi apabila anda menskalakan projek, ia membuat semua perbezaan.
Pada masa yang sama, pengaruh Rust dan Swift terhadap reka bentuk jenis, keselamatan memori dan abstraksi kos sifar mesti diakui . Ini bukanlah satu kebetulan: Lattner berasal daripada mencipta Swift dan menguji LLVM/Clang; warisan ini jelas dalam reka bentuk pengkompil.
Dari makmal ke pengeluaran: apa yang anda boleh jangkakan
Jika anda ingin mencuba Mojo hari ini, adalah wajar untuk menggunakannya dalam modul berimpak tinggi (kernel pengkomputeran, transformasi intensif atau gelung ketat). Kekalkan orkestrasi dan perkakasan anda dalam Python dan pindahkan komponen permintaan tinggi ke Mojo untuk mengukur manfaat sebenar dalam metrik anda.
Menurut laporan yang dianalisis, tugasan jenis Mandelbrot atau kernel SIMD telah mencapai peningkatan kelajuan yang sangat besar . Dalam saluran paip sebenar, dengan I/O, prapemprosesan dan pustaka pihak ketiga, anda akan melihat peningkatan yang ketara, walaupun lebih sederhana dan bergantung pada kesesakan yang dominan.
Lapisan bersatu: selamat tinggal kepada "Frankenstack"
Satu janji utama tindanan Modular ialah penyatuan lapisan: ia menawarkan satu bahasa untuk ketiga-tiga lapisan dan masa jalan yang boleh digunakan bersama perkakasan berbanding Python + C/C++ + hujung belakang khusus yang berselerak . Kurang "gam", kurang ketidakserasian dan kurang penyelenggaraan pertahanan.
Jika visi ini berlaku, proses latihan dan inferens boleh beralih antara NVIDIA, AMD, Apple Silicon, TPU atau NPU tanpa memerlukan pengaturcaraan semula projek yang lengkap. Dan itu, lebih daripada sekadar perincian teknikal, adalah strategi perniagaan : kebebasan untuk memilih perkakasan berdasarkan kos, ketersediaan atau kecekapan tenaga.
Nota tentang model suara dan transkripsi
Dalam pelaksanaan dunia sebenar, apabila memindahkan model seperti Whisper (transkripsi) daripada Python ke laluan asli atau API lain (MPS/Accelerate), ketidakserasian timbul: arahan tertentu wujud dalam CUDA tetapi tidak dalam MPS, atau sebaliknya. Di sinilah bahagian belakang bersatu dan pengkompil dengan MLIR dapat menjimatkan banyak masalah.
Tanpa gam biasa itu, anda akan mendapat cabang kod dan port manual yang memperlahankan evolusi projek. Dengannya, janjinya adalah untuk menulis sekali dan mendapatkan penghalaan yang cekap pada setiap platform yang disokong.
Konteks "Meta": jangkauan, tajaan dan komuniti teknologi
Sebahagian daripada bahan yang mendorong perdebatan ini datangnya daripada podcast dan blog teknikal yang menggabungkan kandungan pendidikan dengan penajaan dan komuniti (malah merchandising). Di luar anekdot (kursus, aplikasi, Twitch, muzik latar belakang, sokongan rangkaian podcast…), apa yang menarik ialah perdebatan teknikal telah melangkaui nichenya dan bergema dengan pelbagai khalayak.
Bunyi itu bagus: ia membawa soalan yang sukar, kes penggunaan dunia sebenar dan pengalaman dengan pelbagai perkakasan. Meningkatkan jangkauan perbualan ke arah MLIR dan Mojo mempercepatkan pengesanan pepijat, panduan migrasi dan penciptaan resipi yang boleh kita semua gunakan semula.
Gambaran keseluruhannya jelas: Python akan kekal sebagai pintu masuk kepada AI, tetapi alternatif pragmatik sudah wujud apabila prestasi adalah yang paling penting. Mojo tidak bertujuan untuk menghapuskan Python, tetapi sebaliknya untuk meningkatkannya dengan pengkompil moden , selari sebenar dan lapisan masa jalan yang memahami pemecut hari ini dan esok. Jika anda bekerja dalam ML/DL dan masa/kos setiap inferens atau zaman latihan adalah penting, ia berbaloi untuk dicuba dengan data dan perkakasan anda sendiri.