Go client for a GPU-accelerated (CUDA) neuro-evolution system NEUROGENNET.
The system performs neural network training entirely on GPU using evolutionary optimization (mutation + selection), without backpropagation.
package main
import (
gpuclient "github.com/alexber1277/gpgenclient"
"log"
)
const endpoint = "http://0.0.0.0:7654/teach"
func main() {
// create config net
req := &gpuclient.NetworkRequest{
Population: 10000,
Layers: 1,
Neurons: 10,
MaxError: 0.00001,
// dataset
Data: []*gpuclient.NetworkRequestDataItem{
{Input: []float64{0, 0}, Output: []float64{0}},
{Input: []float64{0, 1}, Output: []float64{1}},
{Input: []float64{1, 0}, Output: []float64{1}},
{Input: []float64{1, 1}, Output: []float64{0}},
},
}
// request teach network or get cache
var net gpuclient.Network
if err := gpuclient.Request(endpoint, req, &net); err != nil {
log.Fatal(err)
}
// check predict
log.Println(net.Predict([]float64{1, 0}))
}NEUROGENNET is a:
- Fully GPU (CUDA) based neural training system
- Evolutionary optimizer (no backpropagation)
- Parallel population-based mutation engine
- Fitness evaluation on GPU
- Best model selection via reduction
- Single global network output per training request
CPU is used only as a client interface.
- NVIDIA GPU
- NVIDIA Container Toolkit
- Docker
docker pull alexber127/gpgen
docker run -d \
--gpus all \
-p 7654:7654 \
--name gpgen_container \
gpgen