MLX vs MPS vs CUDA: un punto di riferimento.  Un primo benchmark del nuovo ML di Apple… |  di Tristan Bilot |  Dicembre 2023

 | Intelligenza-Artificiale

Un primo benchmark del nuovo framework ML MLX di Apple

fotografato da Javier Allegue Barros SU Unsplash

Se sei un utente Mac e un appassionato di deep learning, probabilmente a un certo punto avrai desiderato che il tuo Mac potesse gestire quei modelli pesanti, giusto? Beh, indovina un po’? Apple ha appena rilasciato MLXun framework per eseguire modelli ML in modo efficiente su Apple Silicon.

La recente introduzione del Back-end MPS in PyTorch 1.12 era già un passo coraggioso, ma con l’annuncio di MLX sembra che Apple voglia fare un salto significativo nel deep learning open source.

In questo articolo metteremo alla prova questi nuovi approcci, confrontandoli con il backend CPU tradizionale e due GPU abilitate CUDA. In questo modo, miriamo a rivelare quanto questi nuovi metodi compatibili con Mac potranno essere utilizzati nel 2024 per esperimenti di deep learning.

In qualità di ricercatore orientato alla GNN, concentrerò il benchmark su un modello di rete convoluzionale del grafico (GCN). Ma poiché questo modello è costituito principalmente da strati lineari, i nostri risultati potrebbero essere utili anche per coloro che non operano specificatamente nell’ambito della GNN.

Creare un ambiente

Per costruire un ambiente per MLX, dobbiamo specificare se utilizziamo l’architettura i386 o arm. Con conda, questo può essere fatto utilizzando:

CONDA_SUBDIR=osx-arm64 conda create -n mlx python=3.10 numpy -c conda-forge
conda activate mlx

Per verificare se il tuo env sta effettivamente utilizzando arm, l’output del seguente comando dovrebbe essere braccionon i386:

python -c "import platform; print(platform.processor())"

Ora installa semplicemente MLX utilizzando pip e sei pronto per iniziare a esplorare:

pip install mlx

Implementazione del GCN

Il modello GCN, un tipo di Graph Neural Network (GNN), funziona con una matrice di adiacenza (che rappresenta la struttura del grafico) e caratteristiche dei nodi. Calcola gli incorporamenti dei nodi raccogliendo informazioni dai nodi vicini. Nello specifico, ogni nodo ottiene la media delle caratteristiche dei suoi vicini. Questa media viene effettuata moltiplicando le caratteristiche del nodo con la matrice di adiacenza normalizzata, regolata in base al grado del nodo. Per apprendere questo processo, le caratteristiche vengono prima proiettate in uno spazio di inclusione tramite uno strato lineare.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *