Download PPT - Neural Micro circuits

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Parallel neural Circuit
SIMulator (PCSIM) - Tutorial
Dejan Pecevski
Institute for Theoretical Computer Science
Graz University of Technology
FIAS Theoretical Neuroscience Summer School, Frankfurt, August, 2008
Outline of the Tutorial
•
•
•
•
•
•
General Info: What is PCSIM?
Features: What is PCSIM useful for?
Network elements: neurons and synapses
Scalability: Using clusters for parallel simulation.
Python Interface
PCSIM basic operations
 Creating and connecting neurons
 Simulating
 Recording signals
 Populations and Projections
• Summary
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
2/40
Who am I?
• Ph.D. Student at the
Institute for Theoretical Computer Science,
Graz University of Technology
• One of the developers of PCSIM.
• Research Interests
 Plasticity and Learning mechanisms in neural circuits
 Spiking Neural Networks
 Simulation technologies/algorithms for biological neural networks
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
3/40
PCSIM in a nutshell
• Simulator for parallel simulation of spiking and analog neural
networks with point neuron models
• Implemented in C++, with Python and Java interfaces
• High-level definition of neural networks
• Library of built-in neuron and synapse models
• Part of FACETS standardization efforts: the pyNN interface
http://www.neuralensemble.org
• Open-source, free, released under the GPL license, web page at:
http://www.igi.tugraz.at/pcsim
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
4/40
Developers
Thomas Natschläger Ph.D.
Software Competence Center Hagenberg
Hagenberg, Austria
Dejan Pecevski DI
Institute for theoretical computer science
Graz University of Technology
Graz, Austria
Other Contributors: Klaus Schuch DI (IGI),
Christian Ernstbrunner DI (SCCH), Walter Hargassner DI (SCCH)
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
5/40
Feature Overview
• Object Oriented Design
 The user interface/view is object oriented
• General Communication System
 Analog and spiking messages
 Network elements with multiple input and output ports
 Supported in distributed/multi-threaded mode
• Flexible construction of more complex network
architectures
 Populations of simulated objects
 Projections for connectivity specification
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
6/40
Feature Overview
• Parallel simulation
 Mixed multi-thread and distributed
 Easy to use, transparent to the user
• Easily extensible
 A compilation tool for creating PCSIM extension packages
• Usable as backend component in C++, Python, Java, …
 Easier and faster setup of simulations in Python and Java
• Runs on Linux or other Unix-like platforms
 can be compiled under Windows (still not tested).
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
7/40
PCSIM high-level structure
Utilities in Python
NeuroML
Parser
Java Interface
Python Interface
C++
Network Construction Layer
Built-in neuron and
synapse types
BOOST
Simulation Engine
MPI
GSL
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
8/40
Type of models PCSIM is suitable for
• Large recurrent networks with simple point neurons
 Distributed and multi-threaded capabilities
 Efficient simulation engine in C++
 More than 105 spiking neurons and 108 synapses
• Hybrid models
 Abstract modules (filters etc.) combined together with circuits of
analog neurons and spiking neurons
 Extensible with new custom elements
 Closed loop/feedback models
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
9/40
Type of models PCSIM is suitable for
• Structured models
 Networks composed of smaller subnetworks (Populations)
 Probabilistic connectivity patterns based on neuron’s attributes
• Diversity of neurons and synapses
 Different neuron types in the neuron populations
 Specifying random distribution for parameter values
 New neuron and synapse types can be implemented
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
10/40
Examples of PCSIM usage
• Spiking neural network model
of the V1 area in the visual
cortex of mammals (Schuch &
Rasch)
• Testing the computational
performance of laminar cortical
models based on experimental
data. (Schuch & Haeusler)
• Experiments to examine the
learning capabilities of rewardmodulated spike-timingdependent plasticity
(Legenstein, Pecevski, Maass)
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
11/40
A simple model represented in PCSIM
Model equations
dV (t ) V  V (t )
C 2  0 2  I (t )  J 2
dt
R
C
dV1 (t ) V0  V1 (t )

 J1
dt
R
if Vi  VT then V  V0 , spike
s
dI (t )
  I (t )
dt
I (t )  I (t ) w after spike
• The equations can be decoupled into separate simulated elements.
• Presynaptic neurons send spikes to the synapses.
• Synapses inject currents (or modify conductances) in the
postsynaptic neuron.
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
12/40
Network element: basic building block
o u tp u t po r ts
n e t w o rk
e le m e n t
n e tw o r k
e le m e n t
in p u t po rts
• Nodes of the network (dynamical systems)
• Advanced/integrated each time step of the simulation
• Represented by class SimObject

Neurons, synapses, recorders are derived from this class
• Multiple input and output ports, either analog or spiking.
• Connections are formed from output to input ports of the same
type.
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
13/40
Neurons and Synapses as Network Elements
• Synapses as network
elements are attached to the
postsynaptic neuron
• Synapses have one input port,
no output ports
• Neurons have only one output,
no inputs
• The spiking and analog
connections can connect
neurons on different nodes
p re sy n ap tic
ne ur on
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
s y n a ps e
p o stsy na pt ic
n eu ro n
14/40
Built-in Neuron Models
Spiking Models
Input Neurons
• LifNeuron, CbLifNeuron
• PoissonInputNeuron
• SpikingInputNeuron
Leaky integrate-and-fire
• HHNeuron
Hodgkin-Huxley Neuron
• IzhiNeuron
(Izhikevich, 2004)
• aeIFNeuron
Analog Neurons
• LinearAnalogNeuron
Adaptive Exponential I&F
(Brette and Gerstner, 2005)
• LinearPoissonNeuron
Leaky integrate with
Poisson output
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
15/40
Built-in Synapse Models
• Type
 current based
 conductance based
• PSR Kernel
 exponential, alpha,
double-exponential, Square
• Short-term Plasticity
(Markram et al. 1998)
• Other Mechanisms
 NMDA
(Gabbiani et al. 1994)
 GabaB
(Mainen et al. 1994)
 Reward-modulated STDP
(Izhikevich, 2007)
 Homeostatic plasticity
(Buonomano et al. 2005)

• Spike-timing-dependent
Plasticity
 (Froemke and Dan, 2002)
 (Gütig et al, 2003)
 each pair and nearest
Ornstein-Uhlenbeck noise synapse
(Destexhe et al. 2001)
• Analog Synapse
neighbour
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
16/40
Simulation Strategy
• Clock-driven simulation with a fixed time step.
• Hybrid Integration Strategy
 Neurons are integrated every time step.
 Synapses are event driven, i.e. they are integrated only after
receiving a spike.
• Numeric Integration Algorithms
 Exponential Euler Method
 ODE solvers from GSL
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
17/40
Parallel Simulation
•
•
Each MPI process advances subset of neurons
MPI as underlying communication layer

•
spiking and analog messages
Each process can have multiple-threads
PCSIM
subnetwork
PCSIM
subnetwork
PCSIM
subnetwork
MPI
• Transparent to the user

PCSIM
subnetwork
Default round-robin distribution of the neurons
over nodes
 Custom distribution strategies
 Easy retrieval of recordings (as in singlethread case)
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
18/40
Parallel Simulation
• Why?
 Speed-up simulation of an existing model by using more
processors
 Enables simulation of larger models: no memory limit problem
 Scale up the number of neurons while keeping the simulation
time the same.
• Comparison between single-threaded and distributed
simulation
 < 104 neurons and 107 synapses on a single machine
 > 105 neurons and 108 synapses on clusters
 > 106 neurons and 1010 synapses on supercomputers?
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
19/40
Scalability of PCSIM
Hardware: 3.4 Ghz, 512 kb cache, 4GB RAM
Model:
• 50000 LifNeurons, 4.0 Hz average firing rate
• 50106 synapses, 1.5 ms transmission delay
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
20/40
Scalability of PCSIM
Hardware: 3.4 Ghz, 512 kb cache, 4GB RAM
Cuba Model:
• 5000 LifNeurons per node, 4.0 Hz average firing rate
• 103 synapses per neuron, 1.0 ms transmission delay, broad
distribution of time synaptic constants
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
21/40
Extending PCSIM
• What are extensions?

User implemented classes that are plugged into the PCSIM OO
framework
 usualy coded in C++ (can be coded also in Python)
• Compilation of additional separate Python extension packages,
without the need to recompile the main PCSIM code.
• The extension classes are automatically wrapped in Python
• Usual extensions for PCSIM

new neuron/synapse types
 other user defined network elements
 custom rules for specific network construction
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
22/40
Python Interface
What is Python? (taken from www.python.org)
• Python is a dynamic object-oriented programming language
• offers strong support for integration with other languages and tools.
• comes with extensive standard libraries (“batteries included”).
• can be learned in a few days.
• Many Python programmers report substantial productivity gains and
feel the language encourages the development of higher quality, more
maintainable code.
• many scientific packages: scipy, numpy, matplotlib, ipython, Rpy etc.
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
23/40
Python Interface
• PCSIM can be imported as a package within Python
from pypcsim import *
• The model is represented as a network object:
net = SingleThreadNetwork()
• Individual neurons and synapses are accessible as python objects.
• Population and Projection objects for high-level construction of
networks composed of populations
• Together with the other Python packages for scientific computing
provides a complete working environment for neural simulations.
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
24/40
Creating and connecting neurons
# Creates one LIF neuron with default parameter values
nrn_model = LifNeuron()
nrn_id = net.create( nrn_model )
# Creates array of 10 LIFneurons
nrn_array = net.create( LifNeuron(), 10)
# Connects the first and the second neuron in the array
syn_id = net.connect( nrn_array[0], nrn_array[1],
StaticSpikingSynapse())
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
25/40
Specifying neuron/synapse parameters
nrn = net.create(LifNeuron( Cm=2e-10,
Rm=1e8,
Vthresh=-50e-3,
Vresting=-60e-3,
Vreset=-60e-3,
Trefract=5e-3,
Vinit=-60e-3 )) ;
syn = net.connect( pre_nrn, post_nrn,
StaticSpikingSynapse( W=1e-10,
tau= 5e-3,
delay=1e-3 ))
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
26/40
Recording
# record the output spikes of a neuron
rec_spk = net.record( nrn, SpikeTimeRecorder() )
# record the membrane potential
rec_vm = net.record( nrn, “Vm”, AnalogRecorder() )
# record the weight of a synapse
rec_syn = net.record( syn, “W”, AnalogRecorder() )
# record any field in an element
rec = net.record( myElement,
“anyFieldName”, AnalogRecorder())
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
27/40
Simulate the model
# simulate the network for 1 second
net.simulate(1.0)
# or advance it for 200 time steps
net.advance(200)
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
28/40
Accessing individual neurons/synapses
# creates return an ID of the neuron
nrn_id = net.create( LifNeuron() )
# get the actual neuron object from the network
nrn_object = net.object(nrn_id)
# Manipulate the neuron object
nrn_object.Vthresh = -59e-3
# getting the recorded values from a recorder
values = list(net.object(rec_id).getRecordedValues())
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
29/40
Synapse classes nomenclature
• StaticCurrExpSynapse
(StaticSpikingSynapse)
Current/conductance based?
• DynamicCondDblExpSynapse
Short-term plasticity
Shape of PSR kernel
• StaticStdpCondAlphaSynapse
• DynamicCurrAlphaSynapse
• DynamicNMDAAlphaSynapse
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
30/40
Hello, world!
from pypcsim import *
net = SingleThreadNetwork()
pre_nrn = net.create( LifNeuron(Iinject = 5e-8) )
post_nrn = net.create( LifNeuron(Iinject = 5e-8) )
net.connect( pre_nrn, post_nrn, StaticSpikingSynapse())
rec = net.record( post_nrn, SpikeTimeRecorder() )
net.simulate(0.2)
print “spike times:”,
list(net.object(rec).getRecordedValues())
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
31/40
Specifying inputs
# Create input neuron which spikes at specific times
net.create(SpikingInputNeuron( [0.1, 0.2, 0.4]))
# Create input neuron with Poisson process spike times
net.create( PoissonInputNeuron(rate = 10, duration = 10) )
# Create analog input neuron with an
# output analog signal specified as array
net.create( AnalogInputNeuron( arange(0,10,1e-4) % 1 ) )
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
32/40
Creating and connecting many neurons
•
•
Population of 1000 neurons randomly interconnected
with 0.1 probability
Population of recorders: one for each neuron in the population
# create a population of 1000 LIF neurons
popul = SimObjectPopulation(net, LifNeuron(), 1000)
# create the projection
proj = ConnectionsProjection( popul, popul,
StaticSpikingSynapse(),
RandomConnections( 0.1 ) )
# create a recorder population
rec_popul = popul.record( SpikeTimeRecorder() )
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
33/40
Random distributions for parameter values
• Factory – an object that generates PCSIM elements
• Neuron and synapse objects (used as models for creation) are
simple clone factories
• SimObjectVariationFactory – factory that attaches random
distributions to parameter names
nrn_factory = SimObjectVariationFactory( LifNeuron() )
nrn_factory.set( “Vinit”,
NormalDistribution( -55e-3, 0.1 ) )
popul = SimObjectPopulation(net, nrn_factory, 1000)
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
34/40
Spatial heterogenous populations
•
•
Each neuron has coordinates in 3D space
The population is composed of different families of neurons
(that can be of different type)
exc_nrn = LifNeuron( Cm = 2e-10,
Inoise = 1e-10)
inh_nrn = LifNeuron( Cm = 3e-10 )
popul = SpatialFamilyPopulation(net,
[ exc_nrn, inh_nrn],
RatioBasedFamilies((4,1)
),
CuboidIntegerGrid3D(20,10,10))
exc_popul, inh_popul = popul.splitFamilies()
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
35/40
Distance dependent random connections
Creates random connections with probability
p( D)  C  e

D2
2
where D is the euclidean distance between the two neurons
proj = ConnectionsProjection( popul, popul,
StaticSpikingSynapse(),
EuclideanDistanceRandomConnections( C, lambda ) )
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
36/40
Saving recorded data
from pypcsimplus import *
# Create the recording class
r = Recordings()
# Add the recorder populations as attributes to r
r.spikes = popul1.record( SpikeTimeRecorder() )
r.vm_traces = popul2.record( “Vm”, AnalogRecorder() )
# Some additional variables to be saved
r.v = 5
# Save the Recordings class to a HDF5 file
r.saveInOneH5File(“results.h5”)
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
37/40
Running a parallel simulation
• Change the network class from SingleThreadNetwork to
either:
MultiThreadNetwork( nThreads = 4 )
 DistributedSingleThreadNetwork
 DistributedMultiThreadNetwork

• then run the script with mpirun
$ mpirun –n 10 python my_experiment.py
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
38/40
Summary
• PCSIM is a tool for simulation structured random neural networks
composed of spiking and analog point neuron models
• Has various built-in neuron and synapse models
• Supports parallel simulation: distributed and multi-threaded
• Flexible high-level construction of networks based on probabilistic
rules
• The Object-oriented framework is designed to support easy
extensions
• Can be used as a package within the Python interpreting
programming language, together with other useful scientific packages
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
39/40
PCSIM Resources
• Web page
http://www.lsm.tugraz.at/pcsim
• On Sourceforge
http://www.sourceforge.net/projects/pcsim
• Mailing list
http://sourceforge.net/mailarchive/forum.php?forum_name=pcsim-users
• User manual
http://www.lsm.tugraz.at/pcsim/usermanual/html/index.html
• C++ class reference
http://www.lsm.tugraz.at/pcsim/cppclassreference/html/hierarchy.html
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
40/40
Thank you for your attention!
Dejan Pecevski, FIAS Theoretical Neuroscience Summer School, August, 2008
41/40