SpiNNaker-Workshop am 6. / 7.12.2023
Am 6. und 7. Dezember 2023 konnten wir SpiNNcloud, die Entwickler von SpiNNaker 2, zu einem Workshop begrüßen. Es nahmen 20 Personen vor Ort und 30 online teil. SpiNNaker gehört zur Kategorie der neuromorphen Hardware. Neuromorphe Hardware versucht, das Verhalten und die Konfiguration biologischer neuronaler Netze zu imitieren. Dies wird durch eine spezielle Architektur mit Hunderten von dicht miteinander verbundenen ARM-Kernen pro Platine erreicht und nicht durch eine generische CPU-Architektur.
Diese Art von Hardware kann für neuromorphe Simulationen (Gehirnsimulationen) unter Verwendung von neuronalen Spiking-Netzen verwendet werden. Sie ist auch gut geeignet für KI/ML-Inferenz auf Grundlage neuronaler Netze mit deep learning. Darüber hinaus sollte SpiNNaker auch in vielen anderen Bereichen einsetzbar sein, z. B. in der Robotik, der Bild- und Signalverarbeitung in Echtzeit, bei Netzwerksimulationen, Optimierungsproblemen und in jedem anderen Bereich, der von der hohen Kommunikations-Bandbreite und der Interkonnektivität zwischen den “Neuronen” profitieren kann.
Der Workshop umfasste Präsentationen zu KISSKI und von Arbeitsgruppen, die sich mit neuromorphen Simulationen beschäftigen. Die Präsentationen von SpiNNcloud lieferten Informationen über Design und Philosophie von SpiNNaker. Es folgten praktische Demonstrationen mit Testboards, die eine Reihe verschiedener Anwendungen zeigten (die traditionelle MNIST-Zeichenerkennungsaufgabe mit Deep Learning und der QUBO-Algorithmus für die Graphensegmentierung als Beispiel für eine globale Optimierungsherausforderung). Schließlich wurde eine Einführung gegeben, wie man den SpiNNaker-Code auf niedrigerer Ebene modifizieren kann, um neue Arten von Neuronen und Synapsen zu implementieren. SpiNNaker-Code kann in Python auf höherer Ebene geschrieben werden (mit einigen Einschränkungen, an denen aktiv gearbeitet wird). Es gibt Schnittstellen zu PyNN (für neuronale Netzwerkmodelle) und zu gängigen ML-Tools wie TensorFlow und Keras. C/C++-Bibliotheken auf niedrigerem Niveau bieten mehr Flexibilität auf Kosten einer gewissen zusätzlichen Programmierkomplexität. Sie sind derzeit vollständiger.