- Dockerfile.finetune: PyTorch 2.3/CUDA 12.1 base + unsloth + training stack - finetune_local.py: auto-register model via Ollama HTTP API after GGUF export; path-translate between finetune container mount and Ollama's view; update config/llm.yaml automatically; DOCS_DIR env override for Docker - prepare_training_data.py: DOCS_DIR env override so make prepare-training works correctly inside the app container - compose.yml: add finetune service (cpu/single-gpu/dual-gpu profiles); DOCS_DIR=/docs injected into app + finetune containers - compose.podman-gpu.yml: CDI device override for finetune service - Makefile: make prepare-training + make finetune targets
123 lines
3.2 KiB
YAML
123 lines
3.2 KiB
YAML
# compose.yml — Peregrine by Circuit Forge LLC
|
|
# Profiles: remote | cpu | single-gpu | dual-gpu
|
|
services:
|
|
|
|
app:
|
|
build: .
|
|
ports:
|
|
- "${STREAMLIT_PORT:-8501}:8501"
|
|
volumes:
|
|
- ./config:/app/config
|
|
- ./data:/app/data
|
|
- ${DOCS_DIR:-~/Documents/JobSearch}:/docs
|
|
environment:
|
|
- STAGING_DB=/app/data/staging.db
|
|
- DOCS_DIR=/docs
|
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
|
|
- OPENAI_COMPAT_URL=${OPENAI_COMPAT_URL:-}
|
|
- OPENAI_COMPAT_KEY=${OPENAI_COMPAT_KEY:-}
|
|
depends_on:
|
|
searxng:
|
|
condition: service_healthy
|
|
restart: unless-stopped
|
|
|
|
searxng:
|
|
image: searxng/searxng:latest
|
|
ports:
|
|
- "${SEARXNG_PORT:-8888}:8080"
|
|
volumes:
|
|
- ./docker/searxng:/etc/searxng:ro
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
restart: unless-stopped
|
|
|
|
ollama:
|
|
image: ollama/ollama:latest
|
|
ports:
|
|
- "${OLLAMA_PORT:-11434}:11434"
|
|
volumes:
|
|
- ${OLLAMA_MODELS_DIR:-~/models/ollama}:/root/.ollama
|
|
- ./docker/ollama/entrypoint.sh:/entrypoint.sh
|
|
environment:
|
|
- OLLAMA_MODELS=/root/.ollama
|
|
- DEFAULT_OLLAMA_MODEL=${OLLAMA_DEFAULT_MODEL:-llama3.2:3b}
|
|
entrypoint: ["/bin/bash", "/entrypoint.sh"]
|
|
profiles: [cpu, single-gpu, dual-gpu]
|
|
restart: unless-stopped
|
|
|
|
ollama-gpu:
|
|
extends:
|
|
service: ollama
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
device_ids: ["0"]
|
|
capabilities: [gpu]
|
|
profiles: [single-gpu, dual-gpu]
|
|
|
|
vision:
|
|
build:
|
|
context: .
|
|
dockerfile: scripts/vision_service/Dockerfile
|
|
ports:
|
|
- "${VISION_PORT:-8002}:8002"
|
|
environment:
|
|
- VISION_MODEL=${VISION_MODEL:-vikhyatk/moondream2}
|
|
- VISION_REVISION=${VISION_REVISION:-2025-01-09}
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
device_ids: ["0"]
|
|
capabilities: [gpu]
|
|
profiles: [single-gpu, dual-gpu]
|
|
restart: unless-stopped
|
|
|
|
vllm:
|
|
image: vllm/vllm-openai:latest
|
|
ports:
|
|
- "${VLLM_PORT:-8000}:8000"
|
|
volumes:
|
|
- ${VLLM_MODELS_DIR:-~/models/vllm}:/models
|
|
command: >
|
|
--model /models/${VLLM_MODEL:-Ouro-1.4B}
|
|
--trust-remote-code
|
|
--max-model-len 4096
|
|
--gpu-memory-utilization 0.75
|
|
--enforce-eager
|
|
--max-num-seqs 8
|
|
--cpu-offload-gb ${CPU_OFFLOAD_GB:-0}
|
|
deploy:
|
|
resources:
|
|
reservations:
|
|
devices:
|
|
- driver: nvidia
|
|
device_ids: ["1"]
|
|
capabilities: [gpu]
|
|
profiles: [dual-gpu]
|
|
restart: unless-stopped
|
|
|
|
finetune:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.finetune
|
|
volumes:
|
|
- ${DOCS_DIR:-~/Documents/JobSearch}:/docs
|
|
- ${OLLAMA_MODELS_DIR:-~/models/ollama}:/ollama-models
|
|
- ./config:/app/config
|
|
environment:
|
|
- DOCS_DIR=/docs
|
|
- OLLAMA_URL=http://ollama:11434
|
|
- OLLAMA_MODELS_MOUNT=/ollama-models
|
|
- OLLAMA_MODELS_OLLAMA_PATH=/root/.ollama
|
|
depends_on:
|
|
ollama:
|
|
condition: service_started
|
|
profiles: [cpu, single-gpu, dual-gpu]
|
|
restart: "no"
|