diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index a89b639c7..66cdabf06 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -648,6 +648,103 @@ jobs: backend: "llama-cpp" dockerfile: "./backend/Dockerfile.llama-cpp" context: "./" + - build-type: 'vulkan' + cuda-major-version: "" + cuda-minor-version: "" + platforms: 'linux/amd64' + tag-latest: 'true' + tag-suffix: '-gpu-vulkan-llama-cpp' + runs-on: 'ubuntu-latest' + base-image: "ubuntu:22.04" + skip-drivers: 'false' + backend: "llama-cpp" + dockerfile: "./backend/Dockerfile.llama-cpp" + context: "./" + # Stablediffusion-ggml + - build-type: '' + cuda-major-version: "" + cuda-minor-version: "" + platforms: 'linux/amd64' + tag-latest: 'true' + tag-suffix: '-cpu-stablediffusion-ggml' + runs-on: 'ubuntu-latest' + base-image: "ubuntu:22.04" + skip-drivers: 'false' + backend: "stablediffusion-ggml" + dockerfile: "./backend/Dockerfile.go" + context: "./" + - build-type: 'cublas' + cuda-major-version: "12" + cuda-minor-version: "0" + platforms: 'linux/amd64' + tag-latest: 'true' + tag-suffix: '-gpu-nvidia-cuda-12-stablediffusion-ggml' + runs-on: 'ubuntu-latest' + base-image: "ubuntu:22.04" + skip-drivers: 'false' + backend: "stablediffusion-ggml" + dockerfile: "./backend/Dockerfile.go" + context: "./" + - build-type: 'cublas' + cuda-major-version: "11" + cuda-minor-version: "7" + platforms: 'linux/amd64' + tag-latest: 'true' + tag-suffix: '-gpu-nvidia-cuda-11-stablediffusion-ggml' + runs-on: 'ubuntu-latest' + base-image: "ubuntu:22.04" + skip-drivers: 'false' + backend: "stablediffusion-ggml" + dockerfile: "./backend/Dockerfile.go" + context: "./" + - build-type: 'sycl_f32' + cuda-major-version: "" + cuda-minor-version: "" + platforms: 'linux/amd64' + tag-latest: 'true' + tag-suffix: '-gpu-intel-sycl-f32-stablediffusion-ggml' + runs-on: 'ubuntu-latest' + base-image: "quay.io/go-skynet/intel-oneapi-base:latest" + skip-drivers: 'false' + backend: "stablediffusion-ggml" + dockerfile: "./backend/Dockerfile.go" + context: "./" + - build-type: 'sycl_f16' + cuda-major-version: "" + cuda-minor-version: "" + platforms: 'linux/amd64' + tag-latest: 'true' + tag-suffix: '-gpu-intel-sycl-f16-stablediffusion-ggml' + runs-on: 'ubuntu-latest' + base-image: "quay.io/go-skynet/intel-oneapi-base:latest" + skip-drivers: 'false' + backend: "stablediffusion-ggml" + dockerfile: "./backend/Dockerfile.go" + context: "./" + - build-type: 'vulkan' + cuda-major-version: "" + cuda-minor-version: "" + platforms: 'linux/amd64' + tag-latest: 'true' + tag-suffix: '-gpu-vulkan-stablediffusion-ggml' + runs-on: 'ubuntu-latest' + base-image: "ubuntu:22.04" + skip-drivers: 'false' + backend: "stablediffusion-ggml" + dockerfile: "./backend/Dockerfile.go" + context: "./" + - build-type: 'cublas' + cuda-major-version: "12" + cuda-minor-version: "0" + platforms: 'linux/arm64' + skip-drivers: 'true' + tag-latest: 'auto' + tag-suffix: '-nvidia-l4t-arm64-stablediffusion-ggml' + base-image: "nvcr.io/nvidia/l4t-jetpack:r36.4.0" + runs-on: 'ubuntu-24.04-arm' + backend: "stablediffusion-ggml" + dockerfile: "./backend/Dockerfile.go" + context: "./" llama-cpp-darwin: runs-on: macOS-14 strategy: diff --git a/.github/workflows/backend_build.yml b/.github/workflows/backend_build.yml index 090fc5cc6..d30dd39d0 100644 --- a/.github/workflows/backend_build.yml +++ b/.github/workflows/backend_build.yml @@ -64,7 +64,7 @@ on: required: true jobs: - reusable_python_backend-build: + backend-build: runs-on: ${{ inputs.runs-on }} steps: diff --git a/.github/workflows/bump_deps.yaml b/.github/workflows/bump_deps.yaml index 01d60a80d..d26627b0f 100644 --- a/.github/workflows/bump_deps.yaml +++ b/.github/workflows/bump_deps.yaml @@ -21,14 +21,10 @@ jobs: variable: "BARKCPP_VERSION" branch: "main" file: "Makefile" - - repository: "leejet/stable-diffusion.cpp" + - repository: "richiejp/stable-diffusion.cpp" variable: "STABLEDIFFUSION_GGML_VERSION" branch: "master" - file: "Makefile" - - repository: "mudler/go-stable-diffusion" - variable: "STABLEDIFFUSION_VERSION" - branch: "master" - file: "Makefile" + file: "backend/go/stablediffusion-ggml/Makefile" - repository: "mudler/go-piper" variable: "PIPER_VERSION" branch: "master" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bdfb3b824..e2ac48697 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -103,7 +103,7 @@ jobs: make -C backend/python/transformers - make backends/llama-cpp backends/piper + make backends/llama-cpp backends/piper backends/stablediffusion-ggml env: CUDA_VERSION: 12-4 - name: Test @@ -168,7 +168,7 @@ jobs: PATH="$PATH:$HOME/go/bin" make protogen-go - name: Test run: | - PATH="$PATH:$HOME/go/bin" make backends/llama-cpp backends/piper docker-build-aio e2e-aio + PATH="$PATH:$HOME/go/bin" make backends/llama-cpp backends/piper backends/stablediffusion-ggml docker-build-aio e2e-aio - name: Setup tmate session if tests fail if: ${{ failure() }} uses: mxschmitt/action-tmate@v3.22 diff --git a/Makefile b/Makefile index 0d1b7ff69..1fd523b46 100644 --- a/Makefile +++ b/Makefile @@ -9,10 +9,6 @@ DETECT_LIBS?=true WHISPER_REPO?=https://github.com/ggml-org/whisper.cpp WHISPER_CPP_VERSION?=032697b9a850dc2615555e2a93a683cc3dd58559 -# stablediffusion.cpp (ggml) -STABLEDIFFUSION_GGML_REPO?=https://github.com/richiejp/stable-diffusion.cpp -STABLEDIFFUSION_GGML_VERSION?=53e3b17eb3d0b5760ced06a1f98320b68b34aaae - # ONEAPI variables for SYCL export ONEAPI_VARS?=/opt/intel/oneapi/setvars.sh ONEAPI_VERSION=2025.1 @@ -207,13 +203,6 @@ endif ALL_GRPC_BACKENDS=backend-assets/grpc/huggingface ALL_GRPC_BACKENDS+=backend-assets/grpc/whisper - -ifeq ($(ONNX_OS),linux) -ifeq ($(ONNX_ARCH),x64) - ALL_GRPC_BACKENDS+=backend-assets/grpc/stablediffusion-ggml -endif -endif - ALL_GRPC_BACKENDS+=backend-assets/grpc/local-store ALL_GRPC_BACKENDS+=backend-assets/grpc/silero-vad ALL_GRPC_BACKENDS+=$(OPTIONAL_GRPC) @@ -236,20 +225,6 @@ endif all: help -## stablediffusion (ggml) -sources/stablediffusion-ggml.cpp: - git clone --recursive $(STABLEDIFFUSION_GGML_REPO) sources/stablediffusion-ggml.cpp && \ - cd sources/stablediffusion-ggml.cpp && \ - git checkout $(STABLEDIFFUSION_GGML_VERSION) && \ - git submodule update --init --recursive --depth 1 --single-branch - -backend/go/image/stablediffusion-ggml/libsd.a: sources/stablediffusion-ggml.cpp - $(MAKE) -C backend/go/image/stablediffusion-ggml build/libstable-diffusion.a - $(MAKE) -C backend/go/image/stablediffusion-ggml libsd.a - -backend-assets/grpc/stablediffusion-ggml: backend/go/image/stablediffusion-ggml/libsd.a backend-assets/grpc - $(MAKE) -C backend/go/image/stablediffusion-ggml CGO_LDFLAGS="$(CGO_LDFLAGS)" stablediffusion-ggml - sources/onnxruntime: mkdir -p sources/onnxruntime curl -L https://github.com/microsoft/onnxruntime/releases/download/v$(ONNX_VERSION)/onnxruntime-$(ONNX_OS)-$(ONNX_ARCH)-$(ONNX_VERSION).tgz -o sources/onnxruntime/onnxruntime-$(ONNX_OS)-$(ONNX_ARCH)-$(ONNX_VERSION).tgz @@ -278,7 +253,7 @@ sources/whisper.cpp/build/src/libwhisper.a: sources/whisper.cpp cd sources/whisper.cpp && cmake $(WHISPER_CMAKE_ARGS) . -B ./build cd sources/whisper.cpp/build && cmake --build . --config Release -get-sources: sources/stablediffusion-ggml.cpp sources/whisper.cpp +get-sources: sources/whisper.cpp replace: $(GOCMD) mod edit -replace github.com/ggerganov/whisper.cpp=$(CURDIR)/sources/whisper.cpp @@ -307,7 +282,6 @@ clean: ## Remove build related file rm -rf release/ rm -rf backend-assets/* $(MAKE) -C backend/cpp/grpc clean - $(MAKE) -C backend/go/image/stablediffusion-ggml clean $(MAKE) dropreplace $(MAKE) protogen-clean rmdir pkg/grpc/proto || true @@ -401,6 +375,9 @@ backends/llama-cpp: docker-build-llama-cpp docker-save-llama-cpp build-api backends/piper: docker-build-piper docker-save-piper build-api ./local-ai backends install "ocifile://$(abspath ./backend-images/piper.tar)" +backends/stablediffusion-ggml: docker-build-stablediffusion-ggml docker-save-stablediffusion-ggml build-api + ./local-ai backends install "ocifile://$(abspath ./backend-images/stablediffusion-ggml.tar)" + ######################################################## ## AIO tests ######################################################## @@ -736,6 +713,12 @@ docker-save-llama-cpp: backend-images docker-save-bark-cpp: backend-images docker save local-ai-backend:bark-cpp -o backend-images/bark-cpp.tar +docker-build-stablediffusion-ggml: + docker build -t local-ai-backend:stablediffusion-ggml -f backend/Dockerfile.go --build-arg BACKEND=stablediffusion-ggml . + +docker-save-stablediffusion-ggml: backend-images + docker save local-ai-backend:stablediffusion-ggml -o backend-images/stablediffusion-ggml.tar + docker-build-rerankers: docker build -t local-ai-backend:rerankers -f backend/Dockerfile.python --build-arg BACKEND=rerankers . diff --git a/backend/cpp/llama-cpp/Makefile b/backend/cpp/llama-cpp/Makefile index 21df2df06..a8973c70a 100644 --- a/backend/cpp/llama-cpp/Makefile +++ b/backend/cpp/llama-cpp/Makefile @@ -35,6 +35,8 @@ else ifeq ($(BUILD_TYPE),hipblas) # AMDGPU_TARGETS ?= "$(GPU_TARGETS)" CMAKE_ARGS+=-DGGML_HIP=ON # CMAKE_ARGS+=-DGGML_HIP=ON -DAMDGPU_TARGETS="$(AMDGPU_TARGETS)" -DGPU_TARGETS="$(GPU_TARGETS)" +else ifeq ($(BUILD_TYPE),vulkan) + CMAKE_ARGS+=-DGGML_VULKAN=1 else ifeq ($(OS),Darwin) ifeq ($(BUILD_TYPE),) BUILD_TYPE=metal diff --git a/backend/go/image/stablediffusion-ggml/Makefile b/backend/go/stablediffusion-ggml/Makefile similarity index 70% rename from backend/go/image/stablediffusion-ggml/Makefile rename to backend/go/stablediffusion-ggml/Makefile index 07818f7a0..60825b4fc 100644 --- a/backend/go/image/stablediffusion-ggml/Makefile +++ b/backend/go/stablediffusion-ggml/Makefile @@ -4,9 +4,11 @@ LIBRARY_PATH := $(abspath ./) AR?=ar CMAKE_ARGS?= BUILD_TYPE?= +NATIVE?=false +CUDA_LIBPATH?=/usr/local/cuda/lib64/ ONEAPI_VARS?=/opt/intel/oneapi/setvars.sh # keep standard at C11 and C++11 -CXXFLAGS = -I. -I$(INCLUDE_PATH)/../../../../sources/stablediffusion-ggml.cpp/thirdparty -I$(INCLUDE_PATH)/../../../../sources/stablediffusion-ggml.cpp/ggml/include -I$(INCLUDE_PATH)/../../../../sources/stablediffusion-ggml.cpp -O3 -DNDEBUG -std=c++17 -fPIC +CXXFLAGS = -I. -I$(INCLUDE_PATH)/sources/stablediffusion-ggml.cpp/thirdparty -I$(INCLUDE_PATH)/sources/stablediffusion-ggml.cpp/ggml/include -I$(INCLUDE_PATH)/sources/stablediffusion-ggml.cpp -O3 -DNDEBUG -std=c++17 -fPIC GOCMD?=go CGO_LDFLAGS?= @@ -15,12 +17,21 @@ CGO_LDFLAGS_SYCL= GO_TAGS?= LD_FLAGS?= +# stablediffusion.cpp (ggml) +STABLEDIFFUSION_GGML_REPO?=https://github.com/richiejp/stable-diffusion.cpp +STABLEDIFFUSION_GGML_VERSION?=53e3b17eb3d0b5760ced06a1f98320b68b34aaae + # Disable Shared libs as we are linking on static gRPC and we can't mix shared and static CMAKE_ARGS+=-DBUILD_SHARED_LIBS=OFF +ifeq ($(NATIVE),false) + CMAKE_ARGS+=-DGGML_NATIVE=OFF +endif + # If build type is cublas, then we set -DGGML_CUDA=ON to CMAKE_ARGS automatically ifeq ($(BUILD_TYPE),cublas) - CMAKE_ARGS+=-DSD_CUDA=ON + CMAKE_ARGS+=-DSD_CUDA=ON -DGGML_CUDA=ON + CGO_LDFLAGS+=-lcublas -lcudart -L$(CUDA_LIBPATH) -L$(CUDA_LIBPATH)/stubs/ -lcuda # If build type is openblas then we set -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS # to CMAKE_ARGS automatically else ifeq ($(BUILD_TYPE),openblas) @@ -30,14 +41,17 @@ else ifeq ($(BUILD_TYPE),clblas) CMAKE_ARGS+=-DGGML_CLBLAST=ON -DCLBlast_DIR=/some/path # If it's hipblas we do have also to set CC=/opt/rocm/llvm/bin/clang CXX=/opt/rocm/llvm/bin/clang++ else ifeq ($(BUILD_TYPE),hipblas) - CMAKE_ARGS+=-DSD_HIPBLAS=ON + CMAKE_ARGS+=-DSD_HIPBLAS=ON -DGGML_HIPBLAS=ON # If it's OSX, DO NOT embed the metal library - -DGGML_METAL_EMBED_LIBRARY=ON requires further investigation # But if it's OSX without metal, disable it here +else ifeq ($(BUILD_TYPE),vulkan) + CMAKE_ARGS+=-DSD_VULKAN=ON -DGGML_VULKAN=ON + CGO_LDFLAGS+=-lvulkan else ifeq ($(OS),Darwin) ifneq ($(BUILD_TYPE),metal) - CMAKE_ARGS+=-DSD_METAL=OFF + CMAKE_ARGS+=-DSD_METAL=OFF -DGGML_METAL=OFF else - CMAKE_ARGS+=-DSD_METAL=ON + CMAKE_ARGS+=-DSD_METAL=ON -DGGML_METAL=ON CMAKE_ARGS+=-DGGML_METAL_EMBED_LIBRARY=ON TARGET+=--target ggml-metal endif @@ -49,8 +63,8 @@ ifeq ($(BUILD_TYPE),sycl_f16) -DCMAKE_CXX_COMPILER=icpx \ -DSD_SYCL=ON \ -DGGML_SYCL_F16=ON - CC=icx - CXX=icpx + export CC=icx + export CXX=icpx CGO_LDFLAGS_SYCL += -fsycl -L${DNNLROOT}/lib -ldnnl ${MKLROOT}/lib/intel64/libmkl_sycl.a -fiopenmp -fopenmp-targets=spir64 -lOpenCL CGO_LDFLAGS_SYCL += $(shell pkg-config --libs mkl-static-lp64-gomp) CGO_CXXFLAGS += -fiopenmp -fopenmp-targets=spir64 @@ -62,8 +76,8 @@ ifeq ($(BUILD_TYPE),sycl_f32) -DCMAKE_C_COMPILER=icx \ -DCMAKE_CXX_COMPILER=icpx \ -DSD_SYCL=ON - CC=icx - CXX=icpx + export CC=icx + export CXX=icpx CGO_LDFLAGS_SYCL += -fsycl -L${DNNLROOT}/lib -ldnnl ${MKLROOT}/lib/intel64/libmkl_sycl.a -fiopenmp -fopenmp-targets=spir64 -lOpenCL CGO_LDFLAGS_SYCL += $(shell pkg-config --libs mkl-static-lp64-gomp) CGO_CXXFLAGS += -fiopenmp -fopenmp-targets=spir64 @@ -101,12 +115,12 @@ ifneq (,$(findstring sycl,$(BUILD_TYPE))) +bash -c "source $(ONEAPI_VARS); \ mkdir -p build && \ cd build && \ - cmake $(CMAKE_ARGS) ../../../../../sources/stablediffusion-ggml.cpp && \ + cmake $(CMAKE_ARGS) ../sources/stablediffusion-ggml.cpp && \ cmake --build . --config Release" else mkdir -p build && \ cd build && \ - cmake $(CMAKE_ARGS) ../../../../../sources/stablediffusion-ggml.cpp && \ + cmake $(CMAKE_ARGS) ../sources/stablediffusion-ggml.cpp && \ cmake --build . --config Release endif $(MAKE) $(COMBINED_LIB) @@ -119,17 +133,26 @@ else $(CXX) $(CXXFLAGS) gosd.cpp -o gosd.o -c endif -libsd.a: gosd.o +## stablediffusion (ggml) +sources/stablediffusion-ggml.cpp: + git clone --recursive $(STABLEDIFFUSION_GGML_REPO) sources/stablediffusion-ggml.cpp && \ + cd sources/stablediffusion-ggml.cpp && \ + git checkout $(STABLEDIFFUSION_GGML_VERSION) && \ + git submodule update --init --recursive --depth 1 --single-branch + +libsd.a: sources/stablediffusion-ggml.cpp build/libstable-diffusion.a gosd.o cp $(INCLUDE_PATH)/build/libstable-diffusion.a ./libsd.a $(AR) rcs libsd.a gosd.o -stablediffusion-ggml: +stablediffusion-ggml: libsd.a CGO_LDFLAGS="$(CGO_LDFLAGS) $(CGO_LDFLAGS_SYCL)" C_INCLUDE_PATH="$(INCLUDE_PATH)" LIBRARY_PATH="$(LIBRARY_PATH)" \ CC="$(CC)" CXX="$(CXX)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" \ - $(GOCMD) build -ldflags "$(LD_FLAGS)" -tags "$(GO_TAGS)" -o ../../../../backend-assets/grpc/stablediffusion-ggml ./ -ifneq ($(UPX),) - $(UPX) ../../../../backend-assets/grpc/stablediffusion-ggml -endif + $(GOCMD) build -ldflags "$(LD_FLAGS)" -tags "$(GO_TAGS)" -o stablediffusion-ggml ./ + +package: + bash package.sh + +build: stablediffusion-ggml package clean: rm -rf gosd.o libsd.a build $(COMBINED_LIB) diff --git a/backend/go/image/stablediffusion-ggml/gosd.cpp b/backend/go/stablediffusion-ggml/gosd.cpp similarity index 100% rename from backend/go/image/stablediffusion-ggml/gosd.cpp rename to backend/go/stablediffusion-ggml/gosd.cpp diff --git a/backend/go/image/stablediffusion-ggml/gosd.go b/backend/go/stablediffusion-ggml/gosd.go similarity index 91% rename from backend/go/image/stablediffusion-ggml/gosd.go rename to backend/go/stablediffusion-ggml/gosd.go index 8c3bdb906..7d8d770ff 100644 --- a/backend/go/image/stablediffusion-ggml/gosd.go +++ b/backend/go/stablediffusion-ggml/gosd.go @@ -1,6 +1,6 @@ package main -// #cgo CXXFLAGS: -I${SRCDIR}/../../../../sources/stablediffusion-ggml.cpp/thirdparty -I${SRCDIR}/../../../../sources/stablediffusion-ggml.cpp -I${SRCDIR}/../../../../sources/stablediffusion-ggml.cpp/ggml/include +// #cgo CXXFLAGS: -I${SRCDIR}/sources/stablediffusion-ggml.cpp/thirdparty -I${SRCDIR}/sources/stablediffusion-ggml.cpp -I${SRCDIR}/sources/stablediffusion-ggml.cpp/ggml/include // #cgo LDFLAGS: -L${SRCDIR}/ -lsd -lstdc++ -lm -lggmlall -lgomp // #include // #include diff --git a/backend/go/image/stablediffusion-ggml/gosd.h b/backend/go/stablediffusion-ggml/gosd.h similarity index 100% rename from backend/go/image/stablediffusion-ggml/gosd.h rename to backend/go/stablediffusion-ggml/gosd.h diff --git a/backend/go/image/stablediffusion-ggml/main.go b/backend/go/stablediffusion-ggml/main.go similarity index 100% rename from backend/go/image/stablediffusion-ggml/main.go rename to backend/go/stablediffusion-ggml/main.go diff --git a/backend/go/stablediffusion-ggml/package.sh b/backend/go/stablediffusion-ggml/package.sh new file mode 100755 index 000000000..d87f85bf7 --- /dev/null +++ b/backend/go/stablediffusion-ggml/package.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Script to copy the appropriate libraries based on architecture +# This script is used in the final stage of the Dockerfile + +set -e + +CURDIR=$(dirname "$(realpath $0)") + +# Create lib directory +mkdir -p $CURDIR/package/lib + +cp -avrf $CURDIR/stablediffusion-ggml $CURDIR/package/ +cp -rfv $CURDIR/run.sh $CURDIR/package/ + +# Detect architecture and copy appropriate libraries +if [ -f "/lib64/ld-linux-x86-64.so.2" ]; then + # x86_64 architecture + echo "Detected x86_64 architecture, copying x86_64 libraries..." + cp -arfLv /lib64/ld-linux-x86-64.so.2 $CURDIR/package/lib/ld.so + cp -arfLv /lib/x86_64-linux-gnu/libc.so.6 $CURDIR/package/lib/libc.so.6 + cp -arfLv /lib/x86_64-linux-gnu/libgcc_s.so.1 $CURDIR/package/lib/libgcc_s.so.1 + cp -arfLv /lib/x86_64-linux-gnu/libstdc++.so.6 $CURDIR/package/lib/libstdc++.so.6 + cp -arfLv /lib/x86_64-linux-gnu/libm.so.6 $CURDIR/package/lib/libm.so.6 + cp -arfLv /lib/x86_64-linux-gnu/libgomp.so.1 $CURDIR/package/lib/libgomp.so.1 + cp -arfLv /lib/x86_64-linux-gnu/libgcc_s.so.1 $CURDIR/package/lib/libgcc_s.so.1 + cp -arfLv /lib/x86_64-linux-gnu/libstdc++.so.6 $CURDIR/package/lib/libstdc++.so.6 + cp -arfLv /lib/x86_64-linux-gnu/libdl.so.2 $CURDIR/package/lib/libdl.so.2 + cp -arfLv /lib/x86_64-linux-gnu/librt.so.1 $CURDIR/package/lib/librt.so.1 + cp -arfLv /lib/x86_64-linux-gnu/libpthread.so.0 $CURDIR/package/lib/libpthread.so.0 +elif [ -f "/lib/ld-linux-aarch64.so.1" ]; then + # ARM64 architecture + echo "Detected ARM64 architecture, copying ARM64 libraries..." + cp -arfLv /lib/ld-linux-aarch64.so.1 $CURDIR/package/lib/ld.so + cp -arfLv /lib/aarch64-linux-gnu/libc.so.6 $CURDIR/package/lib/libc.so.6 + cp -arfLv /lib/aarch64-linux-gnu/libgcc_s.so.1 $CURDIR/package/lib/libgcc_s.so.1 + cp -arfLv /lib/aarch64-linux-gnu/libstdc++.so.6 $CURDIR/package/lib/libstdc++.so.6 + cp -arfLv /lib/aarch64-linux-gnu/libm.so.6 $CURDIR/package/lib/libm.so.6 + cp -arfLv /lib/aarch64-linux-gnu/libgomp.so.1 $CURDIR/package/lib/libgomp.so.1 + cp -arfLv /lib/aarch64-linux-gnu/libgcc_s.so.1 $CURDIR/package/lib/libgcc_s.so.1 + cp -arfLv /lib/aarch64-linux-gnu/libstdc++.so.6 $CURDIR/package/lib/libstdc++.so.6 + cp -arfLv /lib/aarch64-linux-gnu/libdl.so.2 $CURDIR/package/lib/libdl.so.2 + cp -arfLv /lib/aarch64-linux-gnu/librt.so.1 $CURDIR/package/lib/librt.so.1 + cp -arfLv /lib/aarch64-linux-gnu/libpthread.so.0 $CURDIR/package/lib/libpthread.so.0 +else + echo "Error: Could not detect architecture" + exit 1 +fi + +echo "Packaging completed successfully" +ls -liah $CURDIR/package/ +ls -liah $CURDIR/package/lib/ \ No newline at end of file diff --git a/backend/go/stablediffusion-ggml/run.sh b/backend/go/stablediffusion-ggml/run.sh new file mode 100755 index 000000000..ab8c576a0 --- /dev/null +++ b/backend/go/stablediffusion-ggml/run.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -ex + +CURDIR=$(dirname "$(realpath $0)") + +export LD_LIBRARY_PATH=$CURDIR/lib:$LD_LIBRARY_PATH + +# If there is a lib/ld.so, use it +if [ -f $CURDIR/lib/ld.so ]; then + echo "Using lib/ld.so" + exec $CURDIR/lib/ld.so $CURDIR/stablediffusion-ggml "$@" +fi + +exec $CURDIR/stablediffusion-ggml "$@" \ No newline at end of file diff --git a/backend/index.yaml b/backend/index.yaml index 82168aefe..e155ea9f9 100644 --- a/backend/index.yaml +++ b/backend/index.yaml @@ -23,8 +23,34 @@ intel: "intel-sycl-f16-llama-cpp" amd: "rocm-llama-cpp" metal: "metal-llama-cpp" + vulkan: "vulkan-llama-cpp" nvidia-l4t: "nvidia-l4t-arm64-llama-cpp" darwin-x86: "darwin-x86-llama-cpp" +- &stablediffusionggml + name: "stablediffusion-ggml" + alias: "stablediffusion-ggml" + license: mit + icon: https://github.com/leejet/stable-diffusion.cpp/raw/master/assets/cat_with_sd_cpp_42.png + description: | + Stable Diffusion and Flux in pure C/C++ + urls: + - https://github.com/leejet/stable-diffusion.cpp + tags: + - image-generation + - CPU + - GPU + - Metal + - CUDA + - HIP + capabilities: + default: "cpu-stablediffusion-ggml" + nvidia: "cuda12-stablediffusion-ggml" + intel: "intel-sycl-f16-stablediffusion-ggml" + #amd: "rocm-stablediffusion-ggml" + vulkan: "vulkan-stablediffusion-ggml" + nvidia-l4t: "nvidia-l4t-arm64-stablediffusion-ggml" + # metal: "metal-stablediffusion-ggml" + # darwin-x86: "darwin-x86-stablediffusion-ggml" - &vllm name: "vllm" license: apache-2.0 @@ -237,10 +263,6 @@ tags: - text-to-speech - TTS - capabilities: - nvidia: "cuda12-piper" - intel: "intel-sycl-f32-piper" - amd: "rocm-piper" - !!merge <<: *piper name: "piper-development" uri: "quay.io/go-skynet/local-ai-backends:master-piper" @@ -278,6 +300,12 @@ - !!merge <<: *llamacpp name: "intel-sycl-f16-llama-cpp" uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-intel-sycl-f16-llama-cpp" +- !!merge <<: *llamacpp + name: "vulkan-llama-cpp" + uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-vulkan-llama-cpp" +- !!merge <<: *llamacpp + name: "vulkan-llama-cpp-development" + uri: "quay.io/go-skynet/local-ai-backends:master-gpu-vulkan-llama-cpp" - !!merge <<: *llamacpp name: "metal-llama-cpp" uri: "quay.io/go-skynet/local-ai-backends:latest-metal-darwin-arm64-llama-cpp" @@ -297,8 +325,51 @@ name: "intel-sycl-f32-llama-cpp-development" uri: "quay.io/go-skynet/local-ai-backends:master-gpu-intel-sycl-f32-llama-cpp" - !!merge <<: *llamacpp - name: "intel-sycl-f16-vllm-development" + name: "intel-sycl-f16-llama-cpp-development" uri: "quay.io/go-skynet/local-ai-backends:master-gpu-intel-sycl-f16-vllm" +## stablediffusion-ggml +- !!merge <<: *stablediffusionggml + name: "cpu-stablediffusion-ggml" + uri: "quay.io/go-skynet/local-ai-backends:latest-cpu-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "cpu-stablediffusion-ggml-development" + uri: "quay.io/go-skynet/local-ai-backends:master-cpu-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "vulkan-stablediffusion-ggml" + uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-vulkan-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "vulkan-stablediffusion-ggml-development" + uri: "quay.io/go-skynet/local-ai-backends:master-gpu-vulkan-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "cuda12-stablediffusion-ggml" + uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-nvidia-cuda-12-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "intel-sycl-f32-stablediffusion-ggml" + uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-intel-sycl-f32-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "intel-sycl-f16-stablediffusion-ggml" + uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-intel-sycl-f16-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "cuda11-stablediffusion-ggml" + uri: "quay.io/go-skynet/local-ai-backends:latest-gpu-nvidia-cuda-11-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "cuda12-stablediffusion-ggml-development" + uri: "quay.io/go-skynet/local-ai-backends:master-gpu-nvidia-cuda-12-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "intel-sycl-f32-stablediffusion-ggml-development" + uri: "quay.io/go-skynet/local-ai-backends:master-gpu-intel-sycl-f32-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "intel-sycl-f16-stablediffusion-ggml-development" + uri: "quay.io/go-skynet/local-ai-backends:master-gpu-intel-sycl-f16-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "cuda11-stablediffusion-ggml-development" + uri: "quay.io/go-skynet/local-ai-backends:master-gpu-nvidia-cuda-11-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "nvidia-l4t-arm64-stablediffusion-ggml-development" + uri: "quay.io/go-skynet/local-ai-backends:master-nvidia-l4t-arm64-stablediffusion-ggml" +- !!merge <<: *stablediffusionggml + name: "nvidia-l4t-arm64-stablediffusion-ggml" + uri: "quay.io/go-skynet/local-ai-backends:latest-nvidia-l4t-arm64-stablediffusion-ggml" # vllm - !!merge <<: *vllm name: "vllm-development"