Spaces:
Sleeping
Sleeping
Commit
·
dca816b
1
Parent(s):
2718c7b
Upd bash scripts
Browse files
build.sh
CHANGED
|
@@ -5,31 +5,131 @@
|
|
| 5 |
echo "🏗️ MedAI Processing Build Script"
|
| 6 |
echo "=================================="
|
| 7 |
|
| 8 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
if [ "$1" = "local" ]; then
|
| 10 |
-
|
| 11 |
-
docker build --build-arg IS_LOCAL=true -t medai-processing:local .
|
| 12 |
elif [ "$1" = "cloud" ]; then
|
| 13 |
-
|
| 14 |
-
docker build --build-arg IS_LOCAL=false -t medai-processing:cloud .
|
| 15 |
else
|
| 16 |
-
|
|
|
|
|
|
|
|
|
|
| 17 |
echo ""
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
|
|
|
|
|
|
| 25 |
fi
|
| 26 |
|
| 27 |
echo ""
|
| 28 |
-
echo "
|
| 29 |
echo ""
|
| 30 |
-
|
| 31 |
-
if
|
| 32 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
else
|
| 34 |
-
echo "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
fi
|
|
|
|
| 5 |
echo "🏗️ MedAI Processing Build Script"
|
| 6 |
echo "=================================="
|
| 7 |
|
| 8 |
+
# Function to prompt user for yes/no
|
| 9 |
+
prompt_yes_no() {
|
| 10 |
+
local prompt="$1"
|
| 11 |
+
local response
|
| 12 |
+
while true; do
|
| 13 |
+
read -p "$prompt (y/n): " response
|
| 14 |
+
case $response in
|
| 15 |
+
[Yy]* ) return 0;;
|
| 16 |
+
[Nn]* ) return 1;;
|
| 17 |
+
* ) echo "Please answer yes (y) or no (n).";;
|
| 18 |
+
esac
|
| 19 |
+
done
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
# Function to get environment variables
|
| 23 |
+
get_env_vars() {
|
| 24 |
+
local mode="$1"
|
| 25 |
+
local env_vars=""
|
| 26 |
+
|
| 27 |
+
if [ "$mode" = "local" ]; then
|
| 28 |
+
echo "🔑 Please provide your Hugging Face token:"
|
| 29 |
+
read -p "HF_TOKEN: " hf_token
|
| 30 |
+
if [ -n "$hf_token" ]; then
|
| 31 |
+
env_vars="-e HF_TOKEN=$hf_token"
|
| 32 |
+
else
|
| 33 |
+
echo "⚠️ Warning: No HF_TOKEN provided. Model download may fail."
|
| 34 |
+
fi
|
| 35 |
+
else
|
| 36 |
+
echo "🔑 Please provide your API keys:"
|
| 37 |
+
read -p "NVIDIA_API_1: " nvidia_key
|
| 38 |
+
read -p "GEMINI_API_1: " gemini_key
|
| 39 |
+
|
| 40 |
+
if [ -n "$nvidia_key" ]; then
|
| 41 |
+
env_vars="$env_vars -e NVIDIA_API_1=$nvidia_key"
|
| 42 |
+
fi
|
| 43 |
+
if [ -n "$gemini_key" ]; then
|
| 44 |
+
env_vars="$env_vars -e GEMINI_API_1=$gemini_key"
|
| 45 |
+
fi
|
| 46 |
+
|
| 47 |
+
if [ -z "$nvidia_key" ] && [ -z "$gemini_key" ]; then
|
| 48 |
+
echo "⚠️ Warning: No API keys provided. Processing may fail."
|
| 49 |
+
fi
|
| 50 |
+
fi
|
| 51 |
+
|
| 52 |
+
echo "$env_vars"
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
# Check if mode is specified as argument
|
| 56 |
if [ "$1" = "local" ]; then
|
| 57 |
+
MODE="local"
|
|
|
|
| 58 |
elif [ "$1" = "cloud" ]; then
|
| 59 |
+
MODE="cloud"
|
|
|
|
| 60 |
else
|
| 61 |
+
# Interactive mode selection
|
| 62 |
+
echo "Please select the runtime mode:"
|
| 63 |
+
echo "1) Local mode (MedAlpaca-13b) - No API costs, complete privacy"
|
| 64 |
+
echo "2) Cloud mode (NVIDIA/Gemini APIs) - Faster processing, requires API keys"
|
| 65 |
echo ""
|
| 66 |
+
|
| 67 |
+
while true; do
|
| 68 |
+
read -p "Enter your choice (1 or 2): " choice
|
| 69 |
+
case $choice in
|
| 70 |
+
1) MODE="local"; break;;
|
| 71 |
+
2) MODE="cloud"; break;;
|
| 72 |
+
*) echo "Please enter 1 for local mode or 2 for cloud mode.";;
|
| 73 |
+
esac
|
| 74 |
+
done
|
| 75 |
fi
|
| 76 |
|
| 77 |
echo ""
|
| 78 |
+
echo "Selected mode: $MODE"
|
| 79 |
echo ""
|
| 80 |
+
|
| 81 |
+
# Ask if user wants to build/rebuild Docker image
|
| 82 |
+
if prompt_yes_no "Would you like to build/rebuild the Docker image?"; then
|
| 83 |
+
echo ""
|
| 84 |
+
if [ "$MODE" = "local" ]; then
|
| 85 |
+
echo "🏠 Building in LOCAL mode (MedAlpaca-13b)..."
|
| 86 |
+
docker build --build-arg IS_LOCAL=true -t medai-processing:local .
|
| 87 |
+
else
|
| 88 |
+
echo "☁️ Building in CLOUD mode (NVIDIA/Gemini APIs)..."
|
| 89 |
+
docker build --build-arg IS_LOCAL=false -t medai-processing:cloud .
|
| 90 |
+
fi
|
| 91 |
+
|
| 92 |
+
if [ $? -eq 0 ]; then
|
| 93 |
+
echo ""
|
| 94 |
+
echo "✅ Build completed successfully!"
|
| 95 |
+
else
|
| 96 |
+
echo ""
|
| 97 |
+
echo "❌ Build failed! Please check the error messages above."
|
| 98 |
+
exit 1
|
| 99 |
+
fi
|
| 100 |
+
else
|
| 101 |
+
echo "⏭️ Skipping Docker build..."
|
| 102 |
+
fi
|
| 103 |
+
|
| 104 |
+
echo ""
|
| 105 |
+
|
| 106 |
+
# Ask if user wants to run the container
|
| 107 |
+
if prompt_yes_no "Would you like to run the Docker container now?"; then
|
| 108 |
+
echo ""
|
| 109 |
+
echo "🚀 Starting Docker container..."
|
| 110 |
+
|
| 111 |
+
# Get environment variables
|
| 112 |
+
ENV_VARS=$(get_env_vars "$MODE")
|
| 113 |
+
|
| 114 |
+
# Set the image name based on mode
|
| 115 |
+
if [ "$MODE" = "local" ]; then
|
| 116 |
+
IMAGE_NAME="medai-processing:local"
|
| 117 |
+
IS_LOCAL_FLAG="-e IS_LOCAL=true"
|
| 118 |
+
else
|
| 119 |
+
IMAGE_NAME="medai-processing:cloud"
|
| 120 |
+
IS_LOCAL_FLAG="-e IS_LOCAL=false"
|
| 121 |
+
fi
|
| 122 |
+
|
| 123 |
+
# Run the container
|
| 124 |
+
echo "Running: docker run -p 7860:7860 $IS_LOCAL_FLAG $ENV_VARS $IMAGE_NAME"
|
| 125 |
+
echo ""
|
| 126 |
+
docker run -p 7860:7860 $IS_LOCAL_FLAG $ENV_VARS $IMAGE_NAME
|
| 127 |
else
|
| 128 |
+
echo ""
|
| 129 |
+
echo "📋 Manual run command:"
|
| 130 |
+
if [ "$MODE" = "local" ]; then
|
| 131 |
+
echo " docker run -p 7860:7860 -e IS_LOCAL=true -e HF_TOKEN=your_token_here medai-processing:local"
|
| 132 |
+
else
|
| 133 |
+
echo " docker run -p 7860:7860 -e IS_LOCAL=false -e NVIDIA_API_1=your_key -e GEMINI_API_1=your_key medai-processing:cloud"
|
| 134 |
+
fi
|
| 135 |
fi
|