GPUs

MEGATRON has two NVIDIA GeForce RTX 3090 GPUs, primarily used for deep learning training (ULTRATHINK research) and inference workloads (Ollama LLM serving).

GPU Specifications

SpecificationValue
ModelNVIDIA GeForce RTX 3090
Count2
ArchitectureAmpere (GA102)
CUDA Cores10,496 per GPU
Tensor Cores328 per GPU (3rd gen)
RT Cores82 per GPU (2nd gen)
VRAM24 GB GDDR6X per GPU
Memory Bus384-bit
Memory Bandwidth936.2 GB/s
TDP350W per GPU
Compute Capability8.6
NVLinkNot available (consumer card)

Current Status

MetricGPU 0GPU 1
VRAM Used2.7 GB / 24 GB14 MB / 24 GB
VRAM Utilization11.3%0.06%
Temperature53C46C
Power Draw29W / 350W17W / 350W
Fan SpeedAutoAuto
Performance StateP8 (idle)P8 (idle)
GPU 0:  VRAM [##..................] 11%   Temp: 53C   Power:  29W / 350W
GPU 1:  VRAM [....................]  0%   Temp: 46C   Power:  17W / 350W

GPU 0 has a 2.7 GB allocation, likely from an Ollama model loaded in VRAM or a persistent CUDA context. GPU 1 is essentially idle.

Quick Commands

# Full GPU status
nvidia-smi

# Compact CSV output
nvidia-smi --query-gpu=index,name,memory.used,memory.total,temperature.gpu,power.draw \
  --format=csv

# Real-time monitoring (updates every second)
watch -n 1 nvidia-smi

# List GPU compute processes
nvidia-smi --query-compute-apps=pid,name,gpu_uuid,used_memory --format=csv

# Check driver and CUDA version
nvidia-smi | head -4

GPU Usage by Workload

WorkloadGPU(s)Typical VRAMNotes
ULTRATHINK Training0 + 120-48 GB totalDistributed training across both GPUs
Ollama (LLM inference)02-20 GBModel-dependent; 7B ~ 4GB, 70B ~ 40GB
Bibliotheca TTS0 or 11-4 GBGPU-accelerated text-to-speech
JupyterHub notebooksAnyVariableInteractive research
MLflow experiments0 or 1VariableTracked experiment runs

Multi-GPU Training

For ULTRATHINK research, both GPUs can be used together:

# PyTorch DataParallel (simpler, less efficient)
CUDA_VISIBLE_DEVICES=0,1 python train.py

# PyTorch DistributedDataParallel (recommended for performance)
torchrun --nproc_per_node=2 train.py

# Use only a specific GPU
CUDA_VISIBLE_DEVICES=1 python inference.py

Kubernetes GPU Access

The cluster has a gpu-operator namespace, indicating the NVIDIA GPU Operator is deployed for Kubernetes GPU scheduling. Pods can request GPU resources:

resources:
  limits:
    nvidia.com/gpu: 1

The GPU Operator manages:

  • NVIDIA driver lifecycle
  • NVIDIA Container Toolkit
  • Device plugin for Kubernetes
  • GPU Feature Discovery
  • DCGM Exporter (monitoring)

Thermal Notes

Both GPUs are running cool (46-53C) at near-idle power draw. Under full training load, expect:

ConditionGPU TempPower DrawSystem Power
Idle45-55C17-30W~100W GPU total
Single GPU training75-83C300-350W~350W GPU total
Dual GPU training78-85C300-350W each~700W GPU total

Ensure adequate cooling and a sufficient PSU (recommended 1200W+ for dual 3090 under full load, accounting for the 280W TDP CPU).

Troubleshooting

# GPU not detected
lspci | grep -i nvidia
dmesg | grep -i nvidia

# Reset GPU (use with caution)
sudo nvidia-smi --gpu-reset -i 0

# Check for stuck processes
nvidia-smi --query-compute-apps=pid,name,used_memory --format=csv
kill -9 <stuck_pid>

# Verify CUDA installation
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.device_count())"