Allocation of 1931371200 exceeds 10% of system memory. Oppure,
Allocation of 9437184 exceeds 10% of system memory, genericamente:
allocation of ‘numero allucinante‘ exceeds 10% of system bla bla.
Suona familiare?
Nei primi esperimenti con tensorflow–gpu mi è capitato più di una volta di incappare in questo spiacevole errore:
Allocation of [x] exceeds 10% of system memory
Il computer cerca di usare più memoria di quanta non ne sia materialmente disponibile e il risultato è il blocco degli script o errori a catena che impediscono ogni successiva procedura.
In questa pagina, ho raccolto alcuni consigli che ho adottato in passato e che mi hanno salvato la vita più di una volta.
Vediamone alcune.
Libera memoria RAM
Spesso la quanità di memoria in ‘overbooking’ è così limitata che chiudere qualche programma particolarmente pesante può fare la differenza.
Riduci il batchsize
In alcuni script è possibile ridurre il batchsize, specie in sessioni di training o di transfer learning, in cui questo valore può risultare fatale. Ricordati che conviene usare multipli di 2. Batch size = 2, 4, 6, 8, 16, 32, etc.
Riduci il dataset
La dimensioni dei file da gestire durante l’esecuzione di uno script è il principale responsabile del problema. Se le precedenti soluzioni non dovessero funzionare, potrebbe essere necessaria una modifica radicale: cambiare il dataset.
In caso di training, potresti provare a comprimere le immagini con un tool online.
Puoi anche tagliarle e lavorare su immagini più piccole.
Imposta i limiti
Questa è una soluzione concreta, rispetto agli altri che sono semplici consigli. Usando tensorflow, i tuoi script dovranno, prima o poi, inizializzare la libreria e chiamare una session. Trova quindi, all’interno dei file, il listato:
tf.Session()
E modifica come segue:
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=x)
tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
Sostituendo la x con una frazione da 0 a 1. Con una 1070 uso 0.7444. E’ appena sotto il limite di memoria utilizzabile (nonostante abbia 8GB, solo 6,1 circa sono occupabili)
Il cloud
L’ultima spiaggia, cambiare computer. Con alcune ricerche online è possibile accedere a diversi servizi che mettono a disposizione, a costi vantaggiosi e non, potenza di calcolo da vendere.
Alla prossima!
Un caldo abbraccio, Andrea.
No Comment