- Updated python_coding_microproject.csv to use NVIDIA NIM Kimi K2 - Updated kali_linux_shell_simulator.csv to use NVIDIA NIM Kimi K2 - Made more general-purpose (flexible targets, expanded tools) - Added nemotron-mini-agent.csv for fast local inference via Ollama - Added nemotron-agent.csv for advanced reasoning via Ollama - Added wiki page: Projects for NVIDIA NIMs and Nemotron
142 lines
4.0 KiB
Bash
Executable File
142 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# GT 2.0 Platform Detection and Compose File Selection
|
|
# Handles ARM64, x86_64, and DGX platform differences
|
|
|
|
# Detect NVIDIA GPU and Container Toolkit availability
|
|
detect_nvidia_gpu() {
|
|
# Check for nvidia-smi command (indicates NVIDIA drivers installed)
|
|
if ! command -v nvidia-smi &> /dev/null; then
|
|
return 1
|
|
fi
|
|
|
|
# Verify GPU is accessible
|
|
if ! nvidia-smi &> /dev/null; then
|
|
return 1
|
|
fi
|
|
|
|
# Check NVIDIA Container Toolkit is configured in Docker
|
|
if ! docker info 2>/dev/null | grep -qi "nvidia"; then
|
|
return 1
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
# Detect platform architecture
|
|
detect_platform() {
|
|
local arch=$(uname -m)
|
|
local os=$(uname -s)
|
|
|
|
# Check for DGX specific environment
|
|
if [ -f "/etc/dgx-release" ] || [ -n "${DGX_PLATFORM}" ]; then
|
|
echo "dgx"
|
|
return 0
|
|
fi
|
|
|
|
# Detect architecture
|
|
case "$arch" in
|
|
aarch64|arm64)
|
|
echo "arm64"
|
|
;;
|
|
x86_64|amd64)
|
|
echo "x86"
|
|
;;
|
|
*)
|
|
log_error "Unsupported architecture: $arch"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Get compose file for platform
|
|
get_compose_file() {
|
|
local platform="${1:-$(detect_platform)}"
|
|
local dev_mode="${2:-false}"
|
|
local files=""
|
|
|
|
case "$platform" in
|
|
arm64)
|
|
files="docker-compose.yml -f docker-compose.arm64.yml"
|
|
;;
|
|
x86)
|
|
files="docker-compose.yml -f docker-compose.x86.yml"
|
|
# Add GPU overlay if NVIDIA GPU detected
|
|
if detect_nvidia_gpu; then
|
|
files="$files -f docker-compose.x86-gpu.yml"
|
|
fi
|
|
;;
|
|
dgx)
|
|
files="docker-compose.yml -f docker-compose.dgx.yml"
|
|
;;
|
|
*)
|
|
log_error "Unknown platform: $platform"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Add dev overlay if requested
|
|
if [ "$dev_mode" = "true" ]; then
|
|
files="$files -f docker-compose.dev.yml"
|
|
fi
|
|
|
|
echo "$files"
|
|
}
|
|
|
|
# Get platform-specific settings
|
|
get_platform_info() {
|
|
local platform="${1:-$(detect_platform)}"
|
|
|
|
case "$platform" in
|
|
arm64)
|
|
echo "Platform: Apple Silicon (ARM64)"
|
|
echo "Compose: docker-compose.yml + docker-compose.arm64.yml"
|
|
echo "PgBouncer: pgbouncer/pgbouncer:latest"
|
|
;;
|
|
x86)
|
|
echo "Platform: x86_64 Linux"
|
|
if detect_nvidia_gpu; then
|
|
echo "Compose: docker-compose.yml + docker-compose.x86.yml + docker-compose.x86-gpu.yml"
|
|
echo "GPU: NVIDIA (accelerated embeddings)"
|
|
else
|
|
echo "Compose: docker-compose.yml + docker-compose.x86.yml"
|
|
echo "GPU: None (CPU mode)"
|
|
fi
|
|
echo "PgBouncer: pgbouncer/pgbouncer:latest"
|
|
;;
|
|
dgx)
|
|
echo "Platform: NVIDIA DGX (ARM64 Grace + Blackwell GPU)"
|
|
echo "Compose: docker-compose.yml + docker-compose.dgx.yml"
|
|
echo "PgBouncer: bitnamilegacy/pgbouncer:latest"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Check platform-specific prerequisites
|
|
check_platform_prerequisites() {
|
|
local platform="${1:-$(detect_platform)}"
|
|
|
|
case "$platform" in
|
|
x86|dgx)
|
|
# Check if user is in docker group
|
|
if ! groups | grep -q '\bdocker\b'; then
|
|
log_error "User $USER is not in the docker group"
|
|
log_warning "Docker group membership is required on Linux"
|
|
echo ""
|
|
echo "Please run the following command:"
|
|
echo -e "${BLUE} sudo usermod -aG docker $USER${NC}"
|
|
echo ""
|
|
echo "Then either:"
|
|
echo " 1. Log out and log back in (recommended)"
|
|
echo " 2. Run: newgrp docker (temporary for this session)"
|
|
return 1
|
|
fi
|
|
log_success "Docker group membership confirmed"
|
|
;;
|
|
arm64)
|
|
# macOS - no docker group check needed
|
|
log_success "Platform prerequisites OK (macOS)"
|
|
;;
|
|
esac
|
|
return 0
|
|
}
|