This option is for more technical users with their own GPU hardware.

Deploy Worker on Your Own GPUs

Video Walkthrough

1 - Select Contribute Compute

Click the “Contribute Compute” button on the dashboard of the compute pool you want to contribute to.

2 - Select Self-Hosted Option

Select the option to self-host your worker.

3 - Follow the Guided Setup

The steps on the UI will guide you through setting up your worker.

Ensure you’re contributing a physical machine with GPU access or VM (Virtual Machine) with GPU passthrough. Containerized cloud environments (e.g. RunPod, TensorDock) are not supported.

4 - Run Worker CLI

Once you’ve set up your worker, run the worker using the command you generated, it will:

1. Automatically verify your installation and hardware

The CLI will check your hardware and software to make sure all dependencies are setup.

╔════════════════════════════════════════════════════════════════════════════════╗
║                                Hardware Checks                                 ║
╚════════════════════════════════════════════════════════════════════════════════╝

GPU Detection

Network Speed Test:
→ Starting network speed test...
Download Speed: 165.27 Mbps
Upload Speed: 141.95 Mbps

CPU Information:
Cores: 48
Model: Intel(R) Xeon(R) Gold 6338 CPU @ 2.00GHz

Memory Information:
Total Memory: 472 GB
Free Memory: 468 GB

Storage Information:
Total Storage: 3340 GB
Storage Path for docker mounts: /ephemeral

GPU Information:
Count: 4
Model: nvidia_a100_80gb_pcie
Memory: 80 GB

╔════════════════════════════════════════════════════════════════════════════════╗
║                                Software Checks                                 ║
╚════════════════════════════════════════════════════════════════════════════════╝

Docker:
✓ Docker API accessible
✓ Docker ready
✓ NVIDIA toolkit ready

If there are any missing dependencies (e.g. Docker or nvidia-ctk) it’ll prompt you to install them before trying again.

Troubleshooting

  • Docker API Permission Denied ... You may need to add your user to the docker group
    1. Add your user to the docker group:
      sudo usermod -aG docker $USER
    
    1. Log out and in again to your SSH session

2. Register on the network.

The CLI will prompt you to approve the stake of stokens — these are the tokens sent to you during the onboarding process. You can safely approve the staking.

╔════════════════════════════════════════════════════════════════════════════════╗
║                              Syncing with Network                              ║
╚════════════════════════════════════════════════════════════════════════════════╝

Provider Status
Required stake: 200

Registering Provider
→ Registering provider...
AI Token Balance: 200 tokens
ETH Balance: 0.1 ETH
Do you want to approve staking 200 tokens? [y/N]: y

Once approved, your worker will try to register with the network. It may take a few tries before your whitelist status updates and the node is able to be successfully added.

→ Approving AI Token for Stake transaction
→ Registering Provider
Registration tx: 0xfd69cb049e0b67dca51e500f16aebb8cfbbec698858219862acd7dd8f06a4216
→ Getting provider details
✓ Provider registered
✗ Provider is not whitelisted yet.
Info: Retrying in 10 seconds...
→ Registering provider...
→ Getting provider details
✓ Provider registered
✗ Provider is not whitelisted yet.
Info: Retrying in 10 seconds...
→ Registering provider...
→ Getting provider details
✓ Provider registered
✗ Provider is not whitelisted yet.
Info: Retrying in 10 seconds...
→ Registering provider...
→ Getting provider details
✓ Provider registered
✗ Provider is not whitelisted yet.
Info: Retrying in 10 seconds...
→ Registering provider...
→ Getting provider details
✓ Provider registered
✗ Provider is not whitelisted yet.
Info: Retrying in 10 seconds...
→ Registering provider...
→ Getting provider details
✓ Provider registered

Compute Node Status

🔄 Adding compute node
→ Adding compute node
✓ Add node tx: 0x3374a47ba0a43593f523a876c35cc5d2b497b71549733f4c51fcb33f2afd2995

📦 Uploading discovery info
✓ Discovery info uploaded

3. Wait for an invite to join the compute pool

Once your node has registered on the network, it will wait to be validated by a Validator.

╔════════════════════════════════════════════════════════════════════════════════╗
║                        Starting Worker with Task Bridge                        ║
╚════════════════════════════════════════════════════════════════════════════════╝
🌐 Starting endpoint service and waiting for sync with orchestrator: 
🔄 Chain Sync - Provider stake: 200 tokens
🔄 Chain Sync - Node pool membership: false
🔄 Chain Sync - Node validation: false
[INFO  actix_server::builder] starting 48 workers
[INFO  actix_server::server] Tokio runtime found; starting in existing Tokio runtime
[INFO  actix_server::server] starting service: "actix-web-service-0.0.0.0:8080", workers: 48, listening on: 0.0.0.0:8080
🔄 Chain Sync - AI Token Balance: 0 tokens
🔄 Chain Sync - Whitelist status: true
🔄 Chain Sync - Node validation: true
🔄 Chain Sync - Validation changed: From false to true

Once the worker has been successfully validated, it will wait for an invite from the orchestrator, after which it will join the compute pool.

[INFO  actix_web::middleware::logger] 34.71.243.28 "POST /invite HTTP/1.1" 202 15 "-" "-" 7.836416
🔄 Chain Sync - Node pool membership: true
🔄 Chain Sync - Pool membership changed: From false to true
✓ Successfully joined compute pool: 0xdcc3c188bcaec85e9d0174753ff417f6b86e26a03f8751cacd076a2b33187137

4. Join the compute pool and start contributing

Once the worker has joined the compute pool, it’ll periodically send heartbeats to the orchestrator, and also start receiving tasks to complete and run.

Starting to send heartbeats now.: 
Starting heartbeat service with endpoint: https://orchestrator-6.dev.pinfra.io/heartbeat
[INFO  worker::operations::heartbeat::service] Synced with orchestrator
...
[INFO  worker::operations::heartbeat::service] Current task is to run image: "primeintellect/intellect-2"
DockerService: Starting new container ...
Starting to pull image: primeintellect/intellect-2
[INFO  worker::docker::docker_manager] Successfully pulled image primeintellect/intellect-2
Creating container with name: prime-task-d68f265b-57e5-4de9-979a-ca254e16b3e7
[INFO  worker::docker::docker_manager] Container created successfully with ID: 476785c2a19880188d5a87e4d13becc25634237813f1ef7acbc2de814af1e93d
Starting container with ID: 476785c2a19880188d5a87e4d13becc25634237813f1ef7acbc2de814af1e93d
Container 476785c2a19880188d5a87e4d13becc25634237813f1ef7acbc2de814af1e93d started successfully
DockerService: Container started with id: 476785c2a19880188d5a87e4d13becc25634237813f1ef7acbc2de814af1e93d
DockerService: Task state changed from PENDING to RUNNING
...
DockerService: Task state changed from RUNNING to COMPLETED

You can shut-down the worker at any time when you’re done contributing.

If you have issues setting up your worker, contact us through our support page or in the #protocol channel on our Discord.

Your contributions may be slashed if you try to act maliciously on the network; e.g. faking GPU hardware, submitting fake data, etc. More details in contribution guidelines

5 - Monitor Status

You can monitor your worker’s status on the dashboard and the CLI output. The dashboard may take up to 10 minutes to update with the latest worker status, so check the CLI for the most up-to-date status.

6 - Earn contributions once active

Once your worker is active it’ll join the network and start submitting work. Contributions are tracked based on work submitted, so it may take up to an hour to start seeing contributions increase.

You’ll also be able to see your contributions on the compute pool dashboard.

View Worker Source Code