Vai al contenuto

Accelerazione di Modelli SLM su Apple Silicon con MLX Framework

Scopri come usare il framework MLX di Apple per accelerare i modelli SLM su Apple Silicon, includendo l’uso di Phi-3-mini.

Negli ultimi tempi, l’accelerazione dei modelli di apprendimento automatico su hardware specifico è diventata una priorità per molti ricercatori e professionisti. Apple ha introdotto il framework MLX per sfruttare al meglio le capacità di Apple Silicon, permettendo l’esecuzione e l’ottimizzazione locale di modelli come il Phi-3-mini. Questo articolo esplorerà come utilizzare il MLX Framework per accelerare le operazioni di Phi-3-mini, eseguire la quantizzazione e combinare Llama.cpp per ottimizzare ulteriormente le performance.

Cosa è il MLX Framework

Il MLX Framework è stato sviluppato da Apple per accelerare la ricerca nel campo dell’apprendimento automatico su dispositivi Apple Silicon. È progettato per essere intuitivo e al tempo stesso efficiente, consentendo ai ricercatori di estendere e migliorare rapidamente il framework per esplorare nuove idee. Il MLX permette di eseguire modelli di linguaggio come Phi-3-mini direttamente su dispositivi Apple, sfruttando le loro capacità hardware avanzate.

Installazione del MLX Framework

Per installare MLX, è necessario avere Python 3.11 o versione superiore. Ecco il comando per l’installazione tramite terminale:

pip install mlx-lm

Esecuzione delle Istruzioni di MLX

Ecco alcune istruzioni per eseguire Phi-3-mini tramite MLX nel terminale:

1. Esecuzione di Phi-3-mini nel Terminale con MLX

python -m mlx_lm.generate --model microsoft/Phi-3-mini-4k-instruct --max-token 2048 --prompt "Presentati."

2. Quantizzazione di Phi-3-mini con MLX nel Terminale

python -m mlx_lm.convert --hf-path microsoft/Phi-3-mini-4k-instruct

3. Esecuzione di Phi-3-mini con MLX in Jupyter Notebook

È possibile eseguire Phi-3-mini in un ambiente Jupyter Notebook per una maggiore interattività e analisi dettagliata.

Fine-tuning con MLX Framework

Il training o il fine-tuning dei modelli richiede solitamente l’uso di GPU per l’accelerazione. Tuttavia, sui dispositivi Apple è possibile utilizzare gli Metal Performance Shaders (MPS) per sostituire le GPU e completare i lavori di fine-tuning.

Cosa sono i Metal Performance Shaders

I Metal Performance Shaders contengono una serie di shader altamente ottimizzati per il calcolo e la grafica, progettati per integrarsi facilmente nelle app Metal e offrire prestazioni ottimali sfruttando le caratteristiche hardware uniche di ogni famiglia di GPU.

Esempio – Utilizzo di LoRA per il Fine-tuning di Phi-3-mini con MLX

1. Preparazione dei dati

MLX Framework richiede, in genere, dati nel formato JSONL per il training, il test e la valutazione, combinati con LoRA per completare il fine-tuning. Ecco un esempio di dati JSONL:

{  "text": "Quando sono state usate comunemente le vergini di ferro?"}

2. Fine-tuning nel terminale

Per avviare il fine-tuning, eseguire il seguente comando nel terminale:

python -m mlx_lm.lora --model microsoft/Phi-3-mini-4k-instruct --train --data ./data --iters 1000 

3. Esecuzione dell’adattatore di Fine-tuning per il Test

Per testare l’adattatore di fine-tuning, eseguire:

python -m mlx_lm.generate --model microsoft/Phi-3-mini-4k-instruct --adapter-path ./adapters --max-token 2048 --prompt "Perché i camaleonti cambiano colore?" --eos-token ""

Potete anche confrontare i risultati del modello originali con quelli dell’adattatore di fine-tuning utilizzando lo stesso prompt.

4. Fusione degli Adattatori per Generare Nuovi Modelli

python -m mlx_lm.fuse --model microsoft/Phi-3-mini-4k-instruct

5. Esecuzione di Modelli Fine-tuned Quantificati con Ollama

Prima di utilizzare Ollama, configurate l’ambiente llama.cpp con questi comandi:

git clone https://github.com/ggerganov/llama.cpp.gitcd llama.cpppip install -r requirements.txtpython convert.py 'Il tuo percorso del modello' --outfile phi-3-mini-ft.gguf --outtype f16

Risorse