--- name: 'Tests extras backends' on: pull_request: push: branches: - master tags: - '*' concurrency: group: ci-tests-extra-${{ github.head_ref || github.ref }}-${{ github.repository }} cancel-in-progress: true jobs: detect-changes: runs-on: ubuntu-latest outputs: run-all: ${{ steps.detect.outputs.run-all }} transformers: ${{ steps.detect.outputs.transformers }} rerankers: ${{ steps.detect.outputs.rerankers }} diffusers: ${{ steps.detect.outputs.diffusers }} coqui: ${{ steps.detect.outputs.coqui }} moonshine: ${{ steps.detect.outputs.moonshine }} pocket-tts: ${{ steps.detect.outputs.pocket-tts }} qwen-tts: ${{ steps.detect.outputs.qwen-tts }} qwen-asr: ${{ steps.detect.outputs.qwen-asr }} nemo: ${{ steps.detect.outputs.nemo }} voxcpm: ${{ steps.detect.outputs.voxcpm }} llama-cpp-quantization: ${{ steps.detect.outputs.llama-cpp-quantization }} acestep-cpp: ${{ steps.detect.outputs.acestep-cpp }} voxtral: ${{ steps.detect.outputs.voxtral }} steps: - name: Checkout repository uses: actions/checkout@v6 - name: Setup Bun uses: oven-sh/setup-bun@v2 - name: Install dependencies run: bun add js-yaml @octokit/core - name: Detect changed backends id: detect env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_EVENT_PATH: ${{ github.event_path }} run: bun run scripts/changed-backends.js # Requires CUDA # tests-chatterbox-tts: # runs-on: ubuntu-latest # steps: # - name: Clone # uses: actions/checkout@v6 # with: # submodules: true # - name: Dependencies # run: | # sudo apt-get update # sudo apt-get install build-essential ffmpeg # # Install UV # curl -LsSf https://astral.sh/uv/install.sh | sh # sudo apt-get install -y ca-certificates cmake curl patch python3-pip # sudo apt-get install -y libopencv-dev # pip install --user --no-cache-dir grpcio-tools==1.64.1 # - name: Test chatterbox-tts # run: | # make --jobs=5 --output-sync=target -C backend/python/chatterbox # make --jobs=5 --output-sync=target -C backend/python/chatterbox test tests-transformers: needs: detect-changes if: needs.detect-changes.outputs.transformers == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install build-essential ffmpeg # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh sudo apt-get install -y ca-certificates cmake curl patch python3-pip sudo apt-get install -y libopencv-dev pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test transformers run: | make --jobs=5 --output-sync=target -C backend/python/transformers make --jobs=5 --output-sync=target -C backend/python/transformers test tests-rerankers: needs: detect-changes if: needs.detect-changes.outputs.rerankers == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install build-essential ffmpeg # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh sudo apt-get install -y ca-certificates cmake curl patch python3-pip sudo apt-get install -y libopencv-dev pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test rerankers run: | make --jobs=5 --output-sync=target -C backend/python/rerankers make --jobs=5 --output-sync=target -C backend/python/rerankers test tests-diffusers: needs: detect-changes if: needs.detect-changes.outputs.diffusers == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential ffmpeg sudo apt-get install -y ca-certificates cmake curl patch python3-pip sudo apt-get install -y libopencv-dev # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test diffusers run: | make --jobs=5 --output-sync=target -C backend/python/diffusers make --jobs=5 --output-sync=target -C backend/python/diffusers test #tests-vllm: # runs-on: ubuntu-latest # steps: # - name: Clone # uses: actions/checkout@v6 # with: # submodules: true # - name: Dependencies # run: | # sudo apt-get update # sudo apt-get install -y build-essential ffmpeg # sudo apt-get install -y ca-certificates cmake curl patch python3-pip # sudo apt-get install -y libopencv-dev # # Install UV # curl -LsSf https://astral.sh/uv/install.sh | sh # pip install --user --no-cache-dir grpcio-tools==1.64.1 # - name: Test vllm backend # run: | # make --jobs=5 --output-sync=target -C backend/python/vllm # make --jobs=5 --output-sync=target -C backend/python/vllm test # tests-transformers-musicgen: # runs-on: ubuntu-latest # steps: # - name: Clone # uses: actions/checkout@v6 # with: # submodules: true # - name: Dependencies # run: | # sudo apt-get update # sudo apt-get install build-essential ffmpeg # # Install UV # curl -LsSf https://astral.sh/uv/install.sh | sh # sudo apt-get install -y ca-certificates cmake curl patch python3-pip # sudo apt-get install -y libopencv-dev # pip install --user --no-cache-dir grpcio-tools==1.64.1 # - name: Test transformers-musicgen # run: | # make --jobs=5 --output-sync=target -C backend/python/transformers-musicgen # make --jobs=5 --output-sync=target -C backend/python/transformers-musicgen test # tests-bark: # runs-on: ubuntu-latest # steps: # - name: Release space from worker # run: | # echo "Listing top largest packages" # pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) # head -n 30 <<< "${pkgs}" # echo # df -h # echo # sudo apt-get remove -y '^llvm-.*|^libllvm.*' || true # sudo apt-get remove --auto-remove android-sdk-platform-tools || true # sudo apt-get purge --auto-remove android-sdk-platform-tools || true # sudo rm -rf /usr/local/lib/android # sudo apt-get remove -y '^dotnet-.*|^aspnetcore-.*' || true # sudo rm -rf /usr/share/dotnet # sudo apt-get remove -y '^mono-.*' || true # sudo apt-get remove -y '^ghc-.*' || true # sudo apt-get remove -y '.*jdk.*|.*jre.*' || true # sudo apt-get remove -y 'php.*' || true # sudo apt-get remove -y hhvm powershell firefox monodoc-manual msbuild || true # sudo apt-get remove -y '^google-.*' || true # sudo apt-get remove -y azure-cli || true # sudo apt-get remove -y '^mongo.*-.*|^postgresql-.*|^mysql-.*|^mssql-.*' || true # sudo apt-get remove -y '^gfortran-.*' || true # sudo apt-get remove -y microsoft-edge-stable || true # sudo apt-get remove -y firefox || true # sudo apt-get remove -y powershell || true # sudo apt-get remove -y r-base-core || true # sudo apt-get autoremove -y # sudo apt-get clean # echo # echo "Listing top largest packages" # pkgs=$(dpkg-query -Wf '${Installed-Size}\t${Package}\t${Status}\n' | awk '$NF == "installed"{print $1 "\t" $2}' | sort -nr) # head -n 30 <<< "${pkgs}" # echo # sudo rm -rfv build || true # sudo rm -rf /usr/share/dotnet || true # sudo rm -rf /opt/ghc || true # sudo rm -rf "/usr/local/share/boost" || true # sudo rm -rf "$AGENT_TOOLSDIRECTORY" || true # df -h # - name: Clone # uses: actions/checkout@v6 # with: # submodules: true # - name: Dependencies # run: | # sudo apt-get update # sudo apt-get install build-essential ffmpeg # # Install UV # curl -LsSf https://astral.sh/uv/install.sh | sh # sudo apt-get install -y ca-certificates cmake curl patch python3-pip # sudo apt-get install -y libopencv-dev # pip install --user --no-cache-dir grpcio-tools==1.64.1 # - name: Test bark # run: | # 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 # TODO: Re-enable as soon as we have GPU nodes # tests-vllm: # runs-on: ubuntu-latest # steps: # - name: Clone # uses: actions/checkout@v6 # with: # submodules: true # - name: Dependencies # run: | # sudo apt-get update # sudo apt-get install build-essential ffmpeg # # Install UV # curl -LsSf https://astral.sh/uv/install.sh | sh # sudo apt-get install -y ca-certificates cmake curl patch python3-pip # sudo apt-get install -y libopencv-dev # pip install --user --no-cache-dir grpcio-tools==1.64.1 # - name: Test vllm # run: | # make --jobs=5 --output-sync=target -C backend/python/vllm # make --jobs=5 --output-sync=target -C backend/python/vllm test tests-coqui: needs: detect-changes if: needs.detect-changes.outputs.coqui == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential ffmpeg sudo apt-get install -y ca-certificates cmake curl patch espeak espeak-ng python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test coqui run: | make --jobs=5 --output-sync=target -C backend/python/coqui make --jobs=5 --output-sync=target -C backend/python/coqui test tests-moonshine: needs: detect-changes if: needs.detect-changes.outputs.moonshine == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential ffmpeg sudo apt-get install -y ca-certificates cmake curl patch python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test moonshine run: | make --jobs=5 --output-sync=target -C backend/python/moonshine make --jobs=5 --output-sync=target -C backend/python/moonshine test tests-pocket-tts: needs: detect-changes if: needs.detect-changes.outputs.pocket-tts == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential ffmpeg sudo apt-get install -y ca-certificates cmake curl patch python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test pocket-tts run: | make --jobs=5 --output-sync=target -C backend/python/pocket-tts make --jobs=5 --output-sync=target -C backend/python/pocket-tts test tests-qwen-tts: needs: detect-changes if: needs.detect-changes.outputs.qwen-tts == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential ffmpeg sudo apt-get install -y ca-certificates cmake curl patch python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test qwen-tts run: | make --jobs=5 --output-sync=target -C backend/python/qwen-tts make --jobs=5 --output-sync=target -C backend/python/qwen-tts test # TODO: s2-pro model is too large to load on CPU-only CI runners — re-enable # when we have GPU runners or a smaller test model. # tests-fish-speech: # runs-on: ubuntu-latest # timeout-minutes: 45 # steps: # - name: Clone # uses: actions/checkout@v6 # with: # submodules: true # - name: Dependencies # run: | # sudo apt-get update # sudo apt-get install -y build-essential ffmpeg portaudio19-dev # sudo apt-get install -y ca-certificates cmake curl patch python3-pip # # Install UV # curl -LsSf https://astral.sh/uv/install.sh | sh # pip install --user --no-cache-dir grpcio-tools==1.64.1 # - name: Test fish-speech # run: | # make --jobs=5 --output-sync=target -C backend/python/fish-speech # make --jobs=5 --output-sync=target -C backend/python/fish-speech test tests-qwen-asr: needs: detect-changes if: needs.detect-changes.outputs.qwen-asr == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential ffmpeg sox sudo apt-get install -y ca-certificates cmake curl patch python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test qwen-asr run: | make --jobs=5 --output-sync=target -C backend/python/qwen-asr make --jobs=5 --output-sync=target -C backend/python/qwen-asr test tests-nemo: needs: detect-changes if: needs.detect-changes.outputs.nemo == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential ffmpeg sox sudo apt-get install -y ca-certificates cmake curl patch python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test nemo run: | make --jobs=5 --output-sync=target -C backend/python/nemo make --jobs=5 --output-sync=target -C backend/python/nemo test tests-voxcpm: needs: detect-changes if: needs.detect-changes.outputs.voxcpm == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install build-essential ffmpeg sudo apt-get install -y ca-certificates cmake curl patch python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Test voxcpm run: | make --jobs=5 --output-sync=target -C backend/python/voxcpm make --jobs=5 --output-sync=target -C backend/python/voxcpm test tests-llama-cpp-quantization: needs: detect-changes if: needs.detect-changes.outputs.llama-cpp-quantization == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential cmake curl git python3-pip # Install UV curl -LsSf https://astral.sh/uv/install.sh | sh pip install --user --no-cache-dir grpcio-tools==1.64.1 - name: Build llama-quantize from llama.cpp run: | git clone --depth 1 https://github.com/ggml-org/llama.cpp.git /tmp/llama.cpp cmake -B /tmp/llama.cpp/build -S /tmp/llama.cpp -DGGML_NATIVE=OFF cmake --build /tmp/llama.cpp/build --target llama-quantize -j$(nproc) sudo cp /tmp/llama.cpp/build/bin/llama-quantize /usr/local/bin/ - name: Install backend run: | make --jobs=5 --output-sync=target -C backend/python/llama-cpp-quantization - name: Test llama-cpp-quantization run: | make --jobs=5 --output-sync=target -C backend/python/llama-cpp-quantization test tests-acestep-cpp: needs: detect-changes if: needs.detect-changes.outputs.acestep-cpp == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential cmake curl libopenblas-dev ffmpeg - name: Setup Go uses: actions/setup-go@v5 - name: Display Go version run: go version - name: Proto Dependencies run: | # Install protoc curl -L -s https://github.com/protocolbuffers/protobuf/releases/download/v26.1/protoc-26.1-linux-x86_64.zip -o protoc.zip && \ unzip -j -d /usr/local/bin protoc.zip bin/protoc && \ rm protoc.zip go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@1958fcbe2ca8bd93af633f11e97d44e567e945af PATH="$PATH:$HOME/go/bin" make protogen-go - name: Build acestep-cpp run: | make --jobs=5 --output-sync=target -C backend/go/acestep-cpp - name: Test acestep-cpp run: | make --jobs=5 --output-sync=target -C backend/go/acestep-cpp test tests-voxtral: needs: detect-changes if: needs.detect-changes.outputs.voxtral == 'true' || needs.detect-changes.outputs.run-all == 'true' runs-on: ubuntu-latest steps: - name: Clone uses: actions/checkout@v6 with: submodules: true - name: Dependencies run: | sudo apt-get update sudo apt-get install -y build-essential cmake curl libopenblas-dev ffmpeg - name: Setup Go uses: actions/setup-go@v5 # You can test your matrix by printing the current Go version - name: Display Go version run: go version - name: Proto Dependencies run: | # Install protoc curl -L -s https://github.com/protocolbuffers/protobuf/releases/download/v26.1/protoc-26.1-linux-x86_64.zip -o protoc.zip && \ unzip -j -d /usr/local/bin protoc.zip bin/protoc && \ rm protoc.zip go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.34.2 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@1958fcbe2ca8bd93af633f11e97d44e567e945af PATH="$PATH:$HOME/go/bin" make protogen-go - name: Build voxtral run: | make --jobs=5 --output-sync=target -C backend/go/voxtral - name: Test voxtral run: | make --jobs=5 --output-sync=target -C backend/go/voxtral test