fix: warm-up (#259) #123
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
tags: ["v[0-9]+.[0-9]+.[0-9]+"] | |
paths: | |
[ | |
".github/scripts/**", | |
".github/workflows/build.yml", | |
"**/CMakeLists.txt", | |
"**/Makefile", | |
"**/*.h", | |
"**/*.hpp", | |
"**/*.c", | |
"**/*.cpp", | |
"**/*.cu", | |
"**/*.cc", | |
"**/*.cxx", | |
"llama.cpp", | |
"!docs/**", | |
"!.gitignore", | |
"!README.md", | |
] | |
workflow_dispatch: | |
env: | |
LLM_MODEL_URL: https://delta.jan.ai/tinyllama-1.1b-chat-v0.3.Q2_K.gguf | |
EMBEDDING_MODEL_URL: https://catalog.jan.ai/dist/models/embeds/nomic-embed-text-v1.5.f16.gguf | |
VULKAN_VERSION: 1.3.261.1 | |
jobs: | |
create-draft-release: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') | |
outputs: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
version: ${{ steps.get_version.outputs.version }} | |
permissions: | |
contents: write | |
steps: | |
- name: Extract tag name without v prefix | |
id: get_version | |
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV && echo "::set-output name=version::${GITHUB_REF#refs/tags/v}" | |
env: | |
GITHUB_REF: ${{ github.ref }} | |
- name: Create Draft Release | |
id: create_release | |
uses: softprops/action-gh-release@v2 | |
with: | |
tag_name: ${{ github.ref_name }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
name: "${{ env.VERSION }}" | |
draft: true | |
generate_release_notes: true | |
prerelease: false | |
build-and-test: | |
runs-on: ${{ matrix.runs-on }} | |
needs: [create-draft-release] | |
timeout-minutes: 90 | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: "linux" | |
name: "amd64-avx2" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_NATIVE=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: true | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-noavx" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_NATIVE=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx512" | |
runs-on: "ubuntu-20-04" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-vulkan" | |
runs-on: "ubuntu-22-04" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_VULKAN=ON -DGGML_NATIVE=OFF -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: true | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-noavx-cuda-11-7" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DBUILD_SHARED_LIBS=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx2-cuda-11-7" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx-cuda-11-7" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx512-cuda-11-7" | |
runs-on: "ubuntu-20-04-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-noavx-cuda-12-0" | |
runs-on: "ubuntu-20-04-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DBUILD_SHARED_LIBS=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx2-cuda-12-0" | |
runs-on: "ubuntu-20-04-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx-cuda-12-0" | |
runs-on: "ubuntu-20-04-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "linux" | |
name: "amd64-avx512-cuda-12-0" | |
runs-on: "ubuntu-20-04-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DGGML_CUDA=ON -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE='Release' -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: "/home/runner/.ccache" | |
- os: "mac" | |
name: "amd64" | |
runs-on: "macos-12" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_METAL=OFF" | |
run-e2e: true | |
vulkan: false | |
ccache: false | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "mac" | |
name: "arm64" | |
runs-on: "macos-latest" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_METAL_EMBED_LIBRARY=ON" | |
run-e2e: false | |
vulkan: false | |
ccache: false | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx2" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: true | |
vulkan: false | |
ccache: false | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-noavx" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DBUILD_SHARED_LIBS=OFF -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_NATIVE=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: false | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: true | |
vulkan: false | |
ccache: false | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx512" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DLLAMA_BLAS=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: false | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-vulkan" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_VULKAN=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl -GNinja" | |
run-e2e: false | |
vulkan: true | |
ccache: false | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-noavx-cuda-12-0" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx2-cuda-12-0" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx-cuda-12-0" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx512-cuda-12-0" | |
runs-on: "windows-cuda-12-0" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-noavx-cuda-11-7" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX=OFF -DGGML_AVX2=OFF -DGGML_FMA=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx2-cuda-11-7" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx-cuda-11-7" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX2=OFF -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
- os: "windows" | |
name: "amd64-avx512-cuda-11-7" | |
runs-on: "windows-cuda-11-7" | |
cmake-flags: "-DCORTEXLLAMA_VERSION=${{needs.create-draft-release.outputs.version}} -DGGML_AVX512=ON -DGGML_NATIVE=OFF -DLLAMA_BUILD_SERVER=ON -DGGML_CUDA=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE='Release' -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CUDA_COMPILER_LAUNCHER=ccache -GNinja" | |
run-e2e: false | |
vulkan: false | |
ccache: true | |
ccache-dir: 'C:\Users\ContainerAdministrator\AppData\Local\ccache' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: recursive | |
- name: Apply patch file | |
run: | | |
cd llama.cpp | |
git apply ../patches/0001-Add-API-query-buffer-size.patch | |
- name: use python for linux | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.9' | |
- name: Install tools on Windows | |
if: runner.os == 'Windows' | |
run: | | |
choco install ccache awscli make ccache ninja -y | |
- name: Install tools on Linux | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get install -y ninja-build | |
python3 -m pip install awscli | |
cd /tmp | |
wget https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2-linux-x86_64.tar.xz | |
tar -xvf ccache-4.10.2-linux-x86_64.tar.xz | |
sudo cp ccache-4.10.2-linux-x86_64/ccache /usr/bin/ccache | |
ccache -V | |
rm -rf /tmp/ccache-4.10.2-linux-x86_64.tar.xz /tmp/ccache-4.10.2-linux-x86_64 | |
- name: Download ccache from s3 | |
if: runner.os == 'Windows' | |
continue-on-error: true | |
run: | | |
Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" | |
refreshenv | |
aws s3 sync s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} ${{ matrix.ccache-dir }} --endpoint ${{ secrets.MINIO_ENDPOINT }} --cli-read-timeout 0 | |
env: | |
AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
- name: Download ccache from s3 | |
if: runner.os == 'Linux' | |
continue-on-error: true | |
run: | | |
aws s3 sync s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} ${{ matrix.ccache-dir }} --endpoint ${{ secrets.MINIO_ENDPOINT }} --cli-read-timeout 0 | |
env: | |
AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
- name: Install coreutils macos | |
if: runner.os == 'macOS' | |
run: | | |
brew install coreutils | |
- name: Prepare Vulkan SDK Linux | |
if: ${{ matrix.vulkan && (matrix.os == 'linux') }} | |
run: | | |
wget -qO - https://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add - | |
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-jammy.list https://packages.lunarg.com/vulkan/lunarg-vulkan-jammy.list | |
sudo apt-get update -y | |
sudo apt-get install -y build-essential vulkan-sdk | |
- name: Prepare Vulkan SDK Windows | |
if: ${{ matrix.vulkan && (matrix.os == 'windows') }} | |
continue-on-error: true | |
run: | | |
curl.exe -o $env:RUNNER_TEMP/VulkanSDK-Installer.exe -L "https://sdk.lunarg.com/sdk/download/${env:VULKAN_VERSION}/windows/VulkanSDK-${env:VULKAN_VERSION}-Installer.exe" | |
& "$env:RUNNER_TEMP\VulkanSDK-Installer.exe" --accept-licenses --default-answer --confirm-command install | |
Add-Content $env:GITHUB_ENV "VULKAN_SDK=C:\VulkanSDK\${env:VULKAN_VERSION}" | |
Add-Content $env:GITHUB_PATH "C:\VulkanSDK\${env:VULKAN_VERSION}\bin" | |
- name: Get Cer for code signing | |
if: runner.os == 'macOS' | |
run: base64 -d <<< "$CODE_SIGN_P12_BASE64" > /tmp/codesign.p12 | |
shell: bash | |
env: | |
CODE_SIGN_P12_BASE64: ${{ secrets.CODE_SIGN_P12_BASE64 }} | |
- uses: apple-actions/import-codesign-certs@v2 | |
if: runner.os == 'macOS' | |
with: | |
p12-file-base64: ${{ secrets.CODE_SIGN_P12_BASE64 }} | |
p12-password: ${{ secrets.CODE_SIGN_P12_PASSWORD }} | |
- uses: actions/setup-dotnet@v3 | |
if: runner.os == 'Windows' | |
with: | |
dotnet-version: "8.0.x" | |
- name: Add msbuild to PATH | |
if: runner.os == 'Windows' | |
uses: ilammy/msvc-dev-cmd@v1.13.0 | |
- name: Build | |
id: build-and-test | |
run: | | |
make build-example-server CMAKE_EXTRA_FLAGS="${{ matrix.cmake-flags }}" | |
- name: Pre Package | |
run: | | |
make pre-package | |
- uses: 1arp/create-a-file-action@0.4.5 | |
with: | |
path: 'cortex.llamacpp' | |
isAbsolutePath: false | |
file: 'version.txt' | |
content: | | |
name: ${{ matrix.os }}-${{ matrix.name }} | |
version: ${{needs.create-draft-release.outputs.version}} | |
- name: Code Signing macOS | |
if: runner.os == 'macOS' | |
run: | | |
make codesign CODE_SIGN=true DEVELOPER_ID="${{ secrets.DEVELOPER_ID }}" | |
- name: Code Signing Windows | |
if: runner.os == 'Windows' | |
shell: cmd | |
run: | | |
set PATH=%PATH%;%USERPROFILE%\.dotnet\tools | |
make codesign CODE_SIGN=true AZURE_KEY_VAULT_URI="${{ secrets.AZURE_KEY_VAULT_URI }}" AZURE_CLIENT_ID="${{ secrets.AZURE_CLIENT_ID }}" AZURE_TENANT_ID="${{ secrets.AZURE_TENANT_ID }}" AZURE_CLIENT_SECRET="${{ secrets.AZURE_CLIENT_SECRET }}" AZURE_CERT_NAME="${{ secrets.AZURE_CERT_NAME }}" | |
- name: Package | |
run: | | |
cat cortex.llamacpp/version.txt | |
make package | |
- name: Run e2e testing | |
if: ${{ matrix.run-e2e }} | |
run: | | |
make run-e2e-test LLM_MODEL_URL=${{ env.LLM_MODEL_URL }} EMBEDDING_MODEL_URL=${{ env.EMBEDDING_MODEL_URL }} | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cortex.llamacpp-${{ matrix.os }}-${{ matrix.name }} | |
path: ./cortex.llamacpp | |
- name: Calculate SHA512 Checksum (macOS) | |
if: runner.os == 'macOS' | |
run: | | |
sha512sum ./cortex.llamacpp.tar.gz | awk '{ print $1 }' > sha512.txt | |
size=$(stat -f%z ./cortex.llamacpp.tar.gz) # Sử dụng -f%z cho macOS | |
echo "checksum=$(cat sha512.txt)" >> $GITHUB_ENV | |
echo "size=$size" >> $GITHUB_ENV | |
- name: Calculate SHA512 Checksum (Windows) | |
if: runner.os == 'Windows' | |
shell: pwsh | |
run: | | |
CertUtil -hashfile ./cortex.llamacpp.tar.gz SHA512 | Select-String -Pattern "^[0-9a-fA-F]+$" | Out-File sha512.txt | |
$size = (Get-Item ./cortex.llamacpp.tar.gz).length | |
echo "checksum=$(Get-Content sha512.txt)" >> $env:GITHUB_ENV | |
echo "size=$size" >> $env:GITHUB_ENV | |
- name: Calculate SHA512 Checksum (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
sha512sum ./cortex.llamacpp.tar.gz | awk '{ print $1 }' > sha512.txt | |
size=$(stat -c%s ./cortex.llamacpp.tar.gz) | |
echo "checksum=$(cat sha512.txt)" >> $GITHUB_ENV | |
echo "size=$size" >> $GITHUB_ENV | |
## Write for matrix outputs workaround | |
- uses: cloudposse/github-action-matrix-outputs-write@v1 | |
id: out | |
with: | |
matrix-step-name: ${{ github.job }} | |
matrix-key: ${{ matrix.os }}-${{ matrix.name }} | |
outputs: |- | |
sha512: ${{ env.checksum }} | |
size: ${{ env.size }} | |
- 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: ./cortex.llamacpp.tar.gz | |
asset_name: cortex.llamacpp-${{ needs.create-draft-release.outputs.version }}-${{ matrix.os }}-${{ matrix.name }}.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload ccache to s3 | |
continue-on-error: true | |
if: always() && runner.os == 'Windows' | |
run: | | |
Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" | |
refreshenv | |
aws s3 sync ${{ matrix.ccache-dir }} s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} --endpoint ${{ secrets.MINIO_ENDPOINT }} | |
env: | |
AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
- name: Upload ccache to s3 | |
continue-on-error: true | |
if: always() && runner.os == 'Linux' | |
run: | | |
aws s3 sync ${{ matrix.ccache-dir }} s3://${{ secrets.MINIO_BUCKET_NAME }}/ccache-data-${{ matrix.os }}-${{ matrix.name }} --endpoint ${{ secrets.MINIO_ENDPOINT }} | |
env: | |
AWS_ACCESS_KEY_ID: "${{ secrets.MINIO_ACCESS_KEY_ID }}" | |
AWS_SECRET_ACCESS_KEY: "${{ secrets.MINIO_SECRET_ACCESS_KEY }}" | |
AWS_DEFAULT_REGION: "${{ secrets.MINIO_REGION }}" | |
## Read matrix outputs | |
read: | |
runs-on: ubuntu-latest | |
needs: [build-and-test] | |
steps: | |
- uses: cloudposse/github-action-matrix-outputs-read@v1 | |
id: read | |
with: | |
matrix-step-name: build-and-test | |
outputs: | |
result: "${{ steps.read.outputs.result }}" | |
create-checksum-file: | |
runs-on: ubuntu-20-04 | |
permissions: | |
contents: write | |
needs: [read, create-draft-release] | |
steps: | |
- name: Download cuda dependencies from s3 and create checksum | |
run: | | |
wget http://minio.jan.ai:9000/cicd/dist/cuda-dependencies/12.0/linux/cuda.tar.gz -O /tmp/cuda-12-0-linux-amd64.tar.gz | |
wget http://minio.jan.ai:9000/cicd/dist/cuda-dependencies/11.7/linux/cuda.tar.gz -O /tmp/cuda-11-7-linux-amd64.tar.gz | |
wget http://minio.jan.ai:9000/cicd/dist/cuda-dependencies/12.0/windows/cuda.tar.gz -O /tmp/cuda-12-0-windows-amd64.tar.gz | |
wget http://minio.jan.ai:9000/cicd/dist/cuda-dependencies/11.7/windows/cuda.tar.gz -O /tmp/cuda-11-7-windows-amd64.tar.gz | |
version=${{ needs.create-draft-release.outputs.version }} | |
outputs=${{ toJson(needs.read.outputs.result) }} | |
echo $outputs | |
echo "version: $version" > checksum.yml | |
echo "files:" >> checksum.yml | |
echo "$outputs" | jq -r --arg version "$version" ' | |
.sha512 as $sha512 | | |
.size as $size | | |
(.sha512 | keys[]) as $key | | |
"- url: cortex.llamacpp-\($version)-\($key).tar.gz\n sha512: >-\n \($sha512[$key])\n size: \($size[$key])" | |
' >> checksum.yml | |
echo "- url: cuda-12-0-linux-amd64.tar.gz" >> checksum.yml | |
echo " sha512: >-" >> checksum.yml | |
echo " $(sha512sum /tmp/cuda-12-0-linux-amd64.tar.gz | awk '{ print $1 }')" >> checksum.yml | |
echo " size: $(stat -c%s /tmp/cuda-12-0-linux-amd64.tar.gz)" >> checksum.yml | |
echo "- url: cuda-11-7-linux-amd64.tar.gz" >> checksum.yml | |
echo " sha512: >-" >> checksum.yml | |
echo " $(sha512sum /tmp/cuda-11-7-linux-amd64.tar.gz | awk '{ print $1 }')" >> checksum.yml | |
echo " size: $(stat -c%s /tmp/cuda-11-7-linux-amd64.tar.gz)" >> checksum.yml | |
echo "- url: cuda-11-7-windows-amd64.tar.gz" >> checksum.yml | |
echo " sha512: >-" >> checksum.yml | |
echo " $(sha512sum /tmp/cuda-11-7-windows-amd64.tar.gz | awk '{ print $1 }')" >> checksum.yml | |
echo " size: $(stat -c%s /tmp/cuda-11-7-windows-amd64.tar.gz)" >> checksum.yml | |
echo "- url: cuda-12-0-windows-amd64.tar.gz" >> checksum.yml | |
echo " sha512: >-" >> checksum.yml | |
echo " $(sha512sum /tmp/cuda-12-0-windows-amd64.tar.gz | awk '{ print $1 }')" >> checksum.yml | |
echo " size: $(stat -c%s /tmp/cuda-12-0-windows-amd64.tar.gz)" >> checksum.yml | |
cat checksum.yml | |
- name: Upload checksum.yml to GitHub Release | |
uses: actions/upload-release-asset@v1 | |
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: ./checksum.yml | |
asset_name: checksum.yml | |
asset_content_type: text/yaml | |
- name: upload cuda-12-0-linux-amd64.tar.gz to Github Release | |
uses: actions/upload-release-asset@v1 | |
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: /tmp/cuda-12-0-linux-amd64.tar.gz | |
asset_name: cuda-12-0-linux-amd64.tar.gz | |
asset_content_type: application/gzip | |
- name: upload cuda-11-7-linux-amd64.tar.gz to Github Release | |
uses: actions/upload-release-asset@v1 | |
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: /tmp/cuda-11-7-linux-amd64.tar.gz | |
asset_name: cuda-11-7-linux-amd64.tar.gz | |
asset_content_type: application/gzip | |
- name: upload cuda-12-0-windows-amd64.tar.gz to Github Release | |
uses: actions/upload-release-asset@v1 | |
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: /tmp/cuda-12-0-windows-amd64.tar.gz | |
asset_name: cuda-12-0-windows-amd64.tar.gz | |
asset_content_type: application/gzip | |
- name: upload cuda-11-7-windows-amd64.tar.gz to Github Release | |
uses: actions/upload-release-asset@v1 | |
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: /tmp/cuda-11-7-windows-amd64.tar.gz | |
asset_name: cuda-11-7-windows-amd64.tar.gz | |
asset_content_type: application/gzip |