Jelajahi Sumber

builds: persistent per-node buildkit cache (buildx --cache-from/to, mode=max) so version-independent apt/torch/CUDA stages are reused across recipes

Alexander Korolev 1 bulan lalu
induk
melakukan
3fa8ac759b

+ 9 - 1
docker-images/deepseek-v4-flash-dspark-src/build.sh

@@ -22,5 +22,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/deepseek-v4-flash-dspark/build.sh

@@ -4,5 +4,13 @@ set -euo pipefail
 cd "$(dirname "$0")"
 TAG="${TAG:-sparkrun-vllm-ds4-gb10:fixed}"
 echo "=== Building ${TAG} ==="
-docker build --progress=plain -t "${TAG}" . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/deepseek-v4-flash-dspark38/build.sh

@@ -4,5 +4,13 @@ set -euo pipefail
 cd "$(dirname "$0")"
 TAG="${TAG:-sparkrun-vllm-ds4-gb10:dspark38}"
 echo "=== Building ${TAG} ==="
-docker build --progress=plain -t "${TAG}" . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/deepseek-v4-flash-eugr/build.sh

@@ -6,5 +6,13 @@ set -euo pipefail
 cd "$(dirname "$0")"
 TAG="${TAG:-eugr/spark-vllm-b12x:sm121}"
 echo "=== Building ${TAG} ==="
-docker build --progress=plain -t "${TAG}" . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/dsv4-flash-vision/build.sh

@@ -20,5 +20,13 @@ done < versions.env
 [ -n "${BASE_IMAGE:-}" ] && ARGS+=(--build-arg "BASE_IMAGE=${BASE_IMAGE}")
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm52-nf3-hybrid/build.sh

@@ -22,5 +22,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm52/build.sh

@@ -5,5 +5,13 @@ set -euo pipefail
 cd "$(dirname "$0")"
 TAG="${TAG:-sparkrun-vllm-ds4-gb10:glm52}"
 echo "=== Building ${TAG} ==="
-docker build --progress=plain -t "${TAG}" . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm53-flash-aiden/build.sh

@@ -3,5 +3,13 @@ set -euo pipefail
 cd "$(dirname "$0")"
 TAG="${TAG:-sparkrun-vllm-glm53-flash-aiden:glm53}"
 echo "=== Building ${TAG} ==="
-docker build --progress=plain -t "${TAG}" . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm53-flash-dflash2/build.sh

@@ -20,5 +20,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm53-flash-exl3/build.sh

@@ -20,5 +20,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm53-flash-nvfp4-4p67/build.sh

@@ -20,5 +20,13 @@ while read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm53-flash-nvfp4-lab/build.sh

@@ -20,5 +20,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm53-flash-nvfp4/build.sh

@@ -18,5 +18,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/glm53-jovian-r27/build.sh

@@ -20,5 +20,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/qwen38-flashnext-nvfp4/build.sh

@@ -18,5 +18,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="

+ 9 - 1
docker-images/solar-open2-nvfp4/build.sh

@@ -22,5 +22,13 @@ while IFS= read -r line; do
 done < versions.env
 
 echo "=== Building ${TAG} ==="
-DOCKER_BUILDKIT=1 docker build "${ARGS[@]}" --progress=plain -t "${TAG}" -f Dockerfile . 2>&1
+# Persistent buildkit cache (per node, shared across image dirs): the
+# version-independent stages (apt, torch, CUDA base) are reused across
+# rebuilds — only the pinned source stages (vllm/b12x/…) re-download and
+# re-compile. Override the dir with SM121_BUILDKIT_CACHE if desired.
+CACHE_DIR="${SM121_BUILDKIT_CACHE:-$HOME/sm121-cache/buildkit}"
+mkdir -p "${CACHE_DIR}"
+docker buildx build "${ARGS[@]}" --cache-from "type=local,src=${CACHE_DIR}" \
+    --cache-to "type=local,dest=${CACHE_DIR},mode=max" \
+    --progress=plain --load -t "${TAG}" -f Dockerfile . 2>&1
 echo "=== Done: ${TAG} ==="