neurali:nemo
Table of Contents
NeMo
Esistono due versioni di Nemo
- La prima si compila ma non è completa
- nemo sourceforge (non usare)
- La seconda è completa ma non si compila (oppure devo escludere CUDA)
- nemo-mpi-master.zip da GitHub 2 MB
Descrizione
NeMo (2010?12?) è una libreria per realizzare un simulatore di spiking neural network (SNN) ad alte prestazioni,
- simula reti neurali con NEST modello Izhikevich
- Nemo adotta per NEST modello Izhikevich una integrazione numerica Eulero con passo di 0.25 ms (altrove dice passo fisso di 1 ms)
- Si possono aggiungere facilmente nuovi modelli di neuroni come plugin
- sfrutta l'esecuzione parallela di istruzioni su GPU di tipo CUDA
- Riesce a simulare reti di 100000 neuroni SNN.
- NeMo (che non compila CUDA!) è anche una libreria di C++ (con collegamenti per il C e Python)
- NeMo è supportato da PyNN
- Nemo (che non compila CUDA!) ha una interfaccia grafica SpikeStream
- Nemo (che non compila CUDA!) lavora a basso livello: devo aggiungere un neurone alla volta
- NeMo usa spesso libreria Boost
- (iSpike può codificare dati in impulsi e viceversa
Domande
- esistono anche altri modelli di neuroni, tra cui input neuron, ma non esiste output neuron….???
- esistono i layer su NeMo? no, i neuroni vanno collegati a mano…
Compilazione
Dipendenze:
cmake openmp libboost-filesystem-dev libboost-date-time-dev libboost-system-dev libboost-program-options-dev libboost-python-dev nvidia-cuda-toolkit (non free, contrib,130MB)
Prova
nvcc --version
se ti risponde 5+, sei fregato… vedi nemo_output_compilazione
mkdir build cd build CC=gcc-4.7 CXX=g++-4.7 cmake .. make make install
NOTA: tentativo inutile, nvcc non funziona nemmeno cambiando gcc
nemo output compilazione… e installazione
Definizioni
Lo sviluppatore che vuole usare NeMo per poter avviare una simulazione deve definire:
- neuroni e sinapsi in un oggetto network
- parametri in un oggetto configuration
- oggetto simulation (definito dai due precedenti oggetti)
Per definire un neurone
- Neurone: modello, indice per posizione, parametri del modello (virgola mobile)
- Sinapsi: neurone sorgente e obiettivo, peso (virgola fissa), costante TAU conduttanza (max 64ms), plasticità (V/F), indice sinapsi opzionale
Funzione STDP
Dopo aver impostato la plasticità sinaptica tra i singoli neuroni, si può attivare la funzione STDP globale dell'oggetto simulation.
Vedere prima sinapsi eccitatoria e inibitoria
È necessario definire
- i valori massimi dei pesi sinapsi consentiti (eccitatorio ed inibitorio)
- la larghezza della finestra STDP
- un array pre-post pair (quando l'eccitazione anticipa l'attivazione)
- un array post-pre pair (quando l'attivazione anticipa l'eccitazione)
ispike esempio2 insieme a Nemo
neurali/nemo.txt · Last modified: 2020/06/08 22:20 by 127.0.0.1