Deep Learning Academy · Lezione

Perché i cicli sono lenti nei calcoli matematici

Il costo dei cicli Python elemento per elemento

Lezione 1 di 413 passaggi

Perché i cicli sono lenti nei calcoli matematici è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Deep Learning Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Deep Learning Academy include 4 lezioni in totale.

L'abitudine al ciclo

Venendo dal Python puro, viene naturale usare un for loop per sommare due liste elemento per elemento. Funziona, ma per i calcoli su larga scala è la strada più lenta. 🐢

Python ha un costo

Ogni passaggio di un ciclo in Python comporta un interpreter overhead: controlli dei tipi, boxing degli oggetti e distribuzione dei bytecode si ripetono per ogni elemento.

Milioni di piccoli passaggi

Una rete neurale elabora milioni di numeri a ogni passaggio. Moltiplichi quel piccolo costo per elemento per milioni di volte e il suo loop rallenta, mentre il lavoro effettivo resta in attesa.

La vectorization è la soluzione

La vectorization consiste nel descrivere l'intera operazione in una volta sola su un tensore, così il lavoro più pesante viene eseguito dal veloce codice compilato C e CUDA sottostante.

Veda il metodo lento

Questo ciclo somma due tensori elemento per elemento in Python. È corretto, ma paga il costo dell'interprete a ogni singolo passaggio.

out = torch.empty_like(a)
for i in range(len(a)):
    out[i] = a[i] + b[i]

Veda il metodo veloce

Lo stesso risultato in una sola riga vettorializzata. PyTorch esegue i cicli nel codice compilato, non nel lento interprete Python.

out = a + b

Una chiamata, molti numeri

Questa singola espressione passa l'intero array a un kernel ottimizzato. Il ciclo viene eseguito al posto suo, molto più vicino all'hardware e molto più velocemente.

La memoria contigua è utile

I tensori memorizzano i numeri in un unico blocco di memoria compatto e contiguous. La CPU li legge in un ordine favorevole alla cache, cosa che una lista Python non può garantire.

SIMD: molti elementi insieme

I chip moderni usano istruzioni SIMD che applicano un'operazione a più numeri durante lo stesso ciclo di clock. Il codice vettorializzato lo rende possibile; i cicli, di solito, no.

Le GPU amano il lavoro in blocco

Una GPU ha migliaia di core pronti per il lavoro parallelo. Se le fornisce tensori interi, dà il meglio di sé; se le fornisce un elemento alla volta, resta quasi sempre inattiva.

Pensi in termini di array

Il cambio di mentalità consiste nel non chiedersi più cosa succede a un singolo numero, ma cosa succede a the whole array. Questa domanda è la chiave per scrivere codice di deep learning veloce.

Controllo rapido

È pronto a identificare il vero responsabile dei cicli lenti?

Riepilogo: meno cicli, più vectorization

I cicli Python pagano un costo per ogni elemento, che le operazioni vettorializzate sui tensori evitano eseguendo codice compilato, pronto per SIMD e ottimizzato per le GPU. Pensi in termini di arrays, non di singoli numeri. ✅

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Perché i cicli sono lenti nei calcoli matematici» è gratuita?

Sì — il testo completo di «Perché i cicli sono lenti nei calcoli matematici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Deep Learning Academy, passa a CoddyKit PRO. Il corso Deep Learning Academy include 4 lezioni in totale.

Cosa imparerò in «Perché i cicli sono lenti nei calcoli matematici»?

Il costo dei cicli Python elemento per elemento Eserciti Deep Learning Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Deep Learning Academy?

Non è richiesta alcuna esperienza precedente. Deep Learning Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Perché i cicli sono lenti nei calcoli matematici»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Deep Learning Academy?

Sì. Ogni lezione Deep Learning Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché i cicli sono lenti nei calcoli matematici
  2. Operazioni elemento per elemento e riduzioni
  3. Moltiplicazione di matrici con matmul e @
  4. I prodotti scalari alimentano ogni layer
← Torna a Deep Learning Academy