scripts/start-ollama-cuda.sh

80 lines

1#!/bin/bash
2
3# {{{ setup_dir_path
4setup_dir_path() {
5 if [ -n "$1" ]; then
6 echo "$1"
7 else
8 echo "/mnt/mtwo/programming/ai-stuff/neocities-modernization"
9 fi
10}
11# }}}
12
13DIR=$(setup_dir_path "$1")
14
15# Issue 8-059: ensure the tmpfs-backed tmp/ symlink exists before any
16# write into it.
17"${DIR}/scripts/ensure-tmp-symlink" "${DIR}"
18OLLAMA_LOG="${DIR}/tmp/ollama-cuda.log"
19
20echo "================================="
21echo "🔧 CUDA-Enabled Ollama Startup"
22echo "================================="
23echo "Starting Ollama with CUDA support on port 10265..."
24echo ""
25
26# Set up environment for CUDA-compiled Ollama
27OLLAMA_PROJECT_DIR="/mnt/mtwo/programs/ollama"
28OLLAMA_BIN="${OLLAMA_PROJECT_DIR}/local/ollama/bin"
29
30export PATH="${OLLAMA_PROJECT_DIR}/local/gcc13/bin:${OLLAMA_PROJECT_DIR}/local/cuda/bin:$PATH"
31export LD_LIBRARY_PATH="${OLLAMA_PROJECT_DIR}/local/gcc13/lib64:${OLLAMA_PROJECT_DIR}/local/cuda/lib64:${OLLAMA_PROJECT_DIR}/local/ollama/lib:$LD_LIBRARY_PATH"
32export CUDA_HOME="${OLLAMA_PROJECT_DIR}/local/cuda"
33
34# Set Ollama to bind to port 10265 (router accessible)
35export OLLAMA_HOST="192.168.0.115:10265"
36
37echo "Environment configured:"
38echo "• CUDA_HOME: $CUDA_HOME"
39echo "• OLLAMA_HOST: $OLLAMA_HOST"
40echo "• Binary path: ${OLLAMA_BIN}/ollama-run"
41echo ""
42
43# Check if Ollama is already running on port 10265
44echo "Checking if Ollama is already running on port 10265..."
45if curl -s --max-time 2 "http://${OLLAMA_HOST}/api/tags" > /dev/null 2>&1; then
46 echo "✓ Ollama is already running on ${OLLAMA_HOST}"
47 exit 0
48fi
49
50echo "Starting Ollama service..."
51echo "Command: OLLAMA_HOST=${OLLAMA_HOST} ${OLLAMA_BIN}/ollama-run serve"
52echo ""
53
54# Start Ollama service with CUDA support
55OLLAMA_HOST="${OLLAMA_HOST}" "${OLLAMA_BIN}/ollama-run" serve > "${OLLAMA_LOG}" 2>&1 &
56OLLAMA_PID=$!
57
58echo "Ollama started with PID: $OLLAMA_PID"
59echo "Waiting for service to initialize..."
60sleep 5
61
62# Verify the service started successfully
63if curl -s --max-time 5 "http://${OLLAMA_HOST}/api/tags" > /dev/null 2>&1; then
64 echo "✅ Ollama CUDA service started successfully on ${OLLAMA_HOST}"
65 echo "✅ Version: $(OLLAMA_HOST="${OLLAMA_HOST}" "${OLLAMA_BIN}/ollama-run" --version 2>&1 | grep -o 'client version is [0-9.]*' || echo 'CUDA-compiled version')"
66 echo ""
67 echo "🔧 Service management:"
68 echo "• Logs: tail -f ${OLLAMA_LOG}"
69 echo "• Stop: kill $OLLAMA_PID"
70 echo "• Status: curl -s ${OLLAMA_HOST}/api/tags"
71 echo ""
72 echo "🚀 Ready for embedding operations!"
73else
74 echo "❌ Failed to start Ollama service"
75 echo "Check logs: ${OLLAMA_LOG}"
76 echo "Process status:"
77 ps aux | grep ollama
78 exit 1
79fi
80