- MLX adalah framework array untuk peneliti machine learning berbasis Apple Silicon, dengan kemudahan penggunaan yang mirip NumPy dan PyTorch
- Pekerjaan untuk menambahkan backend CUDA ke MLX sedang berlangsung
- Tujuan utamanya adalah dukungan unified memory dan pemanfaatan luas perangkat keras NVIDIA
- Saat ini baru contoh tutorial yang bisa dijalankan, dan build serta pengujian telah dikonfirmasi pada lingkungan Ubuntu 22.04 + CUDA 11.6
- Sambil melewati masalah performa awal dan memperbaiki bottleneck, proses optimasi dan refactoring terus dilakukan berulang kali
- Backend CUDA untuk MLX dikerjakan dengan dukungan Apple, dengan tujuan menghadirkan pengalaman yang konsisten saat mengembangkan di Mac dan melakukan deployment ke lingkungan komputasi besar melalui dukungan unified memory dan perangkat keras NVIDIA
Pengenalan framework MLX
- MLX adalah framework array untuk machine learning yang dikembangkan oleh tim riset machine learning Apple
- Framework ini dibuat agar engineer dan peneliti bisa bereksperimen secara efektif dan memvalidasi ide dengan cepat
- Dukungan untuk Apple Silicon adalah ciri utamanya, tetapi kini melalui penambahan backend CUDA, cakupan operasinya sedang diperluas agar dapat berjalan juga di lingkungan GPU NVIDIA
Fitur utama
- API yang familier: API Python menyediakan pengalaman seperti NumPy, sementara paket tingkat atas
mlx.nn, mlx.optimizers menawarkan antarmuka yang mirip PyTorch
- API C++, C, dan Swift juga disediakan, dengan konsistensi penggunaan yang sama seperti API Python
- Transformasi fungsi yang dapat dikomposisikan: mencakup fitur seperti diferensiasi otomatis, vektorisasi otomatis, dan optimasi graph komputasi
- Lazy evaluation: beberapa operasi dapat digabung dan hasilnya hanya dihitung saat benar-benar diperlukan, sehingga penggunaan resource lebih efisien
- Pembuatan graph dinamis: meskipun shape data input berubah, eksekusi bisa langsung dilakukan tanpa kompilasi lambat, sehingga memudahkan pengembangan dan debugging
- Model multi-device dan unified memory:
- Sebelumnya hanya mendukung CPU dan Apple GPU, tetapi kini dukungan untuk lingkungan GPU NVIDIA sedang diupayakan lewat backend CUDA
- Dengan mengadopsi struktur unified memory, objek yang sama dapat dioperasikan di semua perangkat yang didukung tanpa penyalinan memori
- Desain ringkas dan dapat diperluas: memudahkan peneliti untuk memperluas dan meningkatkan framework
Perbedaan dari framework lain dan sumber inspirasinya
- Mendapat inspirasi desain dari NumPy, PyTorch, Jax, ArrayFire, dan lain-lain
- Secara khusus menekankan model unified memory, antarmuka yang ringkas, serta lingkungan eksekusi langsung/debugging
Contoh representatif dan bidang penggunaan
- Repo MLX Examples berisi berbagai kode praktik
- Pelatihan model bahasa Transformer
- Pembuatan teks skala besar berbasis LLaMA dan fine-tuning menggunakan LoRA
- Pembuatan gambar dengan Stable Diffusion
- Termasuk contoh implementasi model terkini seperti pengenalan suara berbasis OpenAI Whisper
Arti penting MLX dan dukungan CUDA
- MLX, yang sebelumnya merupakan framework berfokus pada Apple Silicon, kini memperluas potensi pemanfaatannya agar lebih umum di lingkungan GPU NVIDIA melalui adopsi backend CUDA
- Dengan dukungan CUDA terbaru, MLX diperkirakan dapat memosisikan diri sebagai framework yang cocok baik untuk riset mutakhir maupun penggunaan industri di perangkat keras Apple dan NVIDIA
3 komentar
Yang diperlukan sebenarnya hanya membuatnya agar kita bisa memakai GPU Nvidia di macOS... heh heh.
Kabar bagus nih hehe, semoga dukungan CUDA segera hadir supaya pelatihan berkecepatan tinggi juga bisa dilakukan di Mac~!
Opini Hacker News
Panduan instalasi
Tentang zcbenz
Lihat bullet di readme repositori: MLX GitHub
Rasanya menarik jika ini diperluas ke semua APU UMA (tanpa memandang vendor), tetapi ada pertanyaan apakah pendekatannya harus berbeda pada GPU diskret
Setelah membaca komentar PR, tampaknya CUDA juga mendukung API UMA secara langsung dan menangani penyalinan secara transparan bila diperlukan
Ini menimbulkan pertanyaan apakah Apple mendukung dari belakang tanpa menampakkannya secara resmi. Ada juga rumor bahwa tim ini akan pindah
Artinya, kode MLX bisa dibangun dan dijalankan pada perangkat keras x86 + GeForce, bukan sebaliknya
Saya sudah mencoba sendiri, dan hanya versi Python 3.12 yang ada di PyPI
Halaman MLX-CUDA di PyPI
Belakangan ini juga mulai muncul ulasan YouTuber yang menilai DGX Spark kalah efisien dari sisi harga dibanding Strix Halo. Kekurangannya, ROCm masih lemah untuk saat ini (meski tampaknya akan segera membaik). Jika CUDA bisa berjalan sempurna di perangkat Apple, maka meskipun Strix murah dan bagus, itu akan menjadi opsi yang layak dipertimbangkan serius