Download scripts/gpu-kontrol.sh from SevdanurGenc/LLM-Automated-Test-Generation-Agent: direct link, hf CLI and curl.
- Browser
- Download file 3.79 kB
-
https://huggingface.co/SevdanurGenc/LLM-Automated-Test-Generation-Agent/resolve/main/scripts/gpu-kontrol.sh
- Command line
-
hf download hf://SevdanurGenc/LLM-Automated-Test-Generation-Agent/scripts/gpu-kontrol.sh
-
curl -L -o gpu-kontrol.sh https://huggingface.co/SevdanurGenc/LLM-Automated-Test-Generation-Agent/resolve/main/scripts/gpu-kontrol.sh
3.79 kB
| # TestAjanı - modelin ekran kartında (GPU; Mac'te Metal) çalışıp çalışmadığını kontrol eder. | |
| # Kullanım: scripts/gpu-kontrol.sh [model] | |
| set -uo pipefail | |
| OLLAMA="${OLLAMA_HOST_URL:-http://localhost:11434}" | |
| MODEL="${1:-${OLLAMA_MODEL:-}}" | |
| command -v python3 >/dev/null || { echo "python3 gerekli."; exit 1; } | |
| j() { python3 -c "import sys,json; d=json.load(sys.stdin); print($1)"; } | |
| echo; echo "1) Ekran kartı" | |
| if command -v nvidia-smi >/dev/null; then | |
| echo " [TAMAM] NVIDIA: $(nvidia-smi --query-gpu=name,memory.used,memory.total,driver_version --format=csv,noheader | tr '\n' ' ')" | |
| elif [ "$(uname)" = "Darwin" ]; then | |
| echo " [TAMAM] macOS: Ollama Apple Silicon'da Metal (GPU) kullanır." | |
| else | |
| echo " [UYARI] nvidia-smi bulunamadı; NVIDIA sürücüsü yoksa model CPU'da çalışır." | |
| fi | |
| echo; echo "2) Ollama" | |
| TAGS=$(curl -fsS -m 5 "$OLLAMA/api/tags") || { | |
| echo " [SORUN] Ollama'ya ($OLLAMA) ulaşılamadı. Ollama'yı başlatın (ollama serve) ya da https://ollama.com/download" | |
| docker ps --format '{{.Names}}' 2>/dev/null | grep -q ollama && \ | |
| echo " [UYARI] Ollama Docker konteynerinde çalışıyor; GPU aktarımı yapılandırılmadıysa CPU kullanır." | |
| exit 1; } | |
| echo " [TAMAM] Ollama çalışıyor ($(echo "$TAGS" | j "len(d['models'])") model yüklü)" | |
| if [ -z "$MODEL" ]; then | |
| MODEL=$(curl -fsS "$OLLAMA/api/ps" | j "d['models'][0]['name'] if d['models'] else ''") | |
| [ -z "$MODEL" ] && MODEL=$(echo "$TAGS" | j "next((m['name'] for m in d['models'] if m['name']=='qwen2.5-coder:14b'), d['models'][0]['name'])") | |
| fi | |
| echo; echo "3) Model yükleme ve hız ölçümü: $MODEL" | |
| START=$(date +%s) | |
| R=$(curl -fsS -m 900 "$OLLAMA/api/generate" -d "{\"model\":\"$MODEL\",\"prompt\":\"Write a Python function that returns the sum of a list.\",\"stream\":false,\"options\":{\"num_predict\":120,\"num_ctx\":16384},\"keep_alive\":\"30m\"}") || { echo " [SORUN] Model çalıştırılamadı: ollama pull $MODEL"; exit 1; } | |
| TPS=$(echo "$R" | j "round(d['eval_count']/(d['eval_duration']/1e9),1) if d.get('eval_duration') else 0") | |
| echo " [TAMAM] Yanıt alındı ($(( $(date +%s) - START )) sn, ilk yükleme dahil). Üretim hızı: $TPS token/sn" | |
| read -r PCT VRAM SIZE < <(curl -fsS "$OLLAMA/api/ps" | python3 -c " | |
| import sys,json; m=[x for x in json.load(sys.stdin)['models'] if x['name'] in ('$MODEL','$MODEL:latest')] | |
| m=m[0] if m else {'size':0,'size_vram':0}; s=m['size'] or 0; v=m.get('size_vram') or 0 | |
| print(round(100*v/s) if s else 0, round(v/1e9,1), round(s/1e9,1))") | |
| echo; echo "Sonuç" | |
| if [ "$PCT" -ge 100 ]; then echo " [TAMAM] Model TAMAMEN ekran kartında: %100 GPU ($VRAM GB). Hız $TPS token/sn." | |
| elif [ "$PCT" -gt 0 ]; then | |
| echo " [UYARI] Modelin GPU payı yalnızca %$PCT ($VRAM / $SIZE GB); kalanı CPU'da — belirgin yavaşlar." | |
| echo " Diğer GPU uygulamalarını kapatın, başka modeli boşaltın (ollama stop <model>)," | |
| echo " daha küçük model seçin ya da OLLAMA_NUM_CTX=8192 deneyin." | |
| else echo " [SORUN] Model tamamen CPU'da çalışıyor (%0 GPU). Hız $TPS token/sn."; fi | |
| echo; echo "4) TestAjanı uygulaması" | |
| WANT=$(head -1 "$(dirname "$0")/../VERSION" 2>/dev/null) | |
| if H=$(curl -fsS -m 5 http://localhost:8000/api/health 2>/dev/null); then | |
| HAVE=$(echo "$H" | j "d.get('version','')") | |
| if [ -n "$HAVE" ] && [ "$HAVE" = "$WANT" ]; then echo " [TAMAM] Uygulama güncel (sürüm $WANT)." | |
| else echo " [UYARI] Açık olan uygulama ESKİ sürüm (${HAVE:-bilinmiyor}; klasördeki: $WANT). Başlatıcıyı çalıştırın — uygulama yeniden derlenir."; fi | |
| else echo " [UYARI] Uygulama çalışmıyor (http://localhost:8000). Başlatıcıyla başlatın."; fi | |
| echo; echo "İpucu: uygulamanın üst çubuğundaki GPU göstergesi bu bilgileri gerçek zamanlı gösterir." | |