@@ -6,6 +6,7 @@ LAUNCHER_BINARY_NAME=local-ai-launcher
66
77CUDA_MAJOR_VERSION? =13
88CUDA_MINOR_VERSION? =0
9+ UBUNTU_VERSION? =2204
910
1011GORELEASER? =
1112
@@ -155,7 +156,16 @@ test: test-models/testmodel.ggml protogen-go
155156# #######################################################
156157
157158docker-build-aio :
158- docker build --build-arg MAKEFLAGS=" --jobs=5 --output-sync=target" -t local-ai:tests -f Dockerfile .
159+ docker build \
160+ --build-arg MAKEFLAGS=" --jobs=5 --output-sync=target" \
161+ --build-arg BASE_IMAGE=$(BASE_IMAGE ) \
162+ --build-arg IMAGE_TYPE=$(IMAGE_TYPE ) \
163+ --build-arg BUILD_TYPE=$(BUILD_TYPE ) \
164+ --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) \
165+ --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) \
166+ --build-arg UBUNTU_VERSION=$(UBUNTU_VERSION ) \
167+ --build-arg GO_TAGS=" $( GO_TAGS) " \
168+ -t local-ai:tests -f Dockerfile .
159169 BASE_IMAGE=local-ai:tests DOCKER_AIO_IMAGE=local-ai-aio:test $(MAKE ) docker-aio
160170
161171e2e-aio :
@@ -177,7 +187,16 @@ prepare-e2e:
177187 mkdir -p $(TEST_DIR )
178188 cp -rfv $(abspath ./tests/e2e-fixtures) /gpu.yaml $(TEST_DIR ) /gpu.yaml
179189 test -e $(TEST_DIR ) /ggllm-test-model.bin || wget -q https://huggingface.co/TheBloke/CodeLlama-7B-Instruct-GGUF/resolve/main/codellama-7b-instruct.Q2_K.gguf -O $(TEST_DIR ) /ggllm-test-model.bin
180- docker build --build-arg IMAGE_TYPE=core --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg CUDA_MAJOR_VERSION=12 --build-arg CUDA_MINOR_VERSION=0 -t localai-tests .
190+ docker build \
191+ --build-arg IMAGE_TYPE=core \
192+ --build-arg BUILD_TYPE=$(BUILD_TYPE ) \
193+ --build-arg BASE_IMAGE=$(BASE_IMAGE ) \
194+ --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) \
195+ --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) \
196+ --build-arg UBUNTU_VERSION=$(UBUNTU_VERSION ) \
197+ --build-arg GO_TAGS=" $( GO_TAGS) " \
198+ --build-arg MAKEFLAGS=" $( DOCKER_MAKEFLAGS) " \
199+ -t localai-tests .
181200
182201run-e2e-image :
183202 ls -liah $(abspath ./tests/e2e-fixtures)
@@ -308,6 +327,9 @@ docker:
308327 --build-arg GO_TAGS=" $( GO_TAGS) " \
309328 --build-arg MAKEFLAGS=" $( DOCKER_MAKEFLAGS) " \
310329 --build-arg BUILD_TYPE=$(BUILD_TYPE ) \
330+ --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) \
331+ --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) \
332+ --build-arg UBUNTU_VERSION=$(UBUNTU_VERSION ) \
311333 -t $(DOCKER_IMAGE ) .
312334
313335docker-cuda11 :
@@ -319,13 +341,17 @@ docker-cuda11:
319341 --build-arg GO_TAGS=" $( GO_TAGS) " \
320342 --build-arg MAKEFLAGS=" $( DOCKER_MAKEFLAGS) " \
321343 --build-arg BUILD_TYPE=$(BUILD_TYPE ) \
344+ --build-arg UBUNTU_VERSION=$(UBUNTU_VERSION ) \
322345 -t $(DOCKER_IMAGE ) -cuda-11 .
323346
324347docker-aio :
325348 @echo " Building AIO image with base $( BASE_IMAGE) as $( DOCKER_AIO_IMAGE) "
326349 docker build \
327350 --build-arg BASE_IMAGE=$(BASE_IMAGE ) \
328351 --build-arg MAKEFLAGS=" $( DOCKER_MAKEFLAGS) " \
352+ --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) \
353+ --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) \
354+ --build-arg UBUNTU_VERSION=$(UBUNTU_VERSION ) \
329355 -t $(DOCKER_AIO_IMAGE ) -f Dockerfile.aio .
330356
331357docker-aio-all :
@@ -338,62 +364,26 @@ docker-image-intel:
338364 --build-arg IMAGE_TYPE=$(IMAGE_TYPE ) \
339365 --build-arg GO_TAGS=" $( GO_TAGS) " \
340366 --build-arg MAKEFLAGS=" $( DOCKER_MAKEFLAGS) " \
341- --build-arg BUILD_TYPE=intel -t $(DOCKER_IMAGE ) .
367+ --build-arg BUILD_TYPE=intel \
368+ --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) \
369+ --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) \
370+ --build-arg UBUNTU_VERSION=$(UBUNTU_VERSION ) \
371+ -t $(DOCKER_IMAGE ) .
342372
343373# #######################################################
344374# # Backends
345375# #######################################################
346376
377+ # Pattern rule for standard backends (docker-based)
378+ # This matches all backends that use docker-build-* and docker-save-*
379+ backends/% : docker-build-% docker-save-% build
380+ ./local-ai backends install " ocifile://$( abspath ./backend-images/$* .tar) "
347381
348- backends/diffusers : docker-build-diffusers docker-save-diffusers build
349- ./local-ai backends install " ocifile://$( abspath ./backend-images/diffusers.tar) "
350-
351- backends/llama-cpp : docker-build-llama-cpp docker-save-llama-cpp build
352- ./local-ai backends install " ocifile://$( abspath ./backend-images/llama-cpp.tar) "
353-
354- backends/piper : docker-build-piper docker-save-piper build
355- ./local-ai backends install " ocifile://$( abspath ./backend-images/piper.tar) "
356-
357- backends/stablediffusion-ggml : docker-build-stablediffusion-ggml docker-save-stablediffusion-ggml build
358- ./local-ai backends install " ocifile://$( abspath ./backend-images/stablediffusion-ggml.tar) "
359-
360- backends/whisper : docker-build-whisper docker-save-whisper build
361- ./local-ai backends install " ocifile://$( abspath ./backend-images/whisper.tar) "
362-
363- backends/silero-vad : docker-build-silero-vad docker-save-silero-vad build
364- ./local-ai backends install " ocifile://$( abspath ./backend-images/silero-vad.tar) "
365-
366- backends/local-store : docker-build-local-store docker-save-local-store build
367- ./local-ai backends install " ocifile://$( abspath ./backend-images/local-store.tar) "
368-
369- backends/huggingface : docker-build-huggingface docker-save-huggingface build
370- ./local-ai backends install " ocifile://$( abspath ./backend-images/huggingface.tar) "
371-
372- backends/rfdetr : docker-build-rfdetr docker-save-rfdetr build
373- ./local-ai backends install " ocifile://$( abspath ./backend-images/rfdetr.tar) "
374-
375- backends/kitten-tts : docker-build-kitten-tts docker-save-kitten-tts build
376- ./local-ai backends install " ocifile://$( abspath ./backend-images/kitten-tts.tar) "
377-
378- backends/kokoro : docker-build-kokoro docker-save-kokoro build
379- ./local-ai backends install " ocifile://$( abspath ./backend-images/kokoro.tar) "
380-
381- backends/chatterbox : docker-build-chatterbox docker-save-chatterbox build
382- ./local-ai backends install " ocifile://$( abspath ./backend-images/chatterbox.tar) "
383-
382+ # Darwin-specific backends (keep as explicit targets since they have special build logic)
384383backends/llama-cpp-darwin : build
385384 bash ./scripts/build/llama-cpp-darwin.sh
386385 ./local-ai backends install " ocifile://$( abspath ./backend-images/llama-cpp.tar) "
387386
388- backends/neutts : docker-build-neutts docker-save-neutts build
389- ./local-ai backends install " ocifile://$( abspath ./backend-images/neutts.tar) "
390-
391- backends/vllm : docker-build-vllm docker-save-vllm build
392- ./local-ai backends install " ocifile://$( abspath ./backend-images/vllm.tar) "
393-
394- backends/vibevoice : docker-build-vibevoice docker-save-vibevoice build
395- ./local-ai backends install " ocifile://$( abspath ./backend-images/vibevoice.tar) "
396-
397387build-darwin-python-backend : build
398388 bash ./scripts/build/python-darwin.sh
399389
@@ -423,119 +413,83 @@ backends/stablediffusion-ggml-darwin:
423413backend-images :
424414 mkdir -p backend-images
425415
426- docker-build-llama-cpp :
427- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:llama-cpp -f backend/Dockerfile.llama-cpp .
428-
429- docker-build-bark-cpp :
430- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:bark-cpp -f backend/Dockerfile.golang --build-arg BACKEND=bark-cpp .
431-
432- docker-build-piper :
433- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:piper -f backend/Dockerfile.golang --build-arg BACKEND=piper .
434-
435- docker-build-local-store :
436- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:local-store -f backend/Dockerfile.golang --build-arg BACKEND=local-store .
437-
438- docker-build-huggingface :
439- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:huggingface -f backend/Dockerfile.golang --build-arg BACKEND=huggingface .
440-
441- docker-build-rfdetr :
442- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:rfdetr -f backend/Dockerfile.python --build-arg BACKEND=rfdetr ./backend
443-
444- docker-build-kitten-tts :
445- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:kitten-tts -f backend/Dockerfile.python --build-arg BACKEND=kitten-tts ./backend
446-
447- docker-save-kitten-tts : backend-images
448- docker save local-ai-backend:kitten-tts -o backend-images/kitten-tts.tar
449-
450- docker-save-chatterbox : backend-images
451- docker save local-ai-backend:chatterbox -o backend-images/chatterbox.tar
452-
453- docker-save-vibevoice : backend-images
454- docker save local-ai-backend:vibevoice -o backend-images/vibevoice.tar
455-
456- docker-build-neutts :
457- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:neutts -f backend/Dockerfile.python --build-arg BACKEND=neutts ./backend
458-
459- docker-save-neutts : backend-images
460- docker save local-ai-backend:neutts -o backend-images/neutts.tar
461-
462- docker-build-kokoro :
463- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:kokoro -f backend/Dockerfile.python --build-arg BACKEND=kokoro ./backend
464-
465- docker-build-vllm :
466- docker build --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:vllm -f backend/Dockerfile.python --build-arg BACKEND=vllm ./backend
467-
468- docker-save-vllm : backend-images
469- docker save local-ai-backend:vllm -o backend-images/vllm.tar
470-
471- docker-save-kokoro : backend-images
472- docker save local-ai-backend:kokoro -o backend-images/kokoro.tar
473-
474- docker-save-rfdetr : backend-images
475- docker save local-ai-backend:rfdetr -o backend-images/rfdetr.tar
476-
477- docker-save-huggingface : backend-images
478- docker save local-ai-backend:huggingface -o backend-images/huggingface.tar
479-
480- docker-save-local-store : backend-images
481- docker save local-ai-backend:local-store -o backend-images/local-store.tar
482-
483- docker-build-silero-vad :
484- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:silero-vad -f backend/Dockerfile.golang --build-arg BACKEND=silero-vad .
485-
486- docker-save-silero-vad : backend-images
487- docker save local-ai-backend:silero-vad -o backend-images/silero-vad.tar
488-
489- docker-save-piper : backend-images
490- docker save local-ai-backend:piper -o backend-images/piper.tar
491-
492- docker-save-llama-cpp : backend-images
493- docker save local-ai-backend:llama-cpp -o backend-images/llama-cpp.tar
494-
495- docker-save-bark-cpp : backend-images
496- docker save local-ai-backend:bark-cpp -o backend-images/bark-cpp.tar
497-
498- docker-build-stablediffusion-ggml :
499- docker build --progress=plain --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) -t local-ai-backend:stablediffusion-ggml -f backend/Dockerfile.golang --build-arg BACKEND=stablediffusion-ggml .
500-
501- docker-save-stablediffusion-ggml : backend-images
502- docker save local-ai-backend:stablediffusion-ggml -o backend-images/stablediffusion-ggml.tar
503-
504- docker-build-rerankers :
505- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:rerankers -f backend/Dockerfile.python --build-arg BACKEND=rerankers .
506-
507- docker-build-transformers :
508- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:transformers -f backend/Dockerfile.python --build-arg BACKEND=transformers .
509-
510- docker-build-diffusers :
511- docker build --progress=plain --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:diffusers -f backend/Dockerfile.python --build-arg BACKEND=diffusers ./backend
512-
513- docker-save-diffusers : backend-images
514- docker save local-ai-backend:diffusers -o backend-images/diffusers.tar
515-
516- docker-build-whisper :
517- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) -t local-ai-backend:whisper -f backend/Dockerfile.golang --build-arg BACKEND=whisper .
518-
519- docker-save-whisper : backend-images
520- docker save local-ai-backend:whisper -o backend-images/whisper.tar
521-
522- docker-build-faster-whisper :
523- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:faster-whisper -f backend/Dockerfile.python --build-arg BACKEND=faster-whisper .
524-
525- docker-build-coqui :
526- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:coqui -f backend/Dockerfile.python --build-arg BACKEND=coqui .
527-
528- docker-build-bark :
529- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:bark -f backend/Dockerfile.python --build-arg BACKEND=bark .
530-
531- docker-build-chatterbox :
532- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:chatterbox -f backend/Dockerfile.python --build-arg BACKEND=chatterbox ./backend
533-
534- docker-build-vibevoice :
535- docker build --progress=plain --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:vibevoice -f backend/Dockerfile.python --build-arg BACKEND=vibevoice ./backend
536-
537- docker-build-exllama2 :
538- docker build --build-arg BUILD_TYPE=$(BUILD_TYPE ) --build-arg BASE_IMAGE=$(BASE_IMAGE ) -t local-ai-backend:exllama2 -f backend/Dockerfile.python --build-arg BACKEND=exllama2 .
416+ # Backend metadata: BACKEND_NAME | DOCKERFILE_TYPE | BUILD_CONTEXT | PROGRESS_FLAG | NEEDS_BACKEND_ARG
417+ # llama-cpp is special - uses llama-cpp Dockerfile and doesn't need BACKEND arg
418+ BACKEND_LLAMA_CPP = llama-cpp|llama-cpp|.|false|false
419+
420+ # Golang backends
421+ BACKEND_BARK_CPP = bark-cpp|golang|.|false|true
422+ BACKEND_PIPER = piper|golang|.|false|true
423+ BACKEND_LOCAL_STORE = local-store|golang|.|false|true
424+ BACKEND_HUGGINGFACE = huggingface|golang|.|false|true
425+ BACKEND_SILERO_VAD = silero-vad|golang|.|false|true
426+ BACKEND_STABLEDIFFUSION_GGML = stablediffusion-ggml|golang|.|--progress=plain|true
427+ BACKEND_WHISPER = whisper|golang|.|false|true
428+
429+ # Python backends with root context
430+ BACKEND_RERANKERS = rerankers|python|.|false|true
431+ BACKEND_TRANSFORMERS = transformers|python|.|false|true
432+ BACKEND_FASTER_WHISPER = faster-whisper|python|.|false|true
433+ BACKEND_COQUI = coqui|python|.|false|true
434+ BACKEND_BARK = bark|python|.|false|true
435+ BACKEND_EXLLAMA2 = exllama2|python|.|false|true
436+
437+ # Python backends with ./backend context
438+ BACKEND_RFDETR = rfdetr|python|./backend|false|true
439+ BACKEND_KITTEN_TTS = kitten-tts|python|./backend|false|true
440+ BACKEND_NEUTTS = neutts|python|./backend|false|true
441+ BACKEND_KOKORO = kokoro|python|./backend|false|true
442+ BACKEND_VLLM = vllm|python|./backend|false|true
443+ BACKEND_DIFFUSERS = diffusers|python|./backend|--progress=plain|true
444+ BACKEND_CHATTERBOX = chatterbox|python|./backend|false|true
445+ BACKEND_VIBEVOICE = vibevoice|python|./backend|--progress=plain|true
446+
447+ # Helper function to build docker image for a backend
448+ # Usage: $(call docker-build-backend,BACKEND_NAME,DOCKERFILE_TYPE,BUILD_CONTEXT,PROGRESS_FLAG,NEEDS_BACKEND_ARG)
449+ define docker-build-backend
450+ docker build $(if $(filter-out false,$(4 ) ) ,$(4 ) ) \
451+ --build-arg BUILD_TYPE=$(BUILD_TYPE ) \
452+ --build-arg BASE_IMAGE=$(BASE_IMAGE ) \
453+ --build-arg CUDA_MAJOR_VERSION=$(CUDA_MAJOR_VERSION ) \
454+ --build-arg CUDA_MINOR_VERSION=$(CUDA_MINOR_VERSION ) \
455+ --build-arg UBUNTU_VERSION=$(UBUNTU_VERSION ) \
456+ $(if $(filter true,$(5 ) ) ,--build-arg BACKEND=$(1 ) ) \
457+ -t local-ai-backend:$(1 ) -f backend/Dockerfile.$(2 ) $(3 )
458+ endef
459+
460+ # Generate docker-build targets from backend definitions
461+ define generate-docker-build-target
462+ docker-build-$(word 1,$(subst |, ,$(1 ) ) ) :
463+ $$(call docker-build-backend,$(word 1,$(subst |, ,$(1 ) ) ) ,$(word 2,$(subst |, ,$(1 ) ) ) ,$(word 3,$(subst |, ,$(1 ) ) ) ,$(word 4,$(subst |, ,$(1 ) ) ) ,$(word 5,$(subst |, ,$(1 ) ) ) )
464+ endef
465+
466+ # Generate all docker-build targets
467+ $(eval $(call generate-docker-build-target,$(BACKEND_LLAMA_CPP)))
468+ $(eval $(call generate-docker-build-target,$(BACKEND_BARK_CPP)))
469+ $(eval $(call generate-docker-build-target,$(BACKEND_PIPER)))
470+ $(eval $(call generate-docker-build-target,$(BACKEND_LOCAL_STORE)))
471+ $(eval $(call generate-docker-build-target,$(BACKEND_HUGGINGFACE)))
472+ $(eval $(call generate-docker-build-target,$(BACKEND_SILERO_VAD)))
473+ $(eval $(call generate-docker-build-target,$(BACKEND_STABLEDIFFUSION_GGML)))
474+ $(eval $(call generate-docker-build-target,$(BACKEND_WHISPER)))
475+ $(eval $(call generate-docker-build-target,$(BACKEND_RERANKERS)))
476+ $(eval $(call generate-docker-build-target,$(BACKEND_TRANSFORMERS)))
477+ $(eval $(call generate-docker-build-target,$(BACKEND_FASTER_WHISPER)))
478+ $(eval $(call generate-docker-build-target,$(BACKEND_COQUI)))
479+ $(eval $(call generate-docker-build-target,$(BACKEND_BARK)))
480+ $(eval $(call generate-docker-build-target,$(BACKEND_EXLLAMA2)))
481+ $(eval $(call generate-docker-build-target,$(BACKEND_RFDETR)))
482+ $(eval $(call generate-docker-build-target,$(BACKEND_KITTEN_TTS)))
483+ $(eval $(call generate-docker-build-target,$(BACKEND_NEUTTS)))
484+ $(eval $(call generate-docker-build-target,$(BACKEND_KOKORO)))
485+ $(eval $(call generate-docker-build-target,$(BACKEND_VLLM)))
486+ $(eval $(call generate-docker-build-target,$(BACKEND_DIFFUSERS)))
487+ $(eval $(call generate-docker-build-target,$(BACKEND_CHATTERBOX)))
488+ $(eval $(call generate-docker-build-target,$(BACKEND_VIBEVOICE)))
489+
490+ # Pattern rule for docker-save targets
491+ docker-save-% : backend-images
492+ docker save local-ai-backend:$* -o backend-images/$* .tar
539493
540494docker-build-backends : docker-build-llama-cpp docker-build-rerankers docker-build-vllm docker-build-transformers docker-build-diffusers docker-build-kokoro docker-build-faster-whisper docker-build-coqui docker-build-bark docker-build-chatterbox docker-build-vibevoice docker-build-exllama2
541495
0 commit comments