Tips for converting Allen V1 Glif network from NEST to PyGENN. #543
Replies: 11 comments 28 replies
-
We actually had a student work on implementing this model over the summer at https://github.com/williamsnider/v1_project which could be a good starting point. He got as far as implementing all the neuron models (https://github.com/williamsnider/v1_project/blob/main/compare_GLIF.ipynb) and got pretty close to parsing the model description and simulating the model (https://github.com/williamsnider/v1_project/blob/main/complete_model.py). I think the best approach (and the one he took) is to directly transfer the structure of populations to GeNN as number of populations isn't really a limitation. One thing to bear in mind is that GeNN doesn't currently support back-propagation through time (which is what Franz Scherr was using) so would have to figure out some other way to train the model |
Beta Was this translation helpful? Give feedback.
-
I forked the repository, added in some fixes to increase reproducibility, and added in a progress bar The problem is while still trying to build the model, the code hits some very slow pandas data frame processing. It might be faster to eschew data frames beyond this point. Maybe there is a faster way. Progress = 0.2516% - e5Rbp4_0 to i23Htr3a_5
|
Beta Was this translation helpful? Give feedback.
-
I agree build_model.py is way faster, thanks! |
Beta Was this translation helpful? Give feedback.
-
Changing the jobs argument to 1, I am still getting the same error. gcc: fatal error: Killed signal terminated program cc1plus I checked dmesg and it looks like I ran out of some kind of memory. Do you think that decreasing the model size even more will free up memory? [29360.557086] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=cc1plus,pid=21827,uid=1000 |
Beta Was this translation helpful? Give feedback.
-
In #554 I've just implemented a workaround for the slow build times/huge memory usage. Have a go on that branch, passing |
Beta Was this translation helpful? Give feedback.
-
Okay I merged in the compiler_friendly_error_handling branch onto my local GeNN repository. I am rerunning the model with that GeNN installation patched via |
Beta Was this translation helpful? Give feedback.
-
@russelljjarvis I have done a bit more work on this. https://github.com/neworderofjamie/allen_v1 can now simulate the full V1 model (I haven't fully checked the output but it looks good) using this branch of GeNN. Performance is pretty good (0.6s to simulate 1s of realtime on my workstation) although load time is still a few minutes. |
Beta Was this translation helpful? Give feedback.
-
I got pretty close. It built the model. There is a populated directory called: v1_point_CODE
~/git/jamie$ python run.py Then it errors and quits It looks like an error with gcc version on my end.
|
Beta Was this translation helpful? Give feedback.
-
Also if I build the docker file I get this:
|
Beta Was this translation helpful? Give feedback.
-
I can't compile the cuda samples. So I have to figure out how to downgrade gcc make |
Beta Was this translation helpful? Give feedback.
-
I found out I needed to install an a cuda driver extension for containers. Now returns +-----------------------------------------------------------------------------+ |
Beta Was this translation helpful? Give feedback.
-
I wonder if anyone has experience running the Allen V1 "measured" connectome using GENN or has any ideas about the best approach to doing this?
The files that specificy cell type and wiring are shared on DropBox here
These connectomes are encoded in Sonata a HDF5 file format. I have divided this network into smaller populations, and I will probably need to start using SynapseMatrixConnectivity::SPARSE as a container of connection matrices in GENN.
I wonder if I can build a layered network, by chaining together multiple connection matrices? My idea is that LGN (excitatory and inhibitory), and V1 (excitatory and inhibitory), would make up four different populations, and I would use multiple connection matrices (as layers) to connect together the various cell populations.
I am aware of this work, which I believe was implemented using PyTorch tensor types: https://www.biorxiv.org/content/10.1101/2021.11.17.469025v1.full
I would like to do a similar simulated experiment but using GENN as the simulator instead.
Beta Was this translation helpful? Give feedback.
All reactions