name: LLM Binary Build # Cancel previous runs in the PR when you push new commits # concurrency: # group: ${{ github.workflow }}-llm-binary-build-${{ github.event.pull_request.number || github.run_id }} # cancel-in-progress: false # Controls when the action will run. on: # Triggers the workflow on push or pull request events but only for the main branch push: branches: [main] paths: - ".github/workflows/llm-binary-build.yml" pull_request: branches: [main] paths: - ".github/workflows/llm-binary-build.yml" workflow_dispatch: workflow_call: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: check-linux-avx2-artifact: runs-on: ubuntu-latest outputs: if-exists: ${{steps.check_artifact.outputs.exists}} steps: - name: Check if built id: check_artifact uses: xSAVIKx/artifact-exists-action@v0 with: name: linux-avx2 linux-build-avx2: runs-on: [self-hosted, AVX2, centos7] needs: check-linux-avx2-artifact if: needs.check-linux-avx2-artifact.outputs.if-exists == 'false' steps: - name: Set access token run: | echo "github_access_token=${GITHUB_ACCESS_TOKEN}" >> "$GITHUB_ENV" - uses: actions/checkout@v3 with: repository: "intel-analytics/llm.cpp" token: ${{ env.github_access_token }} - name: Install Build Environment shell: bash run: | yum update -y yum install -y centos-release-scl yum install -y devtoolset-11 yum install -y sshpass netcat - name: Build binary shell: bash run: | scl enable devtoolset-11 'make' - name: Move release binary shell: bash run: | mkdir release mv build/main-bloom release/main-bloom_avx2 mv build/quantize-bloom release/quantize-bloom mv build/libbloom.so release/libbloom_avx2.so mv build/main-llama release/main-llama_avx2 mv build/quantize-llama release/quantize-llama mv build/libllama.so release/libllama_avx2.so mv build/main-gptneox release/main-gptneox_avx2 mv build/quantize-gptneox release/quantize-gptneox mv build/libgptneox.so release/libgptneox_avx2.so mv build/main-starcoder release/main-starcoder_avx2 mv build/quantize-starcoder release/quantize-starcoder mv build/libstarcoder.so release/libstarcoder_avx2.so - name: Archive build files uses: actions/upload-artifact@v3 with: name: linux-avx2 path: | release - name: Clean up test environment shell: bash run: | make clean check-linux-avx512-artifact: runs-on: ubuntu-latest outputs: if-exists: ${{steps.check_artifact.outputs.exists}} steps: - name: Check if built id: check_artifact uses: xSAVIKx/artifact-exists-action@v0 with: name: linux-avx512 linux-build-avx512: runs-on: [self-hosted, AVX512, centos7] needs: check-linux-avx512-artifact if: needs.check-linux-avx512-artifact.outputs.if-exists == 'false' steps: - name: Set access token run: | echo "github_access_token=${GITHUB_ACCESS_TOKEN}" >> "$GITHUB_ENV" - uses: actions/checkout@v3 with: repository: "intel-analytics/llm.cpp" token: ${{ env.github_access_token }} - name: Install Build Environment shell: bash run: | yum update -y yum install -y centos-release-scl yum install -y devtoolset-11 yum install -y sshpass netcat - name: Build binary shell: bash run: | scl enable devtoolset-11 'make' - name: Move release binary shell: bash run: | mkdir release mv build/main-bloom release/main-bloom_avx512 mv build/quantize-bloom release/quantize-bloom_avx512 mv build/libbloom.so release/libbloom_avx512.so mv build/main-llama release/main-llama_avx512 mv build/quantize-llama release/quantize-llama_avx512 mv build/libllama.so release/libllama_avx512.so mv build/main-gptneox release/main-gptneox_avx512 mv build/quantize-gptneox release/quantize-gptneox_avx512 mv build/libgptneox.so release/libgptneox_avx512.so mv build/main-starcoder release/main-starcoder_avx512 mv build/quantize-starcoder release/quantize-starcoder_avx512 mv build/libstarcoder.so release/libstarcoder_avx512.so - name: Archive build files uses: actions/upload-artifact@v3 with: name: linux-avx512 path: | release - name: Clean up test environment shell: bash run: | make clean check-windows-avx2-artifact: runs-on: ubuntu-latest outputs: if-exists: ${{steps.check_artifact.outputs.exists}} steps: - name: Check if built id: check_artifact uses: xSAVIKx/artifact-exists-action@v0 with: name: windows-avx2 windows-build-avx2: runs-on: [self-hosted, Windows] needs: check-windows-avx2-artifact if: needs.check-windows-avx2-artifact.outputs.if-exists == 'false' steps: - name: Set access token run: | echo "github_access_token=$env:GITHUB_ACCESS_TOKEN" >> $env:GITHUB_ENV echo "github_access_token=$env:GITHUB_ACCESS_TOKEN" - uses: actions/checkout@v3 with: repository: "intel-analytics/llm.cpp" token: ${{ env.github_access_token }} - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.1 with: msbuild-architecture: x64 - name: Add cmake to PATH uses: ilammy/msvc-dev-cmd@v1 - name: Build binary shell: powershell run: | cmake . cmake --build . --config Release - name: Archive build files uses: actions/upload-artifact@v3 with: name: windows-avx2 path: | build/Release check-windows-avx2-vnni-artifact: runs-on: ubuntu-latest outputs: if-exists: ${{steps.check_artifact.outputs.exists}} steps: - name: Check if built id: check_artifact uses: xSAVIKx/artifact-exists-action@v0 with: name: windows-avx2-vnni windows-build-avx2-vnni: runs-on: [self-hosted, Windows] needs: check-windows-avx2-vnni-artifact if: needs.check-windows-avx2-vnni-artifact.outputs.if-exists == 'false' steps: - name: Set access token run: | echo "github_access_token=$env:GITHUB_ACCESS_TOKEN" >> $env:GITHUB_ENV echo "github_access_token=$env:GITHUB_ACCESS_TOKEN" - uses: actions/checkout@v3 with: repository: "intel-analytics/llm.cpp" token: ${{ env.github_access_token }} - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.1 with: msbuild-architecture: x64 - name: Add cmake to PATH uses: ilammy/msvc-dev-cmd@v1 - name: Build binary shell: powershell run: | cmake -DAVXVNNI=ON . cmake --build . --config Release - name: Move release binary shell: powershell run: | if (Test-Path ./release) { rm -r -fo release } mkdir release mv build/Release/main-bloom.exe release/main-bloom_vnni.exe mv build/Release/quantize-bloom.exe release/quantize-bloom_vnni.exe mv build/Release/bloom.dll release/libbloom_vnni.dll mv build/Release/main-llama.exe release/main-llama_vnni.exe mv build/Release/quantize-llama.exe release/quantize-llama_vnni.exe mv build/Release/llama.dll release/libllama_vnni.dll mv build/Release/main-gptneox.exe release/main-gptneox_vnni.exe mv build/Release/quantize-gptneox.exe release/quantize-gptneox_vnni.exe mv build/Release/gptneox.dll release/libgptneox_vnni.dll mv build/Release/main-starcoder.exe release/main-starcoder_vnni.exe mv build/Release/quantize-starcoder.exe release/quantize-starcoder_vnni.exe mv build/Release/starcoder.dll release/libstarcoder_vnni.dll - name: Archive build files uses: actions/upload-artifact@v3 with: name: windows-avx2-vnni path: | release