feat(backend gallery): display download progress (#5687)
Some checks are pending
build backend container images / backend-jobs (bark, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f16-bark, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f16-bark) (push) Waiting to run
build backend container images / backend-jobs (bark, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-bark, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-bark) (push) Waiting to run
build backend container images / backend-jobs (bark, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-bark, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-bark) (push) Waiting to run
build backend container images / backend-jobs (bark, ubuntu:22.04, , ./, , , ./backend/Dockerfile.go, latest-bark-cpp, linux/amd64, ubuntu-latest, true, -bark-cpp) (push) Waiting to run
build backend container images / backend-jobs (bark, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-bark, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-bark) (push) Waiting to run
Tests extras backends / tests-rerankers (push) Waiting to run
build backend container images / backend-jobs (bark, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-bark, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-bark) (push) Waiting to run
build backend container images / backend-jobs (chatterbox, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-chatterbox, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-chatterbox) (push) Waiting to run
build backend container images / backend-jobs (chatterbox, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-chatterbox, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-chatterbox) (push) Waiting to run
build backend container images / backend-jobs (coqui, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f16-coqui, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f16-coqui) (push) Waiting to run
build backend container images / backend-jobs (coqui, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-coqui, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-coqui) (push) Waiting to run
build backend container images / backend-jobs (coqui, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-coqui, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-coqui) (push) Waiting to run
build backend container images / backend-jobs (coqui, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-coqui, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-coqui) (push) Waiting to run
build backend container images / backend-jobs (coqui, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-coqui, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-coqui) (push) Waiting to run
build backend container images / backend-jobs (diffusers, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-diffusers, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-diffusers) (push) Waiting to run
build backend container images / backend-jobs (diffusers, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-diffusers, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-diffusers) (push) Waiting to run
build backend container images / backend-jobs (diffusers, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-diffusers, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-diffusers) (push) Waiting to run
build backend container images / backend-jobs (diffusers, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-diffusers, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-diffusers) (push) Waiting to run
build backend container images / backend-jobs (faster-whisper, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f16-faster-whisper, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f16-faster-whisper) (push) Waiting to run
build backend container images / backend-jobs (faster-whisper, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-faster-whisper, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-faster-whisper) (push) Waiting to run
build backend container images / backend-jobs (faster-whisper, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-faster-whisper, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-faster-whisper) (push) Waiting to run
build backend container images / backend-jobs (faster-whisper, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-faster-whisper, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-faster-whisper) (push) Waiting to run
build backend container images / backend-jobs (faster-whisper, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-faster-whisper, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-faster-whisper) (push) Waiting to run
build backend container images / backend-jobs (kokoro, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f16-kokoro, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f16-kokoro) (push) Waiting to run
build backend container images / backend-jobs (kokoro, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-kokoro, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-kokoro) (push) Waiting to run
build backend container images / backend-jobs (kokoro, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-kokoro, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-kokoro) (push) Waiting to run
build backend container images / backend-jobs (kokoro, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-kokoro, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-kokoro) (push) Waiting to run
build backend container images / backend-jobs (kokoro, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-kokoro, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-kokoro) (push) Waiting to run
build backend container images / backend-jobs (rerankers, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-rerankers, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-rerankers) (push) Waiting to run
build backend container images / backend-jobs (transformers, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f16-transformers, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f16-transformers) (push) Waiting to run
build backend container images / backend-jobs (transformers, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-transformers, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-transformers) (push) Waiting to run
build backend container images / backend-jobs (transformers, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-transformers, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-transformers) (push) Waiting to run
build backend container images / backend-jobs (transformers, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-transformers, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-transformers) (push) Waiting to run
build backend container images / backend-jobs (transformers, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-transformers, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-transformers) (push) Waiting to run
Explorer deployment / build-linux (push) Waiting to run
generate and publish intel docker caches / generate_caches (intel/oneapi-basekit:2025.1.0-0-devel-ubuntu22.04, linux/amd64, ubuntu-latest) (push) Waiting to run
build container images / core-image-build (-aio-gpu-nvidia-cuda-11, ubuntu:22.04, cublas, 11, 7, true, latest-gpu-nvidia-cuda-11, latest-aio-gpu-nvidia-cuda-11, --jobs=4 --output-sync=target, linux/amd64, ubuntu-latest, false, false, -cublas-cuda11) (push) Waiting to run
build container images / core-image-build (-aio-gpu-nvidia-cuda-12, ubuntu:22.04, cublas, 12, 0, true, latest-gpu-nvidia-cuda-12, latest-aio-gpu-nvidia-cuda-12, --jobs=4 --output-sync=target, linux/amd64, ubuntu-latest, false, false, -cublas-cuda12) (push) Waiting to run
build container images / core-image-build (-aio-gpu-vulkan, ubuntu:22.04, vulkan, true, latest-gpu-vulkan, latest-aio-gpu-vulkan, --jobs=4 --output-sync=target, linux/amd64, ubuntu-latest, false, false, -vulkan) (push) Waiting to run
build container images / gh-runner (nvcr.io/nvidia/l4t-jetpack:r36.4.0, cublas, 12, 0, true, latest-nvidia-l4t-arm64, --jobs=4 --output-sync=target, linux/arm64, ubuntu-24.04-arm, true, false, -nvidia-l4t-arm64) (push) Waiting to run
Security Scan / tests (push) Waiting to run
build backend container images / backend-jobs (rerankers, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f16-rerankers, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f16-rerankers) (push) Waiting to run
build backend container images / backend-jobs (rerankers, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-rerankers, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-rerankers) (push) Waiting to run
build backend container images / backend-jobs (rerankers, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-rerankers, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-rerankers) (push) Waiting to run
build backend container images / backend-jobs (rerankers, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-rerankers, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-rerankers) (push) Waiting to run
build backend container images / backend-jobs (vllm, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f16-vllm, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f16-vllm) (push) Waiting to run
build backend container images / backend-jobs (vllm, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, ./backend, , , ./backend/Dockerfile.python, latest-gpu-intel-sycl-f32-vllm, linux/amd64, ubuntu-latest, true, -gpu-intel-sycl-f32-vllm) (push) Waiting to run
build backend container images / backend-jobs (vllm, rocm/dev-ubuntu-22.04:6.1, hipblas, ./backend, , , ./backend/Dockerfile.python, latest-gpu-rocm-hipblas-vllm, linux/amd64, ubuntu-latest, true, -gpu-rocm-hipblas-vllm) (push) Waiting to run
build backend container images / backend-jobs (vllm, ubuntu:22.04, cublas, ./backend, 11, 7, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-11-vllm, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-11-vllm) (push) Waiting to run
build backend container images / backend-jobs (vllm, ubuntu:22.04, cublas, ./backend, 12, 0, ./backend/Dockerfile.python, latest-gpu-nvidia-cuda-12-vllm, linux/amd64, ubuntu-latest, true, -gpu-nvidia-cuda-12-vllm) (push) Waiting to run
GPU tests / ubuntu-latest (1.21.x) (push) Waiting to run
build container images / hipblas-jobs (-aio-gpu-hipblas, rocm/dev-ubuntu-22.04:6.1, hipblas, true, ubuntu:22.04, latest-gpu-hipblas, latest-aio-gpu-hipblas, --jobs=3 --output-sync=target, linux/amd64, ubuntu-latest, false, -hipblas) (push) Waiting to run
build container images / core-image-build (-aio-cpu, ubuntu:22.04, , true, latest-cpu, latest-aio-cpu, --jobs=4 --output-sync=target, linux/amd64,linux/arm64, ubuntu-latest, false, auto, ) (push) Waiting to run
build container images / core-image-build (-aio-gpu-intel-f16, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f16, true, ubuntu:22.04, latest-gpu-intel-f16, latest-aio-gpu-intel-f16, --jobs=3 --output-sync=target, linux/amd64, ubuntu-latest, false, -sycl-f16) (push) Waiting to run
build container images / core-image-build (-aio-gpu-intel-f32, quay.io/go-skynet/intel-oneapi-base:latest, sycl_f32, true, ubuntu:22.04, latest-gpu-intel-f32, latest-aio-gpu-intel-f32, --jobs=3 --output-sync=target, linux/amd64, ubuntu-latest, false, -sycl-f32) (push) Waiting to run
Tests extras backends / tests-transformers (push) Waiting to run
tests / tests-linux (1.21.x) (push) Waiting to run
tests / tests-aio-container (push) Waiting to run
tests / tests-apple (1.21.x) (push) Waiting to run
Tests extras backends / tests-diffusers (push) Waiting to run
Tests extras backends / tests-coqui (push) Waiting to run

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
This commit is contained in:
Ettore Di Giacinto 2025-06-18 23:49:44 +02:00 committed by GitHub
parent add8fc35a2
commit efde0eaf83
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 61 additions and 7 deletions

View file

@ -44,7 +44,7 @@ func InstallBackend(basePath string, config *GalleryBackend, downloadStatus func
return fmt.Errorf("failed to create backend path %q: %v", backendPath, err)
}
if err := oci.ExtractOCIImage(img, backendPath); err != nil {
if err := oci.ExtractOCIImage(img, backendPath, downloadStatus); err != nil {
return fmt.Errorf("failed to extract image %q: %v", config.URI, err)
}

View file

@ -256,7 +256,7 @@ func (uri URI) DownloadFile(filePath, sha string, fileN, total int, downloadStat
return fmt.Errorf("failed to get image %q: %v", url, err)
}
return oci.ExtractOCIImage(img, filepath.Dir(filePath))
return oci.ExtractOCIImage(img, filepath.Dir(filePath), downloadStatus)
}
// Check if the file already exists

View file

@ -7,6 +7,7 @@ import (
"io"
"net/http"
"runtime"
"strconv"
"strings"
"syscall"
"time"
@ -59,11 +60,64 @@ var defaultRetryPredicate = func(err error) bool {
return false
}
// ExtractOCIImage will extract a given targetImage into a given targetDestination
func ExtractOCIImage(img v1.Image, targetDestination string) error {
reader := mutate.Extract(img)
type progressWriter struct {
written int64
total int64
fileName string
downloadStatus func(string, string, string, float64)
}
_, err := archive.Apply(context.Background(), targetDestination, reader, archive.WithNoSameOwner())
func formatBytes(bytes int64) string {
const unit = 1024
if bytes < unit {
return strconv.FormatInt(bytes, 10) + " B"
}
div, exp := int64(unit), 0
for n := bytes / unit; n >= unit; n /= unit {
div *= unit
exp++
}
return fmt.Sprintf("%.1f %ciB", float64(bytes)/float64(div), "KMGTPE"[exp])
}
func (pw *progressWriter) Write(p []byte) (int, error) {
n := len(p)
pw.written += int64(n)
if pw.total > 0 {
percentage := float64(pw.written) / float64(pw.total) * 100
//log.Debug().Msgf("Downloading %s: %s/%s (%.2f%%)", pw.fileName, formatBytes(pw.written), formatBytes(pw.total), percentage)
pw.downloadStatus(pw.fileName, formatBytes(pw.written), formatBytes(pw.total), percentage)
} else {
pw.downloadStatus(pw.fileName, formatBytes(pw.written), "", 0)
}
return n, nil
}
// ExtractOCIImage will extract a given targetImage into a given targetDestination
func ExtractOCIImage(img v1.Image, targetDestination string, downloadStatus func(string, string, string, float64)) error {
var reader io.Reader
reader = mutate.Extract(img)
if downloadStatus != nil {
var totalSize int64
layers, err := img.Layers()
if err != nil {
return err
}
for _, layer := range layers {
size, err := layer.Size()
if err != nil {
return err
}
totalSize += size
}
reader = io.TeeReader(reader, &progressWriter{total: totalSize, downloadStatus: downloadStatus})
}
_, err := archive.Apply(context.Background(),
targetDestination, reader,
archive.WithNoSameOwner())
return err
}

View file

@ -30,7 +30,7 @@ var _ = Describe("OCI", func() {
Expect(err).NotTo(HaveOccurred())
defer os.RemoveAll(dir)
err = ExtractOCIImage(img, dir)
err = ExtractOCIImage(img, dir, nil)
Expect(err).NotTo(HaveOccurred())
})
})