Views
No views yet
| Quant | Tamaño |
|---|---|
Q4_K_M | 20.5 GiB |
Q5_K_M | 23.9 GiB |
Q6_K | 27.4 GiB |
Q8_0 | 37.8 GiB |
1#!/usr/bin/env bash
2# build_llamacpp_auto.sh
3# Compila llama.cpp (llama-cli + llama-quantize) detectando automáticamente
4# la arquitectura CUDA de las GPUs presentes (A40=86, RTX 4090=89, A100=80,
5# H100=90, RTX PRO 6000 Blackwell=120, etc.)
6#
7# Uso:
8# ./build_llamacpp_auto.sh # desde la raíz de llama.cpp
9# ./build_llamacpp_auto.sh /ruta/llama.cpp # o pasando la ruta
10# CUDA_ARCHS=86 ./build_llamacpp_auto.sh # forzar arquitectura manualmente
11
12set -euo pipefail
13
14LLAMA_DIR="${1:-.}"
15BUILD_DIR="build-cuda"
16TARGETS="llama-cli llama-quantize llama-server"
17
18cd "$LLAMA_DIR"
19
20if [[ ! -f CMakeLists.txt ]]; then
21 echo "ERROR: no se encontró CMakeLists.txt en $(pwd). ¿Estás en la raíz de llama.cpp?" >&2
22 exit 1
23fi
24
25# ---------------------------------------------------------------
26# 1. Detectar arquitecturas CUDA
27# ---------------------------------------------------------------
28detect_archs() {
29 # Permitir override manual: CUDA_ARCHS=86 o CUDA_ARCHS="80;86"
30 if [[ -n "${CUDA_ARCHS:-}" ]]; then
31 echo "$CUDA_ARCHS"
32 return 0
33 fi
34
35 # Método principal: nvidia-smi (drivers >= 470 soportan compute_cap)
36 if command -v nvidia-smi &>/dev/null; then
37 local caps
38 caps=$(nvidia-smi --query-gpu=compute_cap --format=csv,noheader 2>/dev/null \
39 | tr -d ' ' | grep -E '^[0-9]+\.[0-9]+$' || true)
40 if [[ -n "$caps" ]]; then
41 # "8.6" -> "86", "12.0" -> "120"; deduplicar y unir con ';'
42 echo "$caps" | tr -d '.' | sort -un | paste -sd ';' -
43 return 0
44 fi
45 fi
46
47 # Fallback 1: CMake >= 3.24 acepta "native" (nvcc detecta la GPU local)
48 local cmake_ver
49 cmake_ver=$(cmake --version | head -n1 | grep -oE '[0-9]+\.[0-9]+' | head -n1)
50 if [[ -n "$cmake_ver" ]] && awk -v v="$cmake_ver" 'BEGIN{split(v,a,"."); exit !(a[1]>3 || (a[1]==3 && a[2]>=24))}'; then
51 echo "native"
52 return 0
53 fi
54
55 return 1
56}
57
58ARCHS=$(detect_archs) || {
59 echo "ERROR: no pude detectar la arquitectura de la GPU." >&2
60 echo " - Verifica que nvidia-smi funcione, o" >&2
61 echo " - Fuerza el valor: CUDA_ARCHS=86 $0" >&2
62 exit 1
63}
64
65# ---------------------------------------------------------------
66# 2. Info y validaciones
67# ---------------------------------------------------------------
68echo "=== GPUs detectadas ==="
69nvidia-smi --query-gpu=name,compute_cap,memory.total --format=csv,noheader 2>/dev/null || echo "(nvidia-smi no disponible)"
70echo "CMAKE_CUDA_ARCHITECTURES=$ARCHS"
71
72# Advertencia: sm_120 (Blackwell) requiere CUDA 12.8+
73if [[ "$ARCHS" == *"120"* ]] && command -v nvcc &>/dev/null; then
74 CUDA_VER=$(nvcc --version | grep -oE 'release [0-9]+\.[0-9]+' | grep -oE '[0-9]+\.[0-9]+')
75 if awk -v v="$CUDA_VER" 'BEGIN{split(v,a,"."); exit !(a[1]<12 || (a[1]==12 && a[2]<8))}'; then
76 echo "ADVERTENCIA: sm_120 (Blackwell) requiere CUDA >= 12.8, tienes $CUDA_VER" >&2
77 fi
78fi
79
80# ---------------------------------------------------------------
81# 3. Compilar
82# ---------------------------------------------------------------
83rm -rf "$BUILD_DIR"
84cmake -B "$BUILD_DIR" \
85 -DGGML_CUDA=ON \
86 -DCMAKE_CUDA_ARCHITECTURES="$ARCHS" \
87 -DBUILD_SHARED_LIBS=OFF \
88 -DLLAMA_CURL=OFF \
89 > /dev/null
90
91cmake --build "$BUILD_DIR" --config Release -j "$(nproc)" --target $TARGETS > /dev/null
92
93echo ""
94echo "✅ Compilado para arquitectura(s): $ARCHS"
95echo "Binarios en: $(pwd)/$BUILD_DIR/bin/"
96ls -lh "$BUILD_DIR/bin/" | grep -E 'llama-(cli|quantize)' || true
97hf download tepirale/Ornith-Agents-A1-3.7-35B-A3B-dare_ties_v4-MTP-GGUF \
--include "Ornith-Agents-A1-3.7-35B-A3B-dare_ties_v4-mtp-sidecar.gguf" \ # optional
--include "mmproj-F32.gguf" \ # optional
--local-dir /workspace/models/Ornith-Agents-A1-3.7-35B-A3B-dare_ties_v4-MTP-GGUF1./build-cuda/bin/llama-server \
2 -m /content/work/gguf/Ornith-Agents-A1-3.7-35B-A3B-dare_ties_v4-Q8_0.gguf \
3 --mmproj /content/work/gguf/mmproj-F32.gguf \
4 --image-min-tokens 1024 \
5 -ngl 999 \
6 -c 51504 \
7 --slots \
8 # --parallel 2 \
9 --slots 1
10 --spec-type draft-mtp \
11 --spec-draft-n-max 3 \
12 --spec-draft-n-min 1 \
13 --host 0.0.0.0 \
14 --port 8080 \
15 --flash-attn on \
16 --batch-size 4096 \
17 --ubatch-size 1024 \
18 --api-key tu-clave-secreta \
19 --dry-multiplier 0.8 \
20 --spec-draft-p-min 0.7 \
21 --temp 1 \
22 --top-p 0.95 \
23 --top-k 20 \
24 --min-p 0.0 \
25 --presence-penalty 0.0 \
26 --repeat-penalty 1.0 \
27 --parallel 1 \
28 --log-verbosity 4 \
29 --cache-idle-slots \
30 --reasoning-preserve \
31 --no-mma \
32 --alias "Ornith-Agents-A1-v4" \
33 --metrics