The NodeSelector class specifies hardware requirements for Chutes deployments. This reference covers all configuration options, GPU types, and best practices for optimal resource allocation.
Class Definition
from chutes.chute import NodeSelector
node_selector = NodeSelector(
gpu_count: int = 1,
min_vram_gb_per_gpu: int = 16,
include: Optional[List[str]] = None,
exclude: Optional[List[str]] = None
)
Parameters
gpu_count: int = 1
Number of GPUs required for the deployment.
Constraints: 1-8 GPUs
Examples:
# Single GPU (default)
node_selector = NodeSelector(gpu_count=1)
# Multiple GPUs for large models
node_selector = NodeSelector(gpu_count=4)
# Maximum supported GPUs
node_selector = NodeSelector(gpu_count=8)
Use Cases:
GPU Count
Use Case
1
Standard AI models (BERT, GPT-2, 7B LLMs)
2-4
Larger language models (13B-30B parameters)
4-8
Very large models (70B+ parameters)
min_vram_gb_per_gpu: int = 16
Minimum VRAM (Video RAM) required per GPU in gigabytes.
Constraints: 16-140 GB
Examples:
# Default minimum (suitable for most models)
node_selector = NodeSelector(
gpu_count=1,
min_vram_gb_per_gpu=16
)
# Medium models requiring more VRAM
node_selector = NodeSelector(
gpu_count=1,
min_vram_gb_per_gpu=24
)
# Large models
node_selector = NodeSelector(
gpu_count=2,
min_vram_gb_per_gpu=48
)
# Ultra-large models (H100 80GB required)
node_selector = NodeSelector(
gpu_count=4,
min_vram_gb_per_gpu=80
)
VRAM Requirements by Model Size:
Model Size
Min VRAM
Example Models
1-3B params
16GB
DistilBERT, GPT-2
7B params
24GB
Llama-2-7B, Mistral-7B
13B params
32-40GB
Llama-2-13B
30B params
48GB
CodeLlama-34B
70B+ params
80GB+
Llama-2-70B, DeepSeek-R1
include: Optional[List[str]] = None
List of GPU types to include in selection. Only these GPU types will be considered.
Examples:
# Only high-end GPUs
node_selector = NodeSelector(
gpu_count=1,
min_vram_gb_per_gpu=24,
include=["a100", "h100"]
)
# Cost-effective options
node_selector = NodeSelector(
gpu_count=1,
min_vram_gb_per_gpu=48,
include=["l40", "a6000"]
)
# H100 only for maximum performance
node_selector = NodeSelector(
gpu_count=2,
min_vram_gb_per_gpu=80,
include=["h100"]
)
Don't over-provision - it wastes resources and costs more:
# Bad - wastes resources for a 7B model
oversized = NodeSelector(
gpu_count=8,
min_vram_gb_per_gpu=80
)
# Good - matches actual needs
rightsized = NodeSelector(
gpu_count=1,
min_vram_gb_per_gpu=24
)
2. Use Include/Exclude Wisely
# Be specific when you have known requirements
specific_selector = NodeSelector(
gpu_count=1,
min_vram_gb_per_gpu=48,
include=["l40", "a6000"] # Known compatible GPUs
)
# Exclude known incompatible GPUs
compatible_selector = NodeSelector(
gpu_count=1,
min_vram_gb_per_gpu=24,
exclude=["t4"] # Known to be too slow for your use case
)