Skip to main content

Overview

Remote training runs the CL1 neural interface on dedicated CL1 hardware while the training server runs on a separate machine with CUDA capabilities. This is the production setup for training biological neurons to play DOOM.
Critical: Start the CL1 interface before the training server. Both should be started around the same time, but CL1 first.

Network Setup

You need two machines on the same network:
  1. CL1 Device - Runs the neural interface (e.g., 192.168.240.84)
  2. Training Machine - Runs VizDoom and PPO training (e.g., 192.168.1.238)

Required Ports

Ensure these UDP ports are open between the machines:
  • 12345 - Stimulation commands (training → CL1)
  • 12346 - Spike data (CL1 → training)
  • 12347 - Event metadata (training → CL1)
  • 12348 - Feedback commands (training → CL1)
Test connectivity with ping before starting training. Both machines must be able to reach each other.

Quick Start

1

Configure IP Addresses

Before running the scripts, verify the IP addresses:On CL1 device, check scripts/run_cl1.sh:
On training machine, check scripts/run_training_server.sh:
2

Start CL1 Interface First

On the CL1 device, run:
This executes:
What this does:
  • Connects to training server at 192.168.1.238
  • Saves recordings to /data/recordings/doom-neuron/
  • Runs neural loop at 10 Hz to avoid overstimulating neurons
The tick frequency of 10 Hz is carefully chosen to avoid overstimulating the biological neurons. Do not increase without careful consideration.
3

Start Training Server

On the training machine (after CL1 is running), run:
This executes:
What this does:
  • Runs in training mode with PPO reinforcement learning
  • Uses CUDA for GPU acceleration
  • Connects to CL1 hardware at 192.168.240.84
  • Trains for up to 300 episodes
4

Monitor Training

The training server outputs episode statistics to training_log.jsonl and TensorBoard logs.View TensorBoard metrics:
Access at: http://<training-machine-ip>:6006

Manual Configuration

For custom setups, configure each component manually:

Basic Command

Full Configuration Example

Configuration Options

Use absolute paths for --recording-path on production systems to ensure recordings are saved to persistent storage.

Advanced Configurations

Custom Feedback Configuration

Custom Recording Paths

Watch Mode (Inference)

To run a trained policy without further training:
This executes:
Watch mode uses direct hardware access. The UDP interface has not been ported to watch mode yet.

Troubleshooting

Connection Issues

Symptom: CL1 interface can’t connect to training server Solutions:
  • Verify IP addresses with ip addr or ifconfig
  • Check firewall rules: sudo ufw status
  • Test connectivity: ping <training-host>
  • Ensure ports 12345-12348 are open

Timing Issues

Symptom: Training server fails to connect Solutions:
  • Ensure CL1 interface started first
  • Wait 5-10 seconds between starting CL1 and training server
  • Check that both systems are using the same tick frequency

Performance Issues

Symptom: Slow training or high latency Solutions:
  • Ensure machines are on same local network (avoid VPN/WAN)
  • Check network latency: ping -c 100 <cl1-host>
  • Monitor GPU usage: nvidia-smi -l 1
  • Reduce --max-episodes for testing

Output Files

CL1 Device (/data/recordings/doom-neuron/):
Training Machine:

Stopping Training

Press Ctrl+C on either machine to gracefully shutdown both systems:
  1. Training server sends completion signal to CL1
  2. CL1 interface saves neural recording and exits
  3. Both processes cleanup UDP sockets
  4. Final checkpoint is saved

Next Steps