| | #!/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 |
| |
|