| #!/bin/bash |
| set -e |
|
|
| |
| show_usage() { |
| echo "Usage: $0 [MODE]" |
| echo "" |
| echo "MODE options:" |
| echo " gpu - Force GPU mode (requires nvidia-container-toolkit)" |
| echo " cpu - Force CPU-only mode" |
| echo " auto - Automatically detect and use GPU if available (default)" |
| echo "" |
| echo "Examples:" |
| echo " $0 # Auto-detect (default)" |
| echo " $0 gpu # Force GPU mode" |
| echo " $0 cpu # Force CPU-only mode" |
| echo "" |
| echo "For Jetson devices, use: ./run-jetson.sh" |
| } |
|
|
| |
| MODE="auto" |
| if [ $# -gt 0 ]; then |
| case "$1" in |
| gpu|GPU) |
| MODE="gpu" |
| ;; |
| cpu|CPU) |
| MODE="cpu" |
| ;; |
| auto|AUTO) |
| MODE="auto" |
| ;; |
| -h|--help|help) |
| show_usage |
| exit 0 |
| ;; |
| *) |
| echo "Error: Unknown mode '$1'" |
| echo "" |
| show_usage |
| exit 1 |
| ;; |
| esac |
| fi |
|
|
| |
| DOCKER_ARGS="--rm -p 7860:7860 --user 1000:1000 \ |
| -e ENABLE_DEBUG_TAB=true \ |
| -e VOCAB_SOURCE=norvig \ |
| -e DIFFICULTY_WEIGHT=0.2" |
|
|
| IMAGE_NAME="crossword-py-ai:hf" |
|
|
| |
| run_gpu() { |
| echo "π Running in GPU mode..." |
| docker run --gpus all $DOCKER_ARGS $IMAGE_NAME |
| } |
|
|
| |
| run_cpu() { |
| echo "π₯οΈ Running in CPU-only mode..." |
| docker run $DOCKER_ARGS $IMAGE_NAME |
| } |
|
|
| |
| check_gpu_available() { |
| if ! command -v nvidia-smi &> /dev/null; then |
| return 1 |
| fi |
|
|
| if ! docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi &> /dev/null; then |
| return 1 |
| fi |
|
|
| return 0 |
| } |
|
|
| |
| case "$MODE" in |
| gpu) |
| echo "π Checking GPU support..." |
| if check_gpu_available; then |
| run_gpu |
| else |
| echo "β Error: GPU mode requested but GPU support not available!" |
| echo "" |
| echo "To enable GPU support:" |
| echo "1. Install nvidia-container-toolkit:" |
| echo " sudo apt-get update" |
| echo " sudo apt-get install -y nvidia-container-toolkit" |
| echo " sudo systemctl restart docker" |
| echo "" |
| echo "2. Or use CPU mode: $0 cpu" |
| exit 1 |
| fi |
| ;; |
| cpu) |
| run_cpu |
| ;; |
| auto) |
| echo "π Auto-detecting GPU support..." |
| if check_gpu_available; then |
| echo "β
GPU support detected" |
| run_gpu |
| else |
| echo "βΉοΈ GPU not available, falling back to CPU mode" |
| run_cpu |
| fi |
| ;; |
| esac |
|
|