diff --git a/.github/workflows/image-pr.yml b/.github/workflows/image-pr.yml index aa59188c..b703b16d 100644 --- a/.github/workflows/image-pr.yml +++ b/.github/workflows/image-pr.yml @@ -22,7 +22,7 @@ jobs: platforms: ${{ matrix.platforms }} runs-on: ${{ matrix.runs-on }} base-image: ${{ matrix.base-image }} - makeflags: "--jobs=3 --output-sync=target" + makeflags: ${{ matrix.makeflags }} secrets: dockerUsername: ${{ secrets.DOCKERHUB_USERNAME }} dockerPassword: ${{ secrets.DOCKERHUB_PASSWORD }} @@ -42,6 +42,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" + makeflags: "--jobs=3 --output-sync=target" - build-type: 'cublas' cuda-major-version: "12" cuda-minor-version: "1" @@ -52,6 +53,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" + makeflags: "--jobs=3 --output-sync=target" - build-type: 'hipblas' platforms: 'linux/amd64' tag-latest: 'false' @@ -60,6 +62,7 @@ jobs: image-type: 'extras' base-image: "rocm/dev-ubuntu-22.04:6.0-complete" runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'sycl_f16' platforms: 'linux/amd64' tag-latest: 'false' @@ -68,6 +71,7 @@ jobs: ffmpeg: 'true' image-type: 'extras' runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" core-image-build: uses: ./.github/workflows/image_build.yml with: @@ -81,7 +85,7 @@ jobs: platforms: ${{ matrix.platforms }} runs-on: ${{ matrix.runs-on }} base-image: ${{ matrix.base-image }} - makeflags: "--jobs=3 --output-sync=target" + makeflags: ${{ matrix.makeflags }} secrets: dockerUsername: ${{ secrets.DOCKERHUB_USERNAME }} dockerPassword: ${{ secrets.DOCKERHUB_PASSWORD }} @@ -98,6 +102,7 @@ jobs: image-type: 'core' runs-on: 'ubuntu-latest' base-image: "ubuntu:22.04" + makeflags: "--jobs=5 --output-sync=target" - build-type: 'sycl_f16' platforms: 'linux/amd64' tag-latest: 'false' @@ -106,6 +111,7 @@ jobs: ffmpeg: 'true' image-type: 'core' runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'cublas' cuda-major-version: "12" cuda-minor-version: "1" @@ -115,4 +121,5 @@ jobs: ffmpeg: 'true' image-type: 'core' runs-on: 'ubuntu-latest' - base-image: "ubuntu:22.04" \ No newline at end of file + base-image: "ubuntu:22.04" + makeflags: "--jobs=5 --output-sync=target" \ No newline at end of file diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index 40deb0ec..79a38fc5 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -27,7 +27,7 @@ jobs: runs-on: ${{ matrix.runs-on }} base-image: ${{ matrix.base-image }} aio: ${{ matrix.aio }} - makeflags: "--jobs=3 --output-sync=target" + makeflags: ${{ matrix.makeflags }} secrets: dockerUsername: ${{ secrets.DOCKERHUB_USERNAME }} dockerPassword: ${{ secrets.DOCKERHUB_PASSWORD }} @@ -49,6 +49,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" + makeflags: "--jobs=3 --output-sync=target" - build-type: '' platforms: 'linux/amd64' tag-latest: 'auto' @@ -57,6 +58,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" + makeflags: "--jobs=3 --output-sync=target" - build-type: 'cublas' cuda-major-version: "11" cuda-minor-version: "7" @@ -67,6 +69,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" + makeflags: "--jobs=3 --output-sync=target" - build-type: 'cublas' cuda-major-version: "12" cuda-minor-version: "1" @@ -77,6 +80,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" + makeflags: "--jobs=3 --output-sync=target" - build-type: 'cublas' cuda-major-version: "11" cuda-minor-version: "7" @@ -88,6 +92,7 @@ jobs: runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" aio: "-aio-gpu-nvidia-cuda-11" + makeflags: "--jobs=3 --output-sync=target" - build-type: 'cublas' cuda-major-version: "12" cuda-minor-version: "1" @@ -99,6 +104,7 @@ jobs: runs-on: 'arc-runner-set' base-image: "ubuntu:22.04" aio: "-aio-gpu-nvidia-cuda-12" + makeflags: "--jobs=3 --output-sync=target" - build-type: '' #platforms: 'linux/amd64,linux/arm64' platforms: 'linux/amd64' @@ -108,6 +114,7 @@ jobs: image-type: 'extras' base-image: "ubuntu:22.04" runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'hipblas' platforms: 'linux/amd64' tag-latest: 'auto' @@ -117,6 +124,7 @@ jobs: aio: "-aio-gpu-hipblas" base-image: "rocm/dev-ubuntu-22.04:6.0-complete" runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'hipblas' platforms: 'linux/amd64' tag-latest: 'false' @@ -125,6 +133,7 @@ jobs: image-type: 'extras' base-image: "rocm/dev-ubuntu-22.04:6.0-complete" runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'sycl_f16' platforms: 'linux/amd64' tag-latest: 'auto' @@ -134,6 +143,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' aio: "-aio-gpu-intel-f16" + makeflags: "--jobs=3 --output-sync=target" - build-type: 'sycl_f32' platforms: 'linux/amd64' tag-latest: 'auto' @@ -143,6 +153,7 @@ jobs: image-type: 'extras' runs-on: 'arc-runner-set' aio: "-aio-gpu-intel-f32" + makeflags: "--jobs=3 --output-sync=target" # Core images - build-type: 'sycl_f16' platforms: 'linux/amd64' @@ -152,6 +163,7 @@ jobs: ffmpeg: 'false' image-type: 'core' runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'sycl_f32' platforms: 'linux/amd64' tag-latest: 'false' @@ -160,6 +172,7 @@ jobs: ffmpeg: 'false' image-type: 'core' runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'sycl_f16' platforms: 'linux/amd64' tag-latest: 'false' @@ -168,6 +181,7 @@ jobs: ffmpeg: 'true' image-type: 'core' runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'sycl_f32' platforms: 'linux/amd64' tag-latest: 'false' @@ -176,6 +190,7 @@ jobs: ffmpeg: 'true' image-type: 'core' runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'hipblas' platforms: 'linux/amd64' tag-latest: 'false' @@ -184,6 +199,7 @@ jobs: image-type: 'core' base-image: "rocm/dev-ubuntu-22.04:6.0-complete" runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" - build-type: 'hipblas' platforms: 'linux/amd64' tag-latest: 'false' @@ -192,6 +208,7 @@ jobs: image-type: 'core' base-image: "rocm/dev-ubuntu-22.04:6.0-complete" runs-on: 'arc-runner-set' + makeflags: "--jobs=3 --output-sync=target" core-image-build: uses: ./.github/workflows/image_build.yml @@ -207,7 +224,7 @@ jobs: runs-on: ${{ matrix.runs-on }} aio: ${{ matrix.aio }} base-image: ${{ matrix.base-image }} - makeflags: "--jobs=3 --output-sync=target" + makeflags: ${{ matrix.makeflags }} secrets: dockerUsername: ${{ secrets.DOCKERHUB_USERNAME }} dockerPassword: ${{ secrets.DOCKERHUB_PASSWORD }} @@ -225,6 +242,7 @@ jobs: base-image: "ubuntu:22.04" runs-on: 'ubuntu-latest' aio: "-aio-cpu" + makeflags: "--jobs=5 --output-sync=target" - build-type: 'cublas' cuda-major-version: "11" cuda-minor-version: "7" @@ -235,6 +253,7 @@ jobs: image-type: 'core' base-image: "ubuntu:22.04" runs-on: 'ubuntu-latest' + makeflags: "--jobs=5 --output-sync=target" - build-type: 'cublas' cuda-major-version: "12" cuda-minor-version: "1" @@ -245,6 +264,7 @@ jobs: image-type: 'core' base-image: "ubuntu:22.04" runs-on: 'ubuntu-latest' + makeflags: "--jobs=5 --output-sync=target" - build-type: 'cublas' cuda-major-version: "11" cuda-minor-version: "7" @@ -255,6 +275,7 @@ jobs: image-type: 'core' runs-on: 'ubuntu-latest' base-image: "ubuntu:22.04" + makeflags: "--jobs=5 --output-sync=target" - build-type: 'cublas' cuda-major-version: "12" cuda-minor-version: "1" @@ -265,3 +286,4 @@ jobs: image-type: 'core' runs-on: 'ubuntu-latest' base-image: "ubuntu:22.04" + makeflags: "--jobs=5 --output-sync=target" diff --git a/.github/workflows/image_build.yml b/.github/workflows/image_build.yml index 659f85de..d07df441 100644 --- a/.github/workflows/image_build.yml +++ b/.github/workflows/image_build.yml @@ -49,7 +49,7 @@ on: makeflags: description: 'Make Flags' required: false - default: '' + default: '--jobs=3 --output-sync=target' type: string aio: description: 'AIO Image Name' @@ -79,6 +79,7 @@ jobs: && sudo apt-get install -y git - name: Checkout uses: actions/checkout@v4 + - name: Release space from worker if: inputs.runs-on == 'ubuntu-latest' run: | @@ -120,6 +121,7 @@ jobs: sudo rm -rf "/usr/local/share/boost" || true sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true df -h + - name: Docker meta id: meta uses: docker/metadata-action@v5 @@ -134,6 +136,7 @@ jobs: flavor: | latest=${{ inputs.tag-latest }} suffix=${{ inputs.tag-suffix }} + - name: Docker meta AIO (quay.io) if: inputs.aio != '' id: meta_aio @@ -147,6 +150,7 @@ jobs: flavor: | latest=${{ inputs.tag-latest }} suffix=${{ inputs.aio }} + - name: Docker meta AIO (dockerhub) if: inputs.aio != '' id: meta_aio_dockerhub @@ -160,6 +164,7 @@ jobs: flavor: | latest=${{ inputs.tag-latest }} suffix=${{ inputs.aio }} + - name: Set up QEMU uses: docker/setup-qemu-action@master with: @@ -184,6 +189,25 @@ jobs: username: ${{ secrets.quayUsername }} password: ${{ secrets.quayPassword }} + - name: Cache GRPC + uses: docker/build-push-action@v5 + with: + builder: ${{ steps.buildx.outputs.name }} + build-args: | + IMAGE_TYPE=${{ inputs.image-type }} + BASE_IMAGE=${{ inputs.base-image }} + MAKEFLAGS=${{ inputs.makeflags }} + GRPC_VERSION=v1.58.0 + context: . + file: ./Dockerfile + cache-from: type=gha + cache-to: type=gha,ignore-error=true + target: grpc + platforms: ${{ inputs.platforms }} + push: false + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + - name: Build and push uses: docker/build-push-action@v5 with: @@ -198,18 +222,20 @@ jobs: MAKEFLAGS=${{ inputs.makeflags }} context: . file: ./Dockerfile + cache-from: type=gha platforms: ${{ inputs.platforms }} push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - - - name: Inspect image + + - name: Inspect image if: github.event_name != 'pull_request' run: | docker pull localai/localai:${{ steps.meta.outputs.version }} docker image inspect localai/localai:${{ steps.meta.outputs.version }} docker pull quay.io/go-skynet/local-ai:${{ steps.meta.outputs.version }} docker image inspect quay.io/go-skynet/local-ai:${{ steps.meta.outputs.version }} + - name: Build and push AIO image if: inputs.aio != '' uses: docker/build-push-action@v5 @@ -217,12 +243,14 @@ jobs: builder: ${{ steps.buildx.outputs.name }} build-args: | BASE_IMAGE=quay.io/go-skynet/local-ai:${{ steps.meta.outputs.version }} + MAKEFLAGS=${{ inputs.makeflags }} context: . file: ./Dockerfile.aio platforms: ${{ inputs.platforms }} push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta_aio.outputs.tags }} labels: ${{ steps.meta_aio.outputs.labels }} + - name: Build and push AIO image (dockerhub) if: inputs.aio != '' uses: docker/build-push-action@v5 @@ -230,15 +258,18 @@ jobs: builder: ${{ steps.buildx.outputs.name }} build-args: | BASE_IMAGE=localai/localai:${{ steps.meta.outputs.version }} + MAKEFLAGS=${{ inputs.makeflags }} context: . file: ./Dockerfile.aio platforms: ${{ inputs.platforms }} push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta_aio_dockerhub.outputs.tags }} labels: ${{ steps.meta_aio_dockerhub.outputs.labels }} + - name: job summary run: | echo "Built image: ${{ steps.meta.outputs.labels }}" >> $GITHUB_STEP_SUMMARY + - name: job summary(AIO) if: inputs.aio != '' run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 6ac816ee..1d749189 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -2,6 +2,9 @@ name: Build and Release on: push +env: + GRPC_VERSION: v1.58.0 + permissions: contents: write @@ -32,7 +35,8 @@ jobs: submodules: true - uses: actions/setup-go@v4 with: - go-version: '>=1.21.0' + go-version: '1.21.x' + cache: false - name: Dependencies run: | sudo apt-get update @@ -54,17 +58,17 @@ jobs: uses: actions/cache@v3 with: path: grpc - key: ${{ runner.os }}-grpc + key: ${{ runner.os }}-grpc-${{ env.GRPC_VERSION }} - name: Build grpc if: steps.cache-grpc.outputs.cache-hit != 'true' run: | - git clone --recurse-submodules -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc && \ + git clone --recurse-submodules -b ${{ env.GRPC_VERSION }} --depth 1 --shallow-submodules https://github.com/grpc/grpc && \ cd grpc && mkdir -p cmake/build && cd cmake/build && cmake -DgRPC_INSTALL=ON \ -DgRPC_BUILD_TESTS=OFF \ - ../.. && sudo make -j12 + ../.. && sudo make --jobs 5 --output-sync=target - name: Install gRPC run: | - cd grpc && cd cmake/build && sudo make -j12 install + cd grpc && cd cmake/build && sudo make --jobs 5 --output-sync=target install - name: Build id: build env: @@ -98,7 +102,8 @@ jobs: submodules: true - uses: actions/setup-go@v4 with: - go-version: '>=1.21.0' + go-version: '1.21.x' + cache: false - name: Dependencies run: | sudo apt-get install -y --no-install-recommends libopencv-dev @@ -135,7 +140,8 @@ jobs: submodules: true - uses: actions/setup-go@v4 with: - go-version: '>=1.21.0' + go-version: '1.21.x' + cache: false - name: Dependencies run: | brew install protobuf grpc diff --git a/.github/workflows/test-extra.yml b/.github/workflows/test-extra.yml index 5f61835d..6f92c806 100644 --- a/.github/workflows/test-extra.yml +++ b/.github/workflows/test-extra.yml @@ -40,8 +40,8 @@ jobs: - name: Test transformers run: | export PATH=$PATH:/opt/conda/bin - make -C backend/python/transformers - make -C backend/python/transformers test + make --jobs=5 --output-sync=target -C backend/python/transformers + make --jobs=5 --output-sync=target -C backend/python/transformers test tests-sentencetransformers: runs-on: ubuntu-latest @@ -69,8 +69,8 @@ jobs: - name: Test sentencetransformers run: | export PATH=$PATH:/opt/conda/bin - make -C backend/python/sentencetransformers - make -C backend/python/sentencetransformers test + make --jobs=5 --output-sync=target -C backend/python/sentencetransformers + make --jobs=5 --output-sync=target -C backend/python/sentencetransformers test tests-diffusers: runs-on: ubuntu-latest @@ -98,8 +98,8 @@ jobs: - name: Test diffusers run: | export PATH=$PATH:/opt/conda/bin - make -C backend/python/diffusers - make -C backend/python/diffusers test + make --jobs=5 --output-sync=target -C backend/python/diffusers + make --jobs=5 --output-sync=target -C backend/python/diffusers test tests-transformers-musicgen: @@ -128,8 +128,8 @@ jobs: - name: Test transformers-musicgen run: | export PATH=$PATH:/opt/conda/bin - make -C backend/python/transformers-musicgen - make -C backend/python/transformers-musicgen test + make --jobs=5 --output-sync=target -C backend/python/transformers-musicgen + make --jobs=5 --output-sync=target -C backend/python/transformers-musicgen test @@ -159,8 +159,8 @@ jobs: - name: Test petals run: | export PATH=$PATH:/opt/conda/bin - make -C backend/python/petals - make -C backend/python/petals test + make --jobs=5 --output-sync=target -C backend/python/petals + make --jobs=5 --output-sync=target -C backend/python/petals test @@ -230,8 +230,8 @@ jobs: # - name: Test bark # run: | # export PATH=$PATH:/opt/conda/bin - # make -C backend/python/bark - # make -C backend/python/bark test + # make --jobs=5 --output-sync=target -C backend/python/bark + # make --jobs=5 --output-sync=target -C backend/python/bark test # Below tests needs GPU. Commented out for now @@ -260,8 +260,8 @@ jobs: # - name: Test vllm # run: | # export PATH=$PATH:/opt/conda/bin - # make -C backend/python/vllm - # make -C backend/python/vllm test + # make --jobs=5 --output-sync=target -C backend/python/vllm + # make --jobs=5 --output-sync=target -C backend/python/vllm test tests-vallex: runs-on: ubuntu-latest steps: @@ -286,8 +286,8 @@ jobs: - name: Test vall-e-x run: | export PATH=$PATH:/opt/conda/bin - make -C backend/python/vall-e-x - make -C backend/python/vall-e-x test + make --jobs=5 --output-sync=target -C backend/python/vall-e-x + make --jobs=5 --output-sync=target -C backend/python/vall-e-x test tests-coqui: runs-on: ubuntu-latest @@ -313,5 +313,5 @@ jobs: - name: Test coqui run: | export PATH=$PATH:/opt/conda/bin - make -C backend/python/coqui - make -C backend/python/coqui test + make --jobs=5 --output-sync=target -C backend/python/coqui + make --jobs=5 --output-sync=target -C backend/python/coqui test diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 203aeeca..95d10862 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -9,6 +9,9 @@ on: tags: - '*' +env: + GRPC_VERSION: v1.58.0 + concurrency: group: ci-tests-${{ github.head_ref || github.ref }}-${{ github.repository }} cancel-in-progress: true @@ -60,6 +63,7 @@ jobs: uses: actions/setup-go@v4 with: go-version: ${{ matrix.go-version }} + cache: false # You can test your matrix by printing the current Go version - name: Display Go version run: go version @@ -91,20 +95,20 @@ jobs: uses: actions/cache@v3 with: path: grpc - key: ${{ runner.os }}-grpc + key: ${{ runner.os }}-grpc-${{ env.GRPC_VERSION }} - name: Build grpc if: steps.cache-grpc.outputs.cache-hit != 'true' run: | - git clone --recurse-submodules -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc && \ + git clone --recurse-submodules -b ${{ env.GRPC_VERSION }} --depth 1 --jobs 5 --shallow-submodules https://github.com/grpc/grpc && \ cd grpc && mkdir -p cmake/build && cd cmake/build && cmake -DgRPC_INSTALL=ON \ -DgRPC_BUILD_TESTS=OFF \ - ../.. && sudo make -j12 + ../.. && sudo make --jobs 5 - name: Install gRPC run: | - cd grpc && cd cmake/build && sudo make -j12 install + cd grpc && cd cmake/build && sudo make --jobs 5 install - name: Test run: | - GO_TAGS="stablediffusion tts" make test + GO_TAGS="stablediffusion tts" make --jobs 5 --output-sync=target test - name: Setup tmate session if tests fail if: ${{ failure() }} uses: mxschmitt/action-tmate@v3 @@ -151,7 +155,7 @@ jobs: submodules: true - name: Build images run: | - docker build --build-arg FFMPEG=true --build-arg IMAGE_TYPE=core -t local-ai:tests -f Dockerfile . + docker build --build-arg FFMPEG=true --build-arg IMAGE_TYPE=core --build-arg MAKEFLAGS="--jobs=5 --output-sync=target" -t local-ai:tests -f Dockerfile . BASE_IMAGE=local-ai:tests DOCKER_AIO_IMAGE=local-ai-aio:test make docker-aio - name: Test run: | @@ -176,17 +180,20 @@ jobs: uses: actions/setup-go@v4 with: go-version: ${{ matrix.go-version }} + cache: false # You can test your matrix by printing the current Go version - name: Display Go version run: go version - name: Dependencies run: | - brew install protobuf grpc + brew install protobuf grpc make - name: Test run: | export C_INCLUDE_PATH=/usr/local/include export CPLUS_INCLUDE_PATH=/usr/local/include - BUILD_TYPE="GITHUB_CI_HAS_BROKEN_METAL" CMAKE_ARGS="-DLLAMA_F16C=OFF -DLLAMA_AVX512=OFF -DLLAMA_AVX2=OFF -DLLAMA_FMA=OFF" make test + # Used to run the newer GNUMake version from brew that supports --output-sync + export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH" + BUILD_TYPE="GITHUB_CI_HAS_BROKEN_METAL" CMAKE_ARGS="-DLLAMA_F16C=OFF -DLLAMA_AVX512=OFF -DLLAMA_AVX2=OFF -DLLAMA_FMA=OFF" make --jobs 4 --output-sync=target test - name: Setup tmate session if tests fail if: ${{ failure() }} uses: mxschmitt/action-tmate@v3 diff --git a/Dockerfile b/Dockerfile index 8725e76d..5fb6230c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -90,11 +90,35 @@ RUN if [ ! -e /usr/bin/python ]; then \ ################################### ################################### +FROM ${BASE_IMAGE} as grpc + +ARG MAKEFLAGS +ARG GRPC_VERSION=v1.58.0 + +ENV MAKEFLAGS=${MAKEFLAGS} + +WORKDIR /build + +RUN apt-get update && \ + apt-get install -y g++ cmake git && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + +RUN git clone --recurse-submodules --jobs 4 -b ${GRPC_VERSION} --depth 1 --shallow-submodules https://github.com/grpc/grpc + +RUN cd grpc && \ + mkdir -p cmake/build && \ + cd cmake/build && \ + cmake -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF ../.. && \ + make + +################################### +################################### + FROM requirements-${IMAGE_TYPE} as builder ARG GO_TAGS="stablediffusion tts" ARG GRPC_BACKENDS -ARG BUILD_GRPC=true ARG MAKEFLAGS ENV GRPC_BACKENDS=${GRPC_BACKENDS} @@ -121,12 +145,9 @@ RUN if [ "${BUILD_TYPE}" = "clblas" ]; then \ # stablediffusion does not tolerate a newer version of abseil, build it first RUN GRPC_BACKENDS=backend-assets/grpc/stablediffusion make build -RUN if [ "${BUILD_GRPC}" = "true" ]; then \ - git clone --recurse-submodules --jobs 4 -b v1.58.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc && \ - cd grpc && mkdir -p cmake/build && cd cmake/build && cmake -DgRPC_INSTALL=ON \ - -DgRPC_BUILD_TESTS=OFF \ - ../.. && make install \ - ; fi +COPY --from=grpc /build/grpc ./grpc/ + +RUN cd /build/grpc/cmake/build && make install # Rebuild with defaults backends RUN make build @@ -179,7 +200,7 @@ WORKDIR /build COPY . . COPY --from=builder /build/sources ./sources/ -COPY --from=builder /build/grpc ./grpc/ +COPY --from=grpc /build/grpc ./grpc/ RUN make prepare-sources && cd /build/grpc/cmake/build && make install && rm -rf grpc diff --git a/Makefile b/Makefile index 6c02b80e..03764d86 100644 --- a/Makefile +++ b/Makefile @@ -355,7 +355,7 @@ prepare-e2e: mkdir -p $(TEST_DIR) cp -rfv $(abspath ./tests/e2e-fixtures)/gpu.yaml $(TEST_DIR)/gpu.yaml 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 - docker build --build-arg BUILD_GRPC=true --build-arg GRPC_BACKENDS="$(GRPC_BACKENDS)" --build-arg IMAGE_TYPE=core --build-arg BUILD_TYPE=$(BUILD_TYPE) --build-arg CUDA_MAJOR_VERSION=11 --build-arg CUDA_MINOR_VERSION=7 --build-arg FFMPEG=true -t localai-tests . + docker build --build-arg GRPC_BACKENDS="$(GRPC_BACKENDS)" --build-arg IMAGE_TYPE=core --build-arg BUILD_TYPE=$(BUILD_TYPE) --build-arg CUDA_MAJOR_VERSION=11 --build-arg CUDA_MINOR_VERSION=7 --build-arg FFMPEG=true -t localai-tests . run-e2e-image: ls -liah $(abspath ./tests/e2e-fixtures) @@ -564,6 +564,7 @@ docker: --build-arg BASE_IMAGE=$(BASE_IMAGE) \ --build-arg IMAGE_TYPE=$(IMAGE_TYPE) \ --build-arg GO_TAGS="$(GO_TAGS)" \ + --build-arg MAKEFLAGS="$(DOCKER_MAKEFLAGS)" \ --build-arg BUILD_TYPE=$(BUILD_TYPE) \ -t $(DOCKER_IMAGE) . @@ -571,6 +572,7 @@ docker-aio: @echo "Building AIO image with base $(BASE_IMAGE) as $(DOCKER_AIO_IMAGE)" docker build \ --build-arg BASE_IMAGE=$(BASE_IMAGE) \ + --build-arg MAKEFLAGS="$(DOCKER_MAKEFLAGS)" \ -t $(DOCKER_AIO_IMAGE) -f Dockerfile.aio . docker-aio-all: @@ -582,6 +584,7 @@ docker-image-intel: --build-arg BASE_IMAGE=intel/oneapi-basekit:2024.0.1-devel-ubuntu22.04 \ --build-arg IMAGE_TYPE=$(IMAGE_TYPE) \ --build-arg GO_TAGS="none" \ + --build-arg MAKEFLAGS="$(DOCKER_MAKEFLAGS)" \ --build-arg BUILD_TYPE=sycl_f32 -t $(DOCKER_IMAGE) . docker-image-intel-xpu: @@ -589,6 +592,7 @@ docker-image-intel-xpu: --build-arg BASE_IMAGE=intel/oneapi-basekit:2024.0.1-devel-ubuntu22.04 \ --build-arg IMAGE_TYPE=$(IMAGE_TYPE) \ --build-arg GO_TAGS="none" \ + --build-arg MAKEFLAGS="$(DOCKER_MAKEFLAGS)" \ --build-arg BUILD_TYPE=sycl_f32 -t $(DOCKER_IMAGE) . .PHONY: swagger