Blog.

Tensorflow-gpu e cuda | log da 0 a 0,001


Autore
Andrea Provino
Data
Tempo di lettura
3 minuti
Categoria
Logs

log_come_nasce_guida_esplorare_trovare_find_way_explore

9 dicembre, ore 13:20.

Dobbiamo velocizzare l’esecuzione della libreria tensorflow. Per farlo, installeremo e configureremo il necessario per sfruttare i CUDA core della nostra GPU, la 1070.

Iniziamo scaricando dal sito ufficiale il CUDA Toolkit, disponibile solo per sistemi x64. Ho scelto la versione exe(internet), sperando che l’applicativo si colleghi ai migliori server disponibili. Dovremo scaricare la bellezza di 2,1GB. Non male.

Fallita l’installazione… Perché? Boh.

Riproviamo.

Ho dovuto eseguire un’installazione manuale, deselezionando Visual Studio c++. Lo terremo in considerazione. Ora Cuda è installato.

Sul sito di Tensorflow si legge che occorre installare anche cudnn, scarichiamo ed installiamo la versione compatibile con cuda v10.0.

Non era un file di installazione ma un pacchetto compresso zip. Estratto e inserito in una cartella chiamata Tools al percorso C:\ . Come letto sull pagina ufficiale di tensorflow.

Ora dobbiamo aggiungere le variabili PATH

SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64;
SET PATH=C:\tools\cuda\bin;

Il primo comando non è stato preso, perché la cartella di riferimento conteneva spazi vuoti. Ho modificato il nome della cartella, sperando non ci siano gravi problemi. A questo punto ho dato nuovamente il comando non accorgendomi che mancava la stringa “%PATH% dopo il “;”. Speriamo di non aver combinato cazzate. A quanto pare il comand “%PATH” non serve...

Questo passaggio potrebbe contenere degli errori di valutazione, pertanto non è da considerarsi attendibile.

Ora effetuo un’installazione pulita di tensorflow-gpu

Provo ad importare la libreria su python e compare un errore. E’ noto, leggo i commenti. Conviene effettuare il downgrade di tensorflow da 1.12 a 1.10 vediamo se risolve. Seconda opzione, downgrade di cuda da 10.0 a 9.0.

Curioso, la versione 1.10 di tensorflow gpu pesa 115.80MB, quella 1.12 mi sembra pesasse 90MB.

Installata la versione 1.10, che richiede ovviamente cuda 9.0. Scarichiamo altri 1.3GB e installiamo tutto. A questo punto faccio che sistemare anche cudnn assicurandomi che sia la 7.4.1.5.

Scaricato ed estratto cudnn v7.4.1.5 (compatibile con cuda 9.0). Ora installiamo cuda 9.0 e modifichiamo le variabili PATH, aggiornandole alle versioni appena scaricate

Riavvio il sistema, poi installazione pulita di tensorflowgpu.

Zio impanato, ho dimenticato di dover installare tensorflow v1.10… 

Allora ho smanettato nelle variabili d’ambiente e mi sono accorto che quel giochetto degli spazi nella cartella mi è costato caro. Ora ho sistemato il tutto ma ho problemi con cudnn64_7.dll. Controllo che sia nella variabile d’ambiente e in caso affermativo installo tensorflow v1.12 perché mi ero sbagliato… zio impanato.

Sono passate un paio di ore ormai. L’installazione è terminata, tensorflow GPU è configurato. Ho dovuto spostare manualmente i file cudnn nella cartella di installazione di CUDA. Ho trovato una guida sul sito ufficiale di nVidia, meno male. In pratica cudnn non va “installato“, semplicemente occorre spostare i file nelle giuste cartelle di CUDA. Il problema semmai era capire in quali cartelle andassero messi i file.

WOW

Ho dovuto limitare la potenza della GPU, invece di usare il 100% mi sono limitato al 50, perché a quanto pare ci sono dei limiti nella memoria grafica utilizzabile. Comunque sono passato da 0.8-1.5 FPS a 20FPS, nell’analisi di un video prova. Ora possiamo eseguire uno scan di interi video!

Mentre attendi la prossima guida, che arriverà davvero a breve, leggi il YOLO Object Detection | Log da 0 a 0,001

Oppure Cosa sono i Log da 0 a 0,001 se ti interessa sapere cosa sono (e so che è così vero?) 

Un caldo abbraccio, Andrea.


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum