From 6ab9a221857bca9f2f1361ca3693066e7a4f9be0 Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 29 Jan 2024 16:33:45 +0700 Subject: [PATCH 1/5] feat(ci): Add vulkan build for linux, macos and windows with AMD64 build --- .github/workflows/build.yml | 229 ++++++++++++++++++++++++++++++++++++ 1 file changed, 229 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3df205c33..089b80884 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -184,6 +184,76 @@ jobs: asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-linux-amd64.tar.gz asset_content_type: application/gzip + ubuntu-amd64-vulkan-build: + runs-on: ubuntu-18-04-cuda-11-7 + needs: [create-draft-release, set-nitro-version] + if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.set-nitro-version.result == 'success' + permissions: + contents: write + steps: + - name: Clone + id: checkout + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Prepare Vulkan SDK + uses: humbletim/setup-vulkan-sdk@v1.2.0 + with: + vulkan-query-version: 1.3.204.0 + vulkan-components: Vulkan-Headers, Vulkan-Loader + vulkan-use-cache: true + + - name: Build + id: make_build + run: | + ldd --version + ./install_deps.sh + mkdir build && cd build + cmake -DLLAMA_NATIVE=OFF -DLLAMA_VULKAN=OFF -DNITRO_VERSION=${{ needs.set-nitro-version.outputs.version }} .. + make -j $(nproc) + ls -la + + - name: Package + shell: bash + run: | + mkdir -p nitro + cp build/nitro nitro/ + tar -czvf nitro.tar.gz nitro + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + with: + name: nitro-linux-amd64 + path: ./nitro + + - name: Run e2e testing - LLama.CPP + shell: bash + run: | + # run e2e testing + cd nitro + chmod +x ../.github/scripts/e2e-test-llama-linux-and-mac.sh && ../.github/scripts/e2e-test-llama-linux-and-mac.sh ./nitro ${{ env.LLM_MODEL_URL }} + rm -rf uploads/ + + - name: Run e2e testing - Whisper.CPP + shell: bash + run: | + # run e2e testing + cd nitro + chmod +x ../.github/scripts/e2e-test-whisper-linux-and-mac.sh && ../.github/scripts/e2e-test-whisper-linux-and-mac.sh ./nitro ${{ env.WHISPER_MODEL_URL }} + rm -rf uploads/ + + - uses: actions/upload-release-asset@v1.0.1 + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-draft-release.outputs.upload_url }} + asset_path: ./nitro.tar.gz + asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-linux-amd64-vulkan.tar.gz + asset_content_type: application/gzip + ubuntu-amd64-cuda-build: runs-on: ubuntu-18-04-cuda-${{ matrix.cuda }} needs: [create-draft-release, set-nitro-version] @@ -397,6 +467,82 @@ jobs: asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-mac-amd64.tar.gz asset_content_type: application/gzip + macOS-vulkan-build: + runs-on: macos-latest + needs: [create-draft-release, set-nitro-version] + if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.set-nitro-version.result == 'success' + permissions: + contents: write + steps: + - name: Clone + id: checkout + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Dependencies + id: depends + continue-on-error: true + run: | + brew update + brew install sdl2 + + - name: Prepare Vulkan SDK + uses: humbletim/setup-vulkan-sdk@v1.2.0 + with: + vulkan-query-version: 1.3.204.0 + vulkan-components: Vulkan-Headers, Vulkan-Loader + vulkan-use-cache: true + + - name: Build + id: cmake_build + run: | + ./install_deps.sh + mkdir build && cd build + cmake -DNITRO_VERSION=${{ needs.set-nitro-version.outputs.version }} -DLLAMA_VULKAN=OFF .. + CC=gcc-8 make -j $(sysctl -n hw.ncp) + ls -la + + - name: Package + shell: bash + run: | + mkdir -p nitro + cp build/nitro nitro/ + tar -czvf nitro.tar.gz nitro + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + with: + name: nitro-mac-amd64 + path: ./nitro + + - name: Run e2e testing - LLama.CPP + shell: bash + run: | + # run e2e testing + cd nitro + chmod +x ../.github/scripts/e2e-test-llama-linux-and-mac.sh && ../.github/scripts/e2e-test-llama-linux-and-mac.sh ./nitro ${{ env.LLM_MODEL_URL }} + rm -rf uploads/ + + - name: Run e2e testing - Whisper.CPP + shell: bash + run: | + # run e2e testing + cd nitro + chmod +x ../.github/scripts/e2e-test-whisper-linux-and-mac.sh && ../.github/scripts/e2e-test-whisper-linux-and-mac.sh ./nitro ${{ env.WHISPER_MODEL_URL }} + rm -rf uploads/ + + - uses: actions/upload-release-asset@v1.0.1 + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-draft-release.outputs.upload_url }} + asset_path: ./nitro.tar.gz + asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-mac-amd64-vulkan.tar.gz + asset_content_type: application/gzip + windows-amd64-build: runs-on: windows-latest needs: [create-draft-release, set-nitro-version] @@ -483,6 +629,89 @@ jobs: asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-win-amd64.tar.gz asset_content_type: application/gzip + windows-amd64-vulkan-build: + runs-on: windows-latest + needs: [create-draft-release, set-nitro-version] + if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.set-nitro-version.result == 'success' + permissions: + contents: write + + steps: + - name: Clone + + id: checkout + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Setup VSWhere.exe + uses: warrenbuckley/Setup-VSWhere@v1 + with: + version: latest + silent: true + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: true + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1 + + - name: Fetch SDL2 and set SDL2_DIR version 2.28.5 + run: | + C:/msys64/usr/bin/wget.exe -qO sdl2.zip https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-devel-2.28.5-VC.zip + 7z x sdl2.zip + echo "SDL2_DIR=$env:GITHUB_WORKSPACE/SDL2-2.28.5/cmake" >> $env:GITHUB_ENV + + - name: actions-setup-cmake + uses: jwlawson/actions-setup-cmake@v1.14.1 + + - name: Prepare Vulkan SDK + uses: humbletim/setup-vulkan-sdk@v1.2.0 + with: + vulkan-query-version: 1.3.204.0 + vulkan-components: Vulkan-Headers, Vulkan-Loader + vulkan-use-cache: true + + - name: Build + id: cmake_build + shell: cmd + run: | + cmake -S ./nitro_deps -B ./build_deps/nitro_deps + cmake --build ./build_deps/nitro_deps --config Release + mkdir -p build + cd build + cmake .. -DLLAMA_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_VULKAN=ON -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=RELEASE -DWHISPER_SDL2=ON -DNITRO_VERSION=${{ needs.set-nitro-version.outputs.version }} + cmake --build . --config Release -j "%NUMBER_OF_PROCESSORS%" + + - name: Pack artifacts + id: pack_artifacts + shell: cmd + run: | + robocopy build_deps\_install\bin\ .\build\Release\ zlib.dll + robocopy build\bin\Release\ .\build\Release\ llama.dll + robocopy build\bin\Release\ .\build\Release\ whisper.dll + robocopy "$env:SDL2_DIR\..\lib\2.28.5\" .\build\Release\ SDL2.dll + dotnet tool install --global AzureSignTool + azuresigntool.exe sign -kvu "${{ secrets.AZURE_KEY_VAULT_URI }}" -kvi "${{ secrets.AZURE_CLIENT_ID }}" -kvt "${{ secrets.AZURE_TENANT_ID }}" -kvs "${{ secrets.AZURE_CLIENT_SECRET }}" -kvc ${{ secrets.AZURE_CERT_NAME }} -tr http://timestamp.globalsign.com/tsa/r6advanced1 -v ".\build\Release\nitro.exe" + 7z a -ttar temp.tar .\build\Release\* + 7z a -tgzip nitro.tar.gz temp.tar + + - name: Upload Artifact + uses: actions/upload-artifact@v2 + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' + with: + name: nitro-win-amd64 + path: ./build/Release + + - uses: actions/upload-release-asset@v1.0.1 + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create-draft-release.outputs.upload_url }} + asset_path: ./nitro.tar.gz + asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-win-amd64-vulkan.tar.gz + asset_content_type: application/gzip + windows-amd64-cuda-build: runs-on: windows-cuda-${{ matrix.cuda }} needs: [create-draft-release, set-nitro-version] From bdcf8a5c1d7954522c29ac2e61cc08620e4cbf46 Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 29 Jan 2024 17:41:33 +0700 Subject: [PATCH 2/5] fix(ci): macos vulkan disable -DLLAMA_METAL=OFF --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 089b80884..646328dc9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -499,7 +499,7 @@ jobs: run: | ./install_deps.sh mkdir build && cd build - cmake -DNITRO_VERSION=${{ needs.set-nitro-version.outputs.version }} -DLLAMA_VULKAN=OFF .. + cmake -DNITRO_VERSION=${{ needs.set-nitro-version.outputs.version }} -DLLAMA_VULKAN=OFF -DLLAMA_METAL=OFF .. CC=gcc-8 make -j $(sysctl -n hw.ncp) ls -la From 068f0a981a54418b4813c9aeb6e1d5881af777a5 Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 29 Jan 2024 17:56:24 +0700 Subject: [PATCH 3/5] fix(ci): Update name of jobs --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 646328dc9..b8968e6dd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -320,7 +320,7 @@ jobs: asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-linux-amd64-cuda-${{ matrix.cuda }}.tar.gz asset_content_type: application/gzip - macOS-M-build: + macOS-silicon-build: runs-on: mac-silicon needs: [create-draft-release, set-nitro-version] if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.set-nitro-version.result == 'success' @@ -398,7 +398,7 @@ jobs: asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-mac-arm64.tar.gz asset_content_type: application/gzip - macOS-Intel-build: + macOS-amd64-build: runs-on: macos-latest needs: [create-draft-release, set-nitro-version] if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.set-nitro-version.result == 'success' @@ -467,7 +467,7 @@ jobs: asset_name: nitro-${{ needs.create-draft-release.outputs.version }}-mac-amd64.tar.gz asset_content_type: application/gzip - macOS-vulkan-build: + macOS-amd64-vulkan-build: runs-on: macos-latest needs: [create-draft-release, set-nitro-version] if: always() && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.set-nitro-version.result == 'success' From af67714a71457b977369e4d10e6e329d8acbe88d Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 29 Jan 2024 17:59:11 +0700 Subject: [PATCH 4/5] fix(ci): Update job name references --- .github/workflows/build.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b8968e6dd..8edaad5ad 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -810,8 +810,8 @@ jobs: [ ubuntu-amd64-build, ubuntu-amd64-cuda-build, - macOS-M-build, - macOS-Intel-build, + macOS-silicon-build, + macOS-amd64-build, windows-amd64-build, windows-amd64-cuda-build, ] @@ -825,14 +825,14 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} noti-discord-nightly: - if: always() && github.event_name == 'schedule' && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.ubuntu-amd64-build.result == 'success' && needs.ubuntu-amd64-cuda-build.result == 'success' && needs.macOS-M-build.result == 'success' && needs.macOS-Intel-build.result == 'success' && needs.windows-amd64-build.result == 'success' && needs.windows-amd64-cuda-build.result == 'success' + if: always() && github.event_name == 'schedule' && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.ubuntu-amd64-build.result == 'success' && needs.ubuntu-amd64-cuda-build.result == 'success' && needs.macOS-silicon-build.result == 'success' && needs.macOS-amd64-build.result == 'success' && needs.windows-amd64-build.result == 'success' && needs.windows-amd64-cuda-build.result == 'success' needs: [ create-draft-release, ubuntu-amd64-build, ubuntu-amd64-cuda-build, - macOS-M-build, - macOS-Intel-build, + macOS-silicon-build, + macOS-amd64-build, windows-amd64-build, windows-amd64-cuda-build, ] @@ -861,14 +861,14 @@ jobs: GITHUB_RUN_ID: ${{ github.run_id }} noti-discord-manual: - if: always() && github.event_name == 'workflow_dispatch' && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.ubuntu-amd64-build.result == 'success' && needs.ubuntu-amd64-cuda-build.result == 'success' && needs.macOS-M-build.result == 'success' && needs.macOS-Intel-build.result == 'success' && needs.windows-amd64-build.result == 'success' && needs.windows-amd64-cuda-build.result == 'success' + if: always() && github.event_name == 'workflow_dispatch' && (needs.create-draft-release.result == 'success' || needs.create-draft-release.result == 'skipped') && needs.ubuntu-amd64-build.result == 'success' && needs.ubuntu-amd64-cuda-build.result == 'success' && needs.macOS-silicon-build.result == 'success' && needs.macOS-amd64-build.result == 'success' && needs.windows-amd64-build.result == 'success' && needs.windows-amd64-cuda-build.result == 'success' needs: [ create-draft-release, ubuntu-amd64-build, ubuntu-amd64-cuda-build, - macOS-M-build, - macOS-Intel-build, + macOS-silicon-build, + macOS-amd64-build, windows-amd64-build, windows-amd64-cuda-build, ] From 13de704a69e7f0ff98f3e2e737b28770020bb932 Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 29 Jan 2024 18:02:23 +0700 Subject: [PATCH 5/5] fix(ci): Add job dependencies for noti and release --- .github/workflows/build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8edaad5ad..5b46ef66e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -814,6 +814,9 @@ jobs: macOS-amd64-build, windows-amd64-build, windows-amd64-cuda-build, + macOS-amd64-vulkan-build, + ubuntu-amd64-vulkan-build, + windows-amd64-vulkan-build, ] permissions: contents: write @@ -835,6 +838,9 @@ jobs: macOS-amd64-build, windows-amd64-build, windows-amd64-cuda-build, + macOS-amd64-vulkan-build, + ubuntu-amd64-vulkan-build, + windows-amd64-vulkan-build, ] runs-on: ubuntu-latest steps: @@ -871,6 +877,9 @@ jobs: macOS-amd64-build, windows-amd64-build, windows-amd64-cuda-build, + macOS-amd64-vulkan-build, + ubuntu-amd64-vulkan-build, + windows-amd64-vulkan-build, ] runs-on: ubuntu-latest steps: