# syntax=docker/dockerfile:1.7
# DeepSeek-V4-Flash-DSpark — instanttensor on top of
# aidendle94/sparkrun-vllm-ds4-gb10:production-3.75
#
# production-3.75 already ships the patched NCCL 2.30.4 ABI (its base layers
# are byte-identical to production-3.2, which is labeled "patched NCCL
# 2.30.4"), so no NCCL re-alignment is needed. This overlay only adds
# instanttensor for faster model loading (load-format instanttensor).
#
# Build: cd docker-images/deepseek-v4-flash-dspark && docker build -t sparkrun-vllm-ds4-gb10:fixed .
# Tag:   docker tag sparkrun-vllm-ds4-gb10:fixed aidendle94/sparkrun-vllm-ds4-gb10:production-3.75

FROM aidendle94/sparkrun-vllm-ds4-gb10:production-3.75

RUN pip install --no-cache-dir --no-deps --force-reinstall instanttensor==0.1.9

# Fix reasoning_effort handling in the vendored deepseek_v4 tokenizer:
# - high was accepted but silently injected nothing (only max triggered text)
# - low / unknown values were coerced to high (unreachable low, silent escalation)
# - only a single REASONING_EFFORT_MAX wording existed (max used the "high" text)
# Replaces the single constant with a low/high/max dict using the full model-card
# wording and injects for both high and max. See deepseek_v4_encoding.py gate.
# (Mirrors the local-inference-lab encoding_dsv4.py reference implementation.)
COPY patches/deepseek_v4.py \
     patches/deepseek_v4_encoding.py \
     /opt/venv/lib/python3.12/site-packages/vllm/tokenizers/
