Files
gt-ai-os-community/scripts/lib/platform.sh
HackWeasel 310491a557 GT AI OS Community v2.0.33 - Add NVIDIA NIM and Nemotron agents
- 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
2025-12-12 17:47:14 -05:00

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
}