Tutorial MLX: Framework Machine Learning Apple untuk Apple Silicon

# Tutorial MLX: Framework Machine Learning Apple untuk Apple Silicon MLX adalah framework machine learning open-source dari Apple yang dirancang khusus untuk Apple Silicon (M1, M2, M3, M4). Framework...

By Ruby Abdullah · · tutorial
MLXApple SiliconMachine LearningLLMPython

Tutorial MLX: Framework Machine Learning Apple untuk Apple Silicon

MLX adalah framework machine learning open-source dari Apple yang dirancang khusus untuk Apple Silicon (M1, M2, M3, M4). Framework ini menawarkan API yang familiar bagi pengguna NumPy dan PyTorch, dengan performa yang dioptimalkan untuk chip Apple. MLX menjadi pilihan utama bagi developer yang ingin menjalankan model ML secara lokal di perangkat Mac tanpa memerlukan GPU NVIDIA.

Dalam tutorial ini, kita akan mempelajari cara instalasi, penggunaan dasar, fine-tuning model LLM, inferensi model, dan best practices untuk memaksimalkan performa MLX di perangkat Apple Silicon.

Mengapa MLX?

Sebelum memulai, mari kita pahami mengapa MLX layak dipelajari:

  • Unified Memory Architecture: MLX memanfaatkan unified memory pada Apple Silicon, sehingga array dapat berada di CPU atau GPU tanpa perlu menyalin data secara manual.
  • Lazy Evaluation: Komputasi hanya dilakukan saat hasilnya benar-benar dibutuhkan, membuat program lebih efisien.
  • API Familiar: Desain API mengikuti NumPy dan PyTorch, sehingga kurva belajar sangat rendah.
  • Composable Function Transformations: Mendukung automatic differentiation, vectorization, dan komputasi graph secara composable.
  • Multi-Device: Operasi dapat berjalan di CPU atau GPU dengan mudah.
  • Instalasi

    Prasyarat

    • macOS 13.5 atau lebih baru
    • Apple Silicon (M1/M2/M3/M4)
    • Python 3.9 atau lebih baru

    Instalasi MLX Core

    pip install mlx
    

    Instalasi MLX-LM (untuk Language Models)

    pip install mlx-lm
    

    Instalasi MLX-VLM (untuk Vision-Language Models)

    pip install mlx-vlm
    

    Instalasi dari Source (Opsional)

    git clone https://github.com/ml-explore/mlx.git
    

    cd mlx

    pip install -e .

    Verifikasi Instalasi

    import mlx.core as mx
    

    import mlx.nn as nn

    print(f"MLX version: {mx.version}")

    print(f"Default device: {mx.defaultdevice()}")

    Test sederhana

    a = mx.array([1, 2, 3, 4, 5])

    print(f"Array: {a}")

    print(f"Sum: {mx.sum(a)}")

    Output yang diharapkan:

    MLX version: 0.x.x
    

    Default device: Device(gpu, 0)

    Array: array([1, 2, 3, 4, 5], dtype=int32)

    Sum: array(15, dtype=int32)

    Penggunaan Dasar

    Operasi Array

    MLX array sangat mirip dengan NumPy, tetapi dioptimalkan untuk Apple Silicon:

    import mlx.core as mx
    
    

    Membuat array

    a = mx.array([1.0, 2.0, 3.0, 4.0])

    b = mx.ones((3, 4))

    c = mx.zeros((2, 3))

    d = mx.random.normal((5, 5))

    print(f"Shape of b: {b.shape}")

    print(f"Dtype of a: {a.dtype}")

    Operasi matematika

    x = mx.array([[1, 2], [3, 4]], dtype=mx.float32)

    y = mx.array([[5, 6], [7, 8]], dtype=mx.float32)

    Element-wise operations

    print(f"Addition: {x + y}")

    print(f"Multiplication: {x y}")

    Matrix multiplication

    print(f"MatMul: {x @ y}")

    Reduction operations

    print(f"Sum: {mx.sum(x)}")

    print(f"Mean: {mx.mean(x)}")

    print(f"Max: {mx.max(x)}")

    Lazy Evaluation

    Salah satu fitur unik MLX adalah lazy evaluation. Komputasi tidak langsung dieksekusi sampai hasilnya dibutuhkan:

    import mlx.core as mx
    
    

    a = mx.ones((1000, 1000))

    b = mx.ones((1000, 1000))

    Operasi ini belum dieksekusi

    c = a + b

    d = c 2

    Evaluasi terjadi saat kita membutuhkan hasilnya

    mx.eval(d)

    print(d)

    Atau saat kita mengkonversi ke Python/NumPy

    result = d.tolist()

    Kontrol Device

    import mlx.core as mx
    
    

    Cek device default

    print(f"Default device: {mx.defaultdevice()}")

    Jalankan di CPU

    mx.setdefaultdevice(mx.cpu)

    a = mx.ones((100, 100))

    print(f"Device: {mx.defaultdevice()}")

    Kembali ke GPU

    mx.setdefaultdevice(mx.gpu)

    b = mx.ones((100, 100))

    print(f"Device: {mx.defaultdevice()}")

    Artikel Terkait

    DSPy: Framework untuk Optimasi LLM Secara Programatik

    DSPy: Framework untuk Optimasi LLM Secara Programatik Prompt engineering secara manual adalah proses yang melelahkan dan...

    Tutorial Lengkap vLLM: High-Performance LLM Serving

    Tutorial Lengkap vLLM: High-Performance LLM Serving vLLM adalah library Python untuk inference dan serving LLM dengan pe...

    Tutorial Lengkap Ollama: Deploy LLMs Secara Lokal

    Tutorial Lengkap Ollama: Deploy LLM Secara Lokal Ollama adalah tool open-source yang memudahkan Anda menjalankan Large L...

    Tutorial Browser-Use: Automasi Browser dengan AI Agent

    Tutorial Browser-Use: Automasi Browser dengan AI Agent Pendahuluan Browser-Use adalah library Python open-source yang me...