File size: 2,718 Bytes
1cecbce |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
#!/bin/bash
set -e # Exit on error
# Function to show usage
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 ""
}
# Parse command line arguments
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
# Common Docker run arguments
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"
# Function to run with GPU
run_gpu() {
echo "π Running in GPU mode..."
docker run --gpus all $DOCKER_ARGS $IMAGE_NAME
}
# Function to run with CPU only
run_cpu() {
echo "π₯οΈ Running in CPU-only mode..."
docker run $DOCKER_ARGS $IMAGE_NAME
}
# Function to check GPU availability
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
}
# Execute based on mode
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
|