Skip to content

alexber1277/gpgenclient

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NEUROGENNET Go Client (ONLY CUDA)

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.


Example

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}))

}

1. Overview

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.


2. Run CUDA Backend (Docker)

Requirements

  • NVIDIA GPU
  • NVIDIA Container Toolkit
  • Docker

Pull and run container

docker pull alexber127/gpgen

docker run -d \
  --gpus all \
  -p 7654:7654 \
  --name gpgen_container \
  gpgen