Second-Me/docker-compose-gpu.yml
Zachary Pitroda 053090937d
Added CUDA support (#228)
* Add CUDA support

- CUDA detection
- Memory handling
- Ollama model release after training

* Fix logging issue

added cuda support flag so log accurately reflected cuda toggle

* Update llama.cpp rebuild

Changed llama.cpp to only check if cuda support is enabled and if so rebuild during the first build rather than each run

* Improved vram management

Enabled memory pinning and optimizer state offload

* Fix CUDA check

rewrote llama.cpp rebuild logic, added manual y/n toggle if user wants to enable cuda support

* Added fast restart and fixed CUDA check command

Added make docker-restart-backend-fast to restart the backend and reflect code changes without causing a full llama.cpp rebuild

Fixed make docker-check-cuda command to correctly reflect cuda support

* Added docker-compose.gpu.yml

Added docker-compose.gpu.yml to fix error on machines without nvidia gpu and made sure "\n" is added before .env modification

* Fixed cuda toggle

Last push accidentally broke cuda toggle

* Code review fixes

Fixed errors resulting from removed code:
- Added return save_path to end of save_hf_model function
- Rolled back download_file_with_progress function

* Update Makefile

Use cuda by default when using docker-restart-backend-fast

* Minor cleanup

Removed unnecessary makefile command and fixed gpu logging

* Delete .gpu_selected

* Simplified cuda training code

- Removed dtype setting to let torch automatically handle it
- Removed vram logging
- Removed Unnecessary/old comments

* Fixed gpu/cpu selection

Made "make docker-use-gpu/cpu" command work with .gpu_selected flag and changed "make docker-restart-backend-fast" command to respect flag instead of always using gpu

* Fix Ollama embedding error

Added custom exception class for Ollama embeddings, which seemed to be returning keyword arguments while the Python exception class only accepts positional ones

* Fixed model selection & memory error

Fixed training defaulting to 0.5B model regardless of selection and fixed "free(): double free detected in tcache 2" error caused by cuda flag being passed incorrectly
2025-04-25 10:20:36 +08:00

74 lines
No EOL
1.7 KiB
YAML

services:
backend:
build:
context: .
dockerfile: ${DOCKER_BACKEND_DOCKERFILE:-Dockerfile.backend.cuda}
container_name: second-me-backend
restart: unless-stopped
ports:
- "8002:8002"
- "8080:8080"
volumes:
- ./data:/app/data
- ./logs:/app/logs
- ./run:/app/run
- ./resources:/app/resources
- ./docker:/app/docker
- ./.env:/app/.env
- llama-cpp-build:/app/llama.cpp/build # Persist the llama.cpp build
environment:
# Environment variables
- LOCAL_APP_PORT=8002
- IN_DOCKER_ENV=1
- PLATFORM=${PLATFORM:-linux}
- USE_CUDA=1
extra_hosts:
- "host.docker.internal:host-gateway"
deploy:
resources:
limits:
# Set container memory limit to 64GB
memory: 64G
reservations:
# Memory reservation
memory: 6G
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
- second-me-network
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
container_name: second-me-frontend
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./logs:/app/logs
- ./resources:/app/resources
environment:
- VITE_API_BASE_URL=http://backend:8002
depends_on:
- backend
deploy:
resources:
limits:
# Set container memory limit to 2GB
memory: 2G
reservations:
# Memory reservation
memory: 1G
networks:
- second-me-network
networks:
second-me-network:
driver: bridge
volumes:
llama-cpp-build:
driver: local