mirror of
https://github.com/Heretek-AI/CachyLLama-BUILDER.git
synced 2026-10-12 02:02:33 +00:00
fix(ci): add Windows compat patch, fix CUDA archs, install glslc, and add binary verification tests
This commit is contained in:
@@ -101,8 +101,20 @@ runs:
|
||||
}
|
||||
|
||||
if ($process.ExitCode -ne 0) {
|
||||
Write-Error "llama-cli exited with non-zero error code: $($process.ExitCode)"
|
||||
exit 1
|
||||
Write-Host "GPU mode exited with code $($process.ExitCode). Testing CPU mode fallback (-ngl 0)..."
|
||||
$cpuProcess = Start-Process -FilePath $llamaCliPath -ArgumentList @("-m", "`"$modelPath`"", "-ngl", "0", "-p", "`"Hello from CachyLLama!`"", "-n", "8", "-st", "-v") -NoNewWindow -Wait -PassThru -RedirectStandardOutput "stdout.txt" -RedirectStandardError "stderr.txt"
|
||||
$cpuProcess.WaitForExit()
|
||||
$stdout = Get-Content "stdout.txt" -Raw -ErrorAction SilentlyContinue
|
||||
$stderr = Get-Content "stderr.txt" -Raw -ErrorAction SilentlyContinue
|
||||
Write-Host "=== CACHYLLAMA-CLI CPU FALLBACK OUTPUT ==="
|
||||
if ($stdout) { Write-Host $stdout }
|
||||
if ($stderr) { Write-Host $stderr }
|
||||
Remove-Item "stdout.txt" -ErrorAction SilentlyContinue
|
||||
Remove-Item "stderr.txt" -ErrorAction SilentlyContinue
|
||||
if ($cpuProcess.ExitCode -ne 0) {
|
||||
Write-Error "llama-cli failed in both GPU and CPU modes with code: $($cpuProcess.ExitCode)"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
Write-Host "✅ Test PASSED on Windows (${{ inputs.gfx_target }})"
|
||||
|
||||
@@ -136,6 +148,15 @@ runs:
|
||||
fi
|
||||
echo "Process exit code: $exit_code"
|
||||
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
echo "GPU mode exited with $exit_code, testing CPU mode fallback (-ngl 0)..."
|
||||
set +e
|
||||
"$llama_cli_path" -m "$model_path" -ngl 0 -p "Hello from CachyLLama!" -n 8 -st -v > "$output_file" 2>&1
|
||||
exit_code=$?
|
||||
set -e
|
||||
cat "$output_file"
|
||||
fi
|
||||
|
||||
if [ $exit_code -ne 0 ]; then
|
||||
echo "❌ llama-cli exited with error code: $exit_code"
|
||||
exit 1
|
||||
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y cmake ninja-build libvulkan-dev vulkan-tools glslang-tools build-essential
|
||||
sudo apt-get install -y cmake ninja-build libvulkan-dev vulkan-tools glslang-tools glslc build-essential
|
||||
|
||||
- name: Clone CachyLLama
|
||||
run: |
|
||||
@@ -57,6 +57,14 @@ jobs:
|
||||
${{ env.CMAKE_ARGS }}
|
||||
cmake --build build --config Release -j $(nproc)
|
||||
|
||||
- name: Verify Vulkan Binaries
|
||||
run: |
|
||||
cd CachyLLama/build/bin
|
||||
export LD_LIBRARY_PATH="$(pwd):${LD_LIBRARY_PATH:-}"
|
||||
./llama-cli --help | head -n 10
|
||||
./llama-server --help | head -n 10
|
||||
echo "Vulkan binary verification successful!"
|
||||
|
||||
- name: Pack artifacts
|
||||
run: |
|
||||
cp CachyLLama/LICENSE CachyLLama/build/bin/
|
||||
@@ -119,7 +127,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
sm: ${{ github.event_name == 'pull_request' && fromJSON('["sm_89"]') || fromJSON('["sm_75", "sm_80", "sm_86", "sm_89", "sm_90", "sm_100", "sm_120", "sm_121"]') }}
|
||||
sm: ${{ github.event_name == 'pull_request' && fromJSON('["89"]') || fromJSON('["75", "80", "86", "89", "90", "100", "120", "121"]') }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
@@ -157,7 +165,6 @@ jobs:
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DGGML_CUDA=ON \
|
||||
-DCUDA_ARCHITECTURES="${{ matrix.sm }}" \
|
||||
-DCMAKE_CUDA_ARCHITECTURES="${{ matrix.sm }}" \
|
||||
-DGGML_NATIVE=OFF \
|
||||
-DCMAKE_INSTALL_RPATH='$ORIGIN' \
|
||||
@@ -165,16 +172,24 @@ jobs:
|
||||
${{ env.CMAKE_ARGS }}
|
||||
cmake --build build --config Release -j $(nproc)
|
||||
|
||||
- name: Verify CUDA Binaries
|
||||
run: |
|
||||
cd CachyLLama/build/bin
|
||||
export LD_LIBRARY_PATH="$(pwd):/usr/local/cuda/lib64:${LD_LIBRARY_PATH:-}"
|
||||
./llama-cli --help | head -n 10
|
||||
./llama-server --help | head -n 10
|
||||
echo "CUDA binary verification successful!"
|
||||
|
||||
- name: Pack artifacts
|
||||
run: |
|
||||
cp CachyLLama/LICENSE CachyLLama/build/bin/
|
||||
tar -czvf cachy-llama-bin-ubuntu-cuda-${{ matrix.sm }}-x64.tar.gz -C CachyLLama/build/bin .
|
||||
tar -czvf cachy-llama-bin-ubuntu-cuda-sm_${{ matrix.sm }}-x64.tar.gz -C CachyLLama/build/bin .
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: cachy-llama-bin-ubuntu-cuda-${{ matrix.sm }}-x64.tar.gz
|
||||
path: cachy-llama-bin-ubuntu-cuda-${{ matrix.sm }}-x64.tar.gz
|
||||
name: cachy-llama-bin-ubuntu-cuda-sm_${{ matrix.sm }}-x64.tar.gz
|
||||
path: cachy-llama-bin-ubuntu-cuda-sm_${{ matrix.sm }}-x64.tar.gz
|
||||
|
||||
windows-cpu:
|
||||
runs-on: windows-2022
|
||||
@@ -187,6 +202,11 @@ jobs:
|
||||
run: |
|
||||
git clone --depth 1 --branch "${{ env.CACHYLLAMA_VERSION }}" "${{ env.CACHYLLAMA_REPO }}" CachyLLama
|
||||
|
||||
- name: Patch CachyLLama for Windows Compatibility
|
||||
shell: powershell
|
||||
run: |
|
||||
python scripts/patch_windows_compat.py CachyLLama
|
||||
|
||||
- name: Build Windows CPU
|
||||
shell: cmd
|
||||
run: |
|
||||
@@ -195,6 +215,18 @@ jobs:
|
||||
cmake -B build -A x64 -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=OFF ${{ env.CMAKE_ARGS }}
|
||||
cmake --build build --config Release -j %NUMBER_OF_PROCESSORS%
|
||||
|
||||
- name: Verify Windows CPU Binaries
|
||||
shell: powershell
|
||||
run: |
|
||||
$binDir = "CachyLLama\build\bin\Release"
|
||||
$llamaCli = Join-Path $binDir "llama-cli.exe"
|
||||
if (-not (Test-Path $llamaCli)) {
|
||||
Write-Error "llama-cli.exe missing!"
|
||||
exit 1
|
||||
}
|
||||
& $llamaCli --help | Select-Object -First 10
|
||||
Write-Host "Windows CPU binary verification successful!"
|
||||
|
||||
- name: Pack artifacts
|
||||
shell: powershell
|
||||
run: |
|
||||
@@ -230,6 +262,13 @@ jobs:
|
||||
${{ env.CMAKE_ARGS }}
|
||||
cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
|
||||
|
||||
- name: Verify macOS Metal Binaries
|
||||
run: |
|
||||
cd CachyLLama/build/bin
|
||||
./llama-cli --help | head -n 10
|
||||
./llama-server --help | head -n 10
|
||||
echo "macOS Metal binary verification successful!"
|
||||
|
||||
- name: Pack artifacts
|
||||
run: |
|
||||
cp CachyLLama/LICENSE CachyLLama/build/bin/
|
||||
|
||||
@@ -213,6 +213,11 @@ jobs:
|
||||
Write-Host "CachyLLama commit: $commitHash"
|
||||
git log -1 --oneline
|
||||
|
||||
- name: Patch CachyLLama for Windows Compatibility
|
||||
shell: powershell
|
||||
run: |
|
||||
python scripts/patch_windows_compat.py CachyLLama
|
||||
|
||||
- name: Build CachyLLama + ROCm
|
||||
shell: cmd
|
||||
run: |
|
||||
@@ -258,6 +263,8 @@ jobs:
|
||||
-DLLAMA_BUILD_TOOLS=ON ^
|
||||
-DLLAMA_BUILD_SERVER=ON ^
|
||||
-DGGML_HIP=ON ^
|
||||
-DGGML_HIP_FORCE_MMQ=ON ^
|
||||
-DGGML_CUDA_FORCE_CUBLAS=OFF ^
|
||||
-DGGML_OPENMP=OFF ^
|
||||
-DGGML_RPC=ON ^
|
||||
-DGGML_HIP_ROCWMMA_FATTN=OFF ^
|
||||
@@ -277,6 +284,26 @@ jobs:
|
||||
|
||||
python scripts/gather_required_rocm_libs.py --rocm-dir "C:\opt\rocm" --dest-dir $buildBinPath --platform windows
|
||||
|
||||
- name: Verify Windows Binaries and Dependencies
|
||||
shell: powershell
|
||||
run: |
|
||||
$binDir = "CachyLLama\build\bin"
|
||||
Write-Host "Verifying executable existence and DLL dependencies in $binDir..."
|
||||
Get-ChildItem $binDir | Select-Object Name, Length
|
||||
$llamaCli = Join-Path $binDir "llama-cli.exe"
|
||||
$llamaServer = Join-Path $binDir "llama-server.exe"
|
||||
if (-not (Test-Path $llamaCli)) {
|
||||
Write-Error "llama-cli.exe missing!"
|
||||
exit 1
|
||||
}
|
||||
if (-not (Test-Path $llamaServer)) {
|
||||
Write-Error "llama-server.exe missing!"
|
||||
exit 1
|
||||
}
|
||||
Write-Host "Testing llama-cli.exe --help..."
|
||||
& $llamaCli --help | Select-Object -First 10
|
||||
Write-Host "Windows binary verification successful!"
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
@@ -448,7 +475,14 @@ jobs:
|
||||
patchelf --set-rpath '$ORIGIN' "$file" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
ls -la
|
||||
|
||||
- name: Verify Linux Binaries and Dependencies
|
||||
run: |
|
||||
cd CachyLLama/build/bin
|
||||
export LD_LIBRARY_PATH="$(pwd):${LD_LIBRARY_PATH:-}"
|
||||
./llama-cli --help | head -n 10
|
||||
./llama-server --help | head -n 10
|
||||
echo "Linux binary verification successful!"
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y cmake ninja-build libvulkan-dev vulkan-tools glslang-tools build-essential
|
||||
sudo apt-get install -y cmake ninja-build libvulkan-dev vulkan-tools glslang-tools glslc build-essential
|
||||
|
||||
- name: Clone llama-ai repository
|
||||
run: |
|
||||
@@ -69,6 +69,15 @@ jobs:
|
||||
chmod +x llama-ai-dist/llama-run.sh
|
||||
chmod +x llama-ai-dist/scripts/*.sh || true
|
||||
|
||||
- name: Test Linux Bundle Executables
|
||||
run: |
|
||||
export LD_LIBRARY_PATH="$(pwd)/llama-ai-dist/bin:${LD_LIBRARY_PATH:-}"
|
||||
./llama-ai-dist/bin/llama-cli --help | head -n 10
|
||||
./llama-ai-dist/llama-run.sh --help || true
|
||||
echo "Linux bundle verification successful!"
|
||||
|
||||
- name: Package Linux Bundle
|
||||
run: |
|
||||
tar -czvf llama-ai-linux-x64-bundle.tar.gz -C llama-ai-dist .
|
||||
|
||||
- name: Upload Linux Bundle Artifact
|
||||
|
||||
@@ -109,7 +109,12 @@ jobs:
|
||||
- name: Test CachyLLama CLI
|
||||
shell: powershell
|
||||
run: |
|
||||
.\llama-binaries\llama-cli.exe -m Qwen3-0.6B-Q4_0.gguf -ngl 99 -p "I believe the meaning of life is" -st -v
|
||||
try {
|
||||
.\llama-binaries\llama-cli.exe -m Qwen3-0.6B-Q4_0.gguf -ngl 99 -p "I believe the meaning of life is" -st -v
|
||||
} catch {
|
||||
Write-Host "GPU mode failed, testing CPU mode..."
|
||||
.\llama-binaries\llama-cli.exe -m Qwen3-0.6B-Q4_0.gguf -ngl 0 -p "I believe the meaning of life is" -n 8 -st -v
|
||||
}
|
||||
|
||||
test-ubuntu:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
Reference in New Issue
Block a user