Spaces:
Sleeping
Sleeping
| CLARITYWORKING.TXT | |
| Estado: FUNCIONANDO EN HUGGING FACE SPACE CON GPU | |
| Fecha de validacion: 2026-05-08 | |
| Resumen corto | |
| -------------- | |
| ClarityGuardAgent quedo funcionando con llama-server precompilado, CUDA 12.6.3, | |
| modelo ClarityGuard-v2 y projector multimodal v2. El Space arranco, detecto GPU, | |
| cargo el modelo, cargo el mmproj multimodal, proceso texto e imagen, y respondio | |
| HTTP 200 por /v1/chat/completions. | |
| Ruta local del Space usado | |
| -------------------------- | |
| /home/charlie/Documents/claritynew/ClarityGuardAgent | |
| Repo remoto del Space | |
| --------------------- | |
| https://huggingface.co/spaces/CharlieBonito/ClarityGuardAgent | |
| Modelo remoto usado por app.py | |
| ------------------------------ | |
| MODEL_REPO = CharlieBonito/clarity-guard-gemma4-7b | |
| MODEL_FILE = ClarityGuard-v2.gguf | |
| MMPROJ_FILE = mmproj-ClarityGuard-v2.gguf | |
| Archivos GGUF activos en Hugging Face | |
| ------------------------------------- | |
| ClarityGuard-v2.gguf | |
| mmproj-ClarityGuard-v2.gguf | |
| Archivos GGUF antiguos eliminados del repo del modelo | |
| ----------------------------------------------------- | |
| Checkpoint-375-Ollama-Clean-7.5B-Q4_K_M.gguf | |
| mmproj-Checkpoint-375-Ollama-Clean-BF16.gguf | |
| Dockerfile que funciono | |
| ----------------------- | |
| Base image: | |
| nvidia/cuda:12.6.3-runtime-ubuntu22.04 | |
| El Dockerfile NO compila llama.cpp en Hugging Face. Copia binarios precompilados: | |
| COPY bin/llama-server /opt/llama-cpp/llama-server | |
| COPY bin/*.so* /usr/local/lib/ | |
| Paquetes runtime principales: | |
| python3 | |
| python3-pip | |
| git | |
| git-lfs | |
| curl | |
| libgomp1 | |
| Binario llama-server que funciono | |
| --------------------------------- | |
| El binario fue recompilado localmente dentro de Docker con CUDA 12.6.3 devel, | |
| no con el CUDA local de la maquina. Esto evita que el binario pida libcudart.so.13. | |
| Build directory local: | |
| /home/charlie/Documents/llama.cpp/build-cuda126-75-89 | |
| Arquitecturas CUDA compiladas: | |
| CMAKE_CUDA_ARCHITECTURES=75;89 | |
| Esto cubre: | |
| 75 = NVIDIA Tesla T4 | |
| 89 = NVIDIA L4 / Ada | |
| Comando conceptual usado | |
| ------------------------ | |
| Se compilo con CUDA 12.6.3 devel y flags equivalentes a: | |
| cmake -B build-cuda126-75-89 \ | |
| -DGGML_CUDA=ON \ | |
| -DCMAKE_CUDA_ARCHITECTURES="75;89" \ | |
| -DGGML_NATIVE=OFF \ | |
| -DGGML_LLAMAFILE=OFF \ | |
| -DGGML_OPENMP=ON \ | |
| -DGGML_AVX512=OFF \ | |
| -DGGML_AVX512_VBMI=OFF \ | |
| -DGGML_AVX512_VNNI=OFF \ | |
| -DGGML_AVX512_BF16=OFF \ | |
| -DCMAKE_CXX_FLAGS="-march=x86-64-v2" \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=OFF | |
| Tambien se uso linker contra los CUDA stubs para poder compilar sin driver NVIDIA | |
| dentro del contenedor de build. En runtime, Hugging Face provee libcuda.so.1 desde | |
| el driver del host GPU. | |
| Dependencias verificadas del binario final | |
| ------------------------------------------ | |
| El binario final pide CUDA 12, no CUDA 13: | |
| libcudart.so.12 | |
| libcublas.so.12 | |
| libcublasLt.so.12 | |
| libnccl.so.2 | |
| Importante: | |
| libcuda.so.1 puede aparecer como "not found" en Docker local sin NVIDIA runtime. | |
| Eso es normal. En Hugging Face con GPU, libcuda.so.1 la provee el driver del host. | |
| Commits importantes | |
| ------------------- | |
| 7a88bb3 Update to ClarityGuard-v2 checkpoint-750 | |
| 46995ed Remove old Checkpoint-375 GGUF files | |
| 65593ac Fix: use prebuilt llama-server binary, update to ClarityGuard-v2 | |
| d27e6ea Fix: use CUDA 12.6 image for libcudart.so.13 compatibility | |
| cc68cc4 Fix: rebuild llama-server for CUDA 12.6 L4 | |
| 86be4c3 Fix: rebuild llama-server for CUDA 12.6 T4 and L4 | |
| Ultimo commit funcional conocido: | |
| 86be4c3 Fix: rebuild llama-server for CUDA 12.6 T4 and L4 | |
| Problema anterior | |
| ----------------- | |
| El primer binario subido habia sido compilado en la maquina local contra CUDA 13. | |
| Por eso el Space fallaba con: | |
| libcudart.so.13: cannot open shared object file: No such file or directory | |
| Cambiar solo el Dockerfile a CUDA 12.6 no era suficiente porque el binario seguia | |
| enlazado a CUDA 13. La solucion real fue recompilar llama-server contra CUDA 12.6. | |
| Senales exactas del log que confirman que funciono | |
| -------------------------------------------------- | |
| El contenedor arranco con CUDA 12.6.3: | |
| CUDA Version 12.6.3 | |
| El Space detecto GPU: | |
| ggml_cuda_init: found 1 CUDA devices | |
| GPU detectada: | |
| Device 0: Tesla T4, compute capability 7.5, VMM: yes, VRAM: 15095 MiB | |
| El binario contiene kernels para T4 y L4: | |
| CUDA : ARCHS = 750,890 | |
| El modelo se cargo en GPU: | |
| llama_model_load_from_file_impl: using device CUDA0 (Tesla T4) | |
| Capas offload a GPU: | |
| load_tensors: offloading output layer to GPU | |
| load_tensors: offloading 41 repeating layers to GPU | |
| load_tensors: offloaded 43/43 layers to GPU | |
| Buffers principales: | |
| CPU model buffer size = 2730.00 MiB | |
| CUDA0 model buffer size = 2868.05 MiB | |
| CUDA0 KV buffer size = 192.00 MiB | |
| CUDA0 compute buffer size = 574.02 MiB | |
| Projector multimodal cargo: | |
| srv load_model: loaded multimodal model, '/app/models/mmproj-ClarityGuard-v2.gguf' | |
| Vision en GPU: | |
| clip_ctx: CLIP using CUDA0 backend | |
| has vision encoder | |
| Audio en GPU: | |
| has audio encoder | |
| clip_ctx: CLIP using CUDA0 backend | |
| Servidor activo: | |
| main: server is listening on http://127.0.0.1:8080 | |
| main: starting the main loop... | |
| Primera request texto respondio: | |
| done request: POST /v1/chat/completions 127.0.0.1 200 | |
| Request multimodal con imagen respondio: | |
| processing image... | |
| image slice encoded in 264 ms | |
| image decoded (batch 1/1) in 102 ms | |
| image processed in 366 ms | |
| done request: POST /v1/chat/completions 127.0.0.1 200 | |
| Rendimiento observado | |
| --------------------- | |
| Request texto: | |
| prompt eval: 4364 tokens en 2708.55 ms = 1611.20 tokens/s | |
| generation: 1516 tokens en 32369.46 ms = 46.83 tokens/s | |
| total: 5880 tokens en 35078.01 ms | |
| Request con imagen: | |
| prompt eval: 5699 tokens en 3776.40 ms = 1509.11 tokens/s | |
| generation: 1456 tokens en 31612.40 ms = 46.06 tokens/s | |
| total: 7155 tokens en 35388.80 ms | |
| Configuracion runtime funcional | |
| ------------------------------- | |
| CPU_THREADS=8 | |
| LLAMA_CTX=12288 | |
| LLAMA_MAX_TOKENS=8192 | |
| LLAMA_BATCH=1024 | |
| LLAMA_UBATCH=512 | |
| LLAMA_GPU_LAYERS=999 | |
| MMPROJ_OFFLOAD=True | |
| RAG_TOP_K=4 | |
| RAG_MAX_CONTEXT_CHARS=9000 | |
| Comando efectivo de llama-server | |
| -------------------------------- | |
| /opt/llama-cpp/llama-server \ | |
| -m /app/models/ClarityGuard-v2.gguf \ | |
| --host 127.0.0.1 \ | |
| --port 8080 \ | |
| -c 12288 \ | |
| -ngl 999 \ | |
| -t 8 \ | |
| -tb 8 \ | |
| -np 1 \ | |
| -b 1024 \ | |
| -ub 512 \ | |
| --threads-http 2 \ | |
| --fit off \ | |
| --no-mmap \ | |
| --jinja \ | |
| --mmproj /app/models/mmproj-ClarityGuard-v2.gguf | |
| Nota sobre mensaje "CPU-only" | |
| ----------------------------- | |
| El log de app.py dice "Lanzando llama-server CPU-only", pero ese texto esta | |
| desactualizado. No significa que este corriendo en CPU. El comando incluye | |
| -ngl 999 y el log de llama.cpp confirma CUDA0, offload 43/43 capas, CLIP en GPU | |
| y CUDA ARCHS = 750,890. | |
| Nota sobre Hugging Face token | |
| ----------------------------- | |
| El log mostro: | |
| Warning: You are sending unauthenticated requests to the HF Hub. | |
| Eso no rompio el arranque. Solo puede afectar limites o velocidad de descarga. | |
| Si se quiere evitar, configurar HF_TOKEN como secret del Space. | |
| Conclusion | |
| ---------- | |
| La combinacion que funciono fue: | |
| 1. Docker runtime nvidia/cuda:12.6.3-runtime-ubuntu22.04. | |
| 2. llama-server precompilado con CUDA 12.6. | |
| 3. CMAKE_CUDA_ARCHITECTURES=75;89. | |
| 4. binarios subidos al Space por Git LFS. | |
| 5. modelo ClarityGuard-v2.gguf. | |
| 6. mmproj-ClarityGuard-v2.gguf. | |
| 7. LLAMA_GPU_LAYERS=999 y MMPROJ_OFFLOAD=True. | |
| Estado final: | |
| FUNCIONA EN GPU T4 Y DEBE FUNCIONAR TAMBIEN EN L4 PORQUE EL BINARIO INCLUYE | |
| KERNELS CUDA PARA 75 Y 89. | |