RAPIDS Usa la GPU per accelerare facilmente i modelli di ML

'La GPU accelera i modelli di ML con RAPIDS'

Introduzione

Con l’evoluzione continua dell’Intelligenza Artificiale (AI), la richiesta di potenza di calcolo più veloce ed efficiente sta aumentando. I modelli di Machine Learning (ML) possono richiedere molte risorse computazionali e l’addestramento dei modelli può richiedere molto tempo. Tuttavia, utilizzando le capacità di elaborazione parallela delle GPU, è possibile accelerare significativamente il processo di addestramento. Gli scienziati dei dati possono iterare più velocemente, sperimentare più modelli e costruire modelli più performanti in meno tempo.

Sono disponibili diverse librerie da utilizzare. Oggi impareremo su RAPIDS, una soluzione facile per utilizzare la nostra GPU per accelerare i modelli di ML senza alcuna conoscenza di programmazione GPU.

Obiettivi di Apprendimento

In questo articolo, impareremo su:

  • Una panoramica di alto livello su come funziona RAPIDS.ai
  • Le librerie disponibili in RAPIDS.ai
  • Come utilizzare queste librerie
  • Installazione e requisiti di sistema

Questo articolo è stato pubblicato come parte del Data Science Blogathon.

RAPIDS.AI

RAPIDS è una suite di librerie software open source e API per eseguire interamente su GPU i flussi di lavoro di data science. RAPIDS offre prestazioni e velocità eccezionali con API familiari che corrispondono alle librerie PyData più popolari. È sviluppato su NVIDIA CUDA e Apache Arrow, che è la ragione della sua straordinaria performance.

Come funziona RAPIDS.AI?

RAPIDS utilizza il machine learning accelerato da GPU per velocizzare i flussi di lavoro di data science e analytics. Ha un data frame di base ottimizzato per GPU che aiuta a costruire database e applicazioni di machine learning ed è progettato per essere simile a Python. RAPIDS offre una raccolta di librerie per eseguire un flusso di lavoro di data science interamente su GPU. È stato creato nel 2017 dall’Iniziativa di Analisi Aperta delle GPU (GoAI) e dai partner della comunità di machine learning per accelerare i flussi di lavoro di data science e analytics end-to-end su GPU utilizzando un Dataframe GPU basato sulla piattaforma di memoria colonnare Apache Arrow. RAPIDS include anche un’API Dataframe che si integra con algoritmi di machine learning.

Accesso più veloce ai dati con meno movimento dei dati

Hadoop aveva limitazioni nella gestione efficiente di flussi di lavoro di dati complessi. Apache Spark ha risolto questo problema mantenendo tutti i dati in memoria, consentendo flussi di lavoro di dati più flessibili e complessi. Tuttavia, ciò ha introdotto nuovi colli di bottiglia e l’analisi anche di poche centinaia di gigabyte di dati poteva richiedere molto tempo su cluster Spark con centinaia di nodi CPU. Per realizzare appieno il potenziale della data science, le GPU devono essere al centro della progettazione del data center, includendo cinque elementi: calcolo, networking, storage, deployment e software. In generale, i flussi di lavoro di data science end-to-end su GPU sono 10 volte più veloci rispetto alle CPU.

Librerie

Impareremo su 3 librerie nell’ecosistema RAPIDS.

  • cuDF
  • cuML
  • cuGraph

cuDF: Un’alternativa più veloce a Pandas

cuDF è una libreria GPU DataFrame alternativa al data frame di pandas. È costruita sul formato di memoria colonna Apache Arrow e offre un’API simile a pandas per manipolare i dati sulla GPU. cuDF può essere utilizzata per accelerare i flussi di lavoro di pandas utilizzando le capacità di calcolo parallelo delle GPU. Può essere utilizzata per operazioni come caricamento, unione, aggregazione, filtraggio e manipolazione dei dati.

cuDF è un’alternativa facile al Pandas DataFrame anche dal punto di vista della programmazione.

import cudf

# Crea un cuDF DataFrame
df = cudf.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})

# Esegui alcune operazioni di base
df['c'] = df['a'] + df['b']
df = df.query('c > 4')

# Converti in un pandas DataFrame
pdf = df.to_pandas()

Anche l’utilizzo di cuDF è facile, in quanto è sufficiente sostituire l’oggetto Pandas DataFrame con un oggetto cuDF. Per utilizzarlo, è sufficiente sostituire “pandas” con “cudf” e basta. Ecco un esempio di come è possibile utilizzare cuDF per creare un oggetto DataFrame e eseguire alcune operazioni su di esso:

cuML: Un’alternativa più veloce a Scikit Learn

cuML è una collezione di algoritmi di machine learning veloci accelerati dalle GPU e progettati per data science e compiti analitici. Offre un’API simile a quella di sci-kit-learn, permettendo agli utenti di utilizzare l’approccio familiare di addestramento-predizione-trasformazione senza dover sapere come programmare le GPU.

Come cuDF, anche l’utilizzo di cuML è molto semplice da capire. Viene fornito uno snippet di codice come esempio.

import cudf
from cuml import LinearRegression

# Creazione di alcuni dati di esempio
X = cudf.DataFrame({'x': [1, 2, 3, 4, 5]})
y = cudf.Series([2, 4, 6, 8, 10])

# Inizializzazione e addestramento del modello
model = LinearRegression()
model.fit(X, y)

# Effettua le previsioni
predictions = model.predict(X)
print(predictions)

Come puoi vedere ho sostituito “sklearn” con “cuml” e “pandas” con “cudf” e basta. Ora questo codice utilizzerà la GPU e le operazioni saranno molto più veloci.

cuGRAPH: Un’alternativa più veloce a Networkx

cuGraph è una libreria di algoritmi per i grafi che si integra perfettamente nell’ecosistema di data science RAPIDS. Permette di chiamare facilmente gli algoritmi per grafi utilizzando dati memorizzati in GPU DataFrames, grafi NetworkX o addirittura matrici sparse CuPy o SciPy. Offre prestazioni scalabili per oltre 30 algoritmi standard, come PageRank, breadth-first search e uniform neighbor sampling.

Come cuDF e cuML, cuGraph è anche molto facile da usare.

import cugraph
import cudf

# Creazione di un DataFrame con le informazioni sugli archi
edge_data = cudf.DataFrame({
    'src': [0, 1, 2, 2, 3],
    'dst': [1, 2, 0, 3, 0]
})

# Creazione di un grafo utilizzando i dati sugli archi
G = cugraph.Graph()
G.from_cudf_edgelist(edge_data, source='src', destination='dst')

# Calcolo del PageRank del grafo
pagerank_df = cugraph.pagerank(G)

# Stampa il risultato
print(pagerank_df)#

Sì, utilizzare cuGraph è semplice come questo. Basta sostituire “networkx” con “cugraph” e basta.

Requisiti

Ora la parte migliore nell’utilizzare RAPIDS è che non è necessario possedere una GPU professionale. Puoi utilizzare la tua GPU per il gaming o il tuo notebook se soddisfa i requisiti di sistema.

Per utilizzare RAPIDS, è necessario soddisfare i requisiti di sistema minimi.

  • NVIDIA Pascal™ o una GPU migliore con una capacità di calcolo di 6.0 o superiore
  • Ubuntu 20.04 o 22.04, CentOS 7, Rocky Linux 8 o WSL2 su Windows 11
  • Versione recente di CUDA e driver NVIDIA.

Installazione

Passando all’installazione, controlla i requisiti di sistema e se sono soddisfatti, sei pronto per iniziare.

Vai a questo link, seleziona il tuo sistema, scegli la tua configurazione e installa.

Link per il download: https://docs.rapids.ai/install

Benchmarks delle prestazioni

Nella figura sottostante è riportato un benchmark delle prestazioni di cuDF e Pandas per il caricamento e la manipolazione dei dati del “California road network dataset”. Puoi trovare ulteriori informazioni sul codice su questo sito web: https://arshovon.com/blog/cudf-vs-df .

Puoi controllare tutti i benchmark visitando il sito web ufficiale: https://rapids.ai .

Esperienza di Rapids in notebook online

Rapids ha fornito diversi notebook online per testare queste librerie. Vai su https://rapids.ai per controllare tutti questi notebook.

Vantaggi

Alcuni dei vantaggi di RAPIDS sono:

  • Modifiche minime al codice
  • Accelerazione tramite GPU
  • Implementazione più rapida del modello
  • Iterazioni per aumentare l’accuratezza del modello di apprendimento automatico
  • Aumentare la produttività della scienza dei dati

Conclusioni

RAPIDS è una collezione di librerie software open-source e API che ti consente di eseguire interamente pipeline di scienza dei dati e analisi su GPU NVIDIA utilizzando API familiari PyData. Può essere utilizzato senza complicazioni o la necessità di programmazione GPU, rendendolo molto più facile e veloce.

Ecco un riassunto di ciò che abbiamo imparato finora:

  • Come possiamo utilizzare in modo significativo la nostra GPU per accelerare i modelli di ML senza programmazione GPU?
  • È un’alternativa perfetta a varie librerie ampiamente disponibili come Pandas, Scikit-Learn, ecc.
  • Per utilizzare RAPIDS.ai, dobbiamo semplicemente apportare alcune modifiche minime al codice.
  • È più veloce rispetto all’addestramento tradizionale del modello ML basato su CPU.
  • Come installare RAPIDS.ai nel nostro sistema.

Per eventuali domande o feedback, puoi inviarmi un’e-mail a: [email protected]

Domande frequenti

I media mostrati in questo articolo non sono di proprietà di Analytics Vidhya e sono utilizzati a discrezione dell’autore.