Investigating a GPU Detection Issue in Quip Node Manager

Investigating a GPU Detection Issue in Quip Node Manager v0.2.1-rc9

During testing of Quip Node Manager v0.2.1-rc9 on an Ubuntu system equipped with an NVIDIA GeForce RTX 3060, I encountered an interesting issue:

  • GPU was successfully selected in the UI.

  • config.toml was updated correctly.

  • However, the node still launched the CPU miner instead of the CUDA miner.

At first glance, this looked like a typical NVIDIA Driver or CUDA installation problem. After tracing the entire startup process, the root cause turned out to be somewhere completely different.


Test Environment

  • Ubuntu 22.04 (VM running on Proxmox)

  • NVIDIA GeForce RTX 3060 (PCI Passthrough)

  • Docker Engine + Docker Compose v2

  • Quip Node Manager v0.2.1-rc9 (built from source)


Symptoms

Inside the Node Manager UI:

  • Select GPU 0

  • Configure GPU Utilization

  • Click Apply & Restart

  • Start the node

The node started successfully, but checking Docker showed:


docker ps

The running miner container was:


quip-cpu

instead of


quip-cuda

The miner log reported:


unsupported-mode

config requires:

gpu=['gpu','cuda']

image supports:

['cpu','qpu']

This indicated that the CPU miner image was attempting to run using a GPU configuration.


First Investigation

The first thing I checked was the runtime configuration:


cat /root/quip-data/data/config.toml

Surprisingly, the GPU configuration had been written correctly:


[gpu]

[cuda.0]

This confirmed two important facts:

  • :white_check_mark: The UI correctly saved the GPU configuration.

  • :white_check_mark: config.toml was not the source of the problem.

The issue had to be somewhere later in the startup pipeline.


Digging Deeper

Looking into the Docker Compose configuration revealed something important.

Quip defines two separate miner services:


cpu
 └── quip-miner-cpu

cuda
 └── quip-miner-cuda

These services are controlled by Docker Compose Profiles.

Only the active profile is started when the stack launches.


The Root Cause

Although GPU mode was enabled in the UI, Docker Compose was still using the CPU profile.

As a result, the startup flow looked like this:


User enables GPU
        │
        ▼
config.toml updated ✔
        │
        ▼
Compose profile remains CPU ✘
        │
        ▼
quip-miner-cpu starts
        │
        ▼
CPU image receives GPU configuration
        │
        ▼
unsupported-mode

The UI configuration and the runtime environment were no longer synchronized.


Verifying the Hypothesis

To verify the theory, I manually switched Docker Compose to the CUDA profile.

After restarting the stack:


docker compose up -d

The miner container changed to:


quip-cuda

The new logs showed:


NVIDIA GeForce RTX 3060

substrate client connected

GPU mining started successfully.

This confirmed that:

  • :white_check_mark: NVIDIA Driver was working

  • :white_check_mark: CUDA was working

  • :white_check_mark: NVIDIA Container Toolkit was working

  • :white_check_mark: CUDA miner image was working

The issue was not related to the GPU stack at all.

Instead, Node Manager was not switching Docker Compose from the CPU profile to the CUDA profile after GPU mode was enabled in the UI.


Root Cause Summary

The issue can be summarized as follows:


GPU checkbox enabled
        │
        ▼
config.toml updated ✔
        │
        ▼
Docker Compose profile NOT updated ✘
        │
        ▼
CPU miner starts
        │
        ▼
GPU configuration becomes invalid

This is fundamentally a synchronization issue between:

  • Application configuration

  • Docker Compose runtime


Temporary Workaround

Until an official fix is available, starting Docker Compose with the CUDA profile launches the correct miner image and allows GPU mining to work as expected.

No additional changes to the runtime configuration are required.


Lessons Learned

This investigation serves as a good reminder that not every GPU-related issue is caused by drivers or CUDA.

A few takeaways:

  • Don’t assume the problem is the NVIDIA Driver when GPU acceleration fails.

  • Always verify which container image is actually running.

  • When using Docker Compose Profiles, application settings and runtime profiles must remain synchronized.

  • Debugging layer by layer—from UI → Configuration → Docker Compose → Container → Application—is often the fastest way to identify the true root cause.


Conclusion

In this case, the GPU configuration was written correctly, but the runtime environment continued using the CPU profile.

As a result, the CPU miner attempted to load a GPU configuration, leading to the unsupported-mode error.

I’ve documented the complete investigation process and submitted the findings to the Quip development team. Hopefully, this issue can be addressed in an upcoming release.

If you’re testing Quip Node Manager v0.2.1-rc9 and experience similar behavior, this analysis may help you determine whether the problem is in your GPU environment—or simply in how the runtime profile is being selected.

Fix TUI GPU image selection, load compose overrides, bump stack (!27) · Merge requests · Quip Network / quip-node-manager · GitLab should fix this. Let me know if you are still having trouble.