|
| 1 | +name: Build Koboldcpp-ROCm Windows |
| 2 | + |
| 3 | +on: |
| 4 | + workflow_dispatch: |
| 5 | + inputs: |
| 6 | + version: |
| 7 | + description: 'Version tag of koboldcpp-rocm to build: v1.67.yr0-ROCm' |
| 8 | + default: v1.67.yr0-ROCm |
| 9 | + required: false |
| 10 | + type: string |
| 11 | + workflow_call: |
| 12 | + inputs: |
| 13 | + version: |
| 14 | + description: 'Version tag of koboldcpp-rocm to build: v1.67.yr0-ROCm' |
| 15 | + default: v1.67.yr0-ROCm |
| 16 | + required: false |
| 17 | + type: string |
| 18 | + |
| 19 | +permissions: |
| 20 | + contents: write |
| 21 | + |
| 22 | +jobs: |
| 23 | + build_libs: |
| 24 | + name: Build ROCm Lib |
| 25 | + runs-on: windows-latest |
| 26 | + defaults: |
| 27 | + run: |
| 28 | + shell: pwsh |
| 29 | + |
| 30 | + steps: |
| 31 | + - uses: actions/checkout@v3 |
| 32 | + with: |
| 33 | + repository: 'YellowRoseCx/koboldcpp-rocm' |
| 34 | + ref: main |
| 35 | + submodules: 'recursive' |
| 36 | + |
| 37 | + - name: Setup MSYS2 |
| 38 | + uses: msys2/setup-msys2@v2 |
| 39 | + with: |
| 40 | + update: true |
| 41 | + install: >- |
| 42 | + base-devel |
| 43 | + mingw-w64-x86_64-toolchain |
| 44 | +
|
| 45 | + - name: Build CLBLAST & Others with make |
| 46 | + run: | |
| 47 | + Set-Location 'D:\a\koboldcpp-rocm\koboldcpp-rocm' |
| 48 | + Get-Location |
| 49 | + ls |
| 50 | + make CC=gcc LLAMA_CLBLAST=1 LLAMA_OPENBLAS=1 LLAMA_VULKAN=1 -j2 |
| 51 | + |
| 52 | + - name: Setup cmake |
| 53 | + uses: jwlawson/actions-setup-cmake@v2 |
| 54 | + |
| 55 | + - name: Install ROCm SDK |
| 56 | + run: | |
| 57 | + curl -LO https://download.amd.com/developer/eula/rocm-hub/AMD-Software-PRO-Edition-23.Q4-Win10-Win11-For-HIP.exe |
| 58 | + Start-Process 'AMD-Software-PRO-Edition-23.Q4-Win10-Win11-For-HIP.exe' -ArgumentList '-install' -NoNewWindow -Wait |
| 59 | + echo "C:\Program Files\AMD\ROCm\5.7\bin" >> $env:GITHUB_PATH |
| 60 | + echo 'ROCM_PATH=C:\Program Files\AMD\ROCm\5.7' >> $env:GITHUB_ENV |
| 61 | + echo 'HIP_PATH=C:\Program Files\AMD\ROCm\5.7' >> $env:GITHUB_ENV |
| 62 | + echo "ROCM_VERSION=5.7.1" >> $env:GITHUB_ENV |
| 63 | +
|
| 64 | + - uses: actions/setup-python@v3 |
| 65 | + with: |
| 66 | + python-version: "3.10" |
| 67 | + |
| 68 | + - name: Install Dependencies |
| 69 | + run: | |
| 70 | + python -m pip install cmake ninja |
| 71 | + |
| 72 | + - name: Install LLVM and Clang |
| 73 | + uses: KyleMayes/install-llvm-action@v2 |
| 74 | + with: |
| 75 | + version: "18.1.4" |
| 76 | + force-url: "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.4/LLVM-18.1.4-win64.exe" |
| 77 | + |
| 78 | + - name: Install PyInstaller |
| 79 | + run: pip install pyinstaller==6.4.0 psutil |
| 80 | + |
| 81 | + - name: Build Lib |
| 82 | + run: | |
| 83 | + Set-Location 'C:\Program Files\AMD\ROCm\5.7\bin' |
| 84 | + Get-Location |
| 85 | + curl -LO https://github.com/YellowRoseCx/koboldcpp-rocm/releases/download/v1.43.2-ROCm/gfx103132rocblasfiles.zip |
| 86 | + 7z x gfx103132rocblasfiles.zip |
| 87 | + Set-Location 'D:\a\koboldcpp-rocm\koboldcpp-rocm' |
| 88 | + $env:CC = 'C:\Program Files\AMD\ROCm\5.7\bin\clang.exe' |
| 89 | + $env:CXX = 'C:\Program Files\AMD\ROCm\5.7\bin\clang++.exe' |
| 90 | + $env:CMAKE_PREFIX_PATH = 'C:\Program Files\AMD\ROCm\5.7' |
| 91 | + $env:VERBOSE = '1' |
| 92 | + Set-Location 'D:\a\koboldcpp-rocm\koboldcpp-rocm' |
| 93 | + mkdir 'build' |
| 94 | + Set-Location 'D:\a\koboldcpp-rocm\koboldcpp-rocm\build' |
| 95 | + Get-Location |
| 96 | + cmake --version |
| 97 | + clang --version |
| 98 | + cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DLLAMA_HIPBLAS=ON -DHIP_PLATFORM=amd -DAMDGPU_TARGETS="gfx1030;gfx1031;gfx1032;gfx1100;gfx1101;gfx1102" |
| 99 | + cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS} |
| 100 | +# -DCMAKE_C_COMPILER="C:\Program Files\AMD\ROCm\5.7\bin\clang.exe" -DCMAKE_CXX_COMPILER="C:\Program Files\AMD\ROCm\5.7\bin\clang++.exe" |
| 101 | + - name: Copy ROCm DLLs and Run PyInstaller |
| 102 | + run: | |
| 103 | + Set-Location 'D:\a\koboldcpp-rocm\koboldcpp-rocm' |
| 104 | + Get-Location |
| 105 | + copy "C:\Program Files\AMD\ROCm\5.7\bin\hipblas.dll" .\ |
| 106 | + copy "C:\Program Files\AMD\ROCm\5.7\bin\rocblas.dll" .\ |
| 107 | + robocopy "C:\Program Files\AMD\ROCm\5.7\bin\rocblas" .\rocblas /MIR |
| 108 | + pip install customtkinter |
| 109 | + PyInstaller --noconfirm --onefile --collect-all customtkinter --clean --console --icon ".\niko.ico" --add-data "./klite.embd;." --add-data "./winclinfo.exe;." --add-data "./OpenCL.dll;." --add-data "./kcpp_docs.embd;." --add-data "./koboldcpp_default.dll;." --add-data "./koboldcpp_openblas.dll;." --add-data "./koboldcpp_failsafe.dll;." --add-data "./koboldcpp_noavx2.dll;." --add-data "./libopenblas.dll;." --add-data "./koboldcpp_clblast.dll;." --add-data "./koboldcpp_clblast_noavx2.dll;." --add-data "./clblast.dll;." --add-data "./koboldcpp_vulkan.dll;." --add-data "./vulkan-1.dll;." --add-data "D:\a\koboldcpp-rocm\koboldcpp-rocm\build\bin\koboldcpp_hipblas.dll;." --add-data "./hipblas.dll;." --add-data "./rocblas.dll;." --add-data "./rwkv_vocab.embd;." --add-data "./rwkv_world_vocab.embd;." --add-data "./rocblas;." --add-data "C:/Windows/System32/msvcp140.dll;." --add-data "C:/Windows/System32/vcruntime140_1.dll;." "./koboldcpp.py" -n "koboldcpp_rocm.exe" |
| 110 | +
|
| 111 | +
|
| 112 | + - name: Create ZIP archive |
| 113 | + run: | |
| 114 | + Set-Location 'D:\a\koboldcpp-rocm\koboldcpp-rocm' |
| 115 | + Compress-Archive -Path D:\a\koboldcpp-rocm\koboldcpp-rocm\klite.embd, D:\a\koboldcpp-rocm\koboldcpp-rocm\winclinfo.exe, D:\a\koboldcpp-rocm\koboldcpp-rocm\OpenCL.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\kcpp_docs.embd, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp_default.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp_openblas.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp_failsafe.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp_noavx2.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\libopenblas.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp_vulkan.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp_clblast.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp_clblast_noavx2.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\clblast.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\build\bin\koboldcpp_hipblas.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\hipblas.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\rocblas.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\rwkv_vocab.embd, D:\a\koboldcpp-rocm\koboldcpp-rocm\rwkv_world_vocab.embd, D:\a\koboldcpp-rocm\koboldcpp-rocm\rocblas, D:\a\koboldcpp-rocm\koboldcpp-rocm\msvcp140.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\vcruntime140_1.dll, D:\a\koboldcpp-rocm\koboldcpp-rocm\koboldcpp.py -DestinationPath koboldcpp_rocm_files.zip |
| 116 | + copy "koboldcpp_rocm_files.zip" D:\a\koboldcpp-rocm\koboldcpp-rocm\dist |
| 117 | +
|
| 118 | +
|
| 119 | + - uses: actions/upload-artifact@v4.3.3 |
| 120 | + with: |
| 121 | + name: koboldcpp_hipblas-${{ inputs.version }} |
| 122 | + path: D:\a\koboldcpp-rocm\koboldcpp-rocm\build\bin\koboldcpp_hipblas.dll |
| 123 | + |
| 124 | + - uses: actions/upload-artifact@v4.3.3 |
| 125 | + with: |
| 126 | + name: koboldcpp_rocm_only-${{ inputs.version }} |
| 127 | + path: D:\a\koboldcpp-rocm\koboldcpp-rocm\dist\koboldcpp_rocm.exe |
| 128 | + |
| 129 | + - uses: actions/upload-artifact@v4.3.3 |
| 130 | + with: |
| 131 | + name: koboldcpp_rocm_zip-${{ inputs.version }} |
| 132 | + path: D:\a\koboldcpp-rocm\koboldcpp-rocm\dist\koboldcpp_rocm_files.zip |
| 133 | + |
| 134 | + - name: Upload files to a GitHub release |
| 135 | + id: upload-release |
| 136 | + uses: svenstaro/upload-release-action@2.9.0 |
| 137 | + continue-on-error: true |
| 138 | + with: |
| 139 | + file_glob: true |
| 140 | + file: D:/a/koboldcpp-rocm/koboldcpp-rocm/dist/*.* |
| 141 | + release_name: KoboldCPP-${{ inputs.version }} |
| 142 | + tag: ${{ inputs.version }} |
| 143 | + make_latest: true |
| 144 | + prerelease: true |
| 145 | + overwrite: false |
| 146 | + |
| 147 | + |
| 148 | + |
| 149 | + |
| 150 | +# Copy-Item 'D:\a\koboldcpp-rocm\koboldcpp-rocm\build\bin\koboldcpp_hipblas.dll' '..\..\build' |
| 151 | +# build_wheel: |
| 152 | +# name: Build ROCm |
| 153 | +# runs-on: windows-latest |
| 154 | +# needs: build_libs |
| 155 | +# strategy: |
| 156 | +# matrix: |
| 157 | +# pyver: ["3.8", "3.9", "3.10", "3.11"] |
| 158 | +# defaults: |
| 159 | +# run: |
| 160 | +# shell: pwsh |
| 161 | +# env: |
| 162 | +# PCKGVER: ${{ inputs.version }} |
| 163 | + |
| 164 | +# steps: |
| 165 | +# - uses: actions/checkout@v3 |
| 166 | +# with: |
| 167 | +# repository: 'YellowRoseCx/koboldcpp-rocm' |
| 168 | +# ref: ${{ inputs.version }} |
| 169 | + |
| 170 | +# - uses: actions/download-artifact@v3 |
| 171 | +# with: |
| 172 | +# name: 'win-rocm-lib' |
| 173 | +# path: ./koboldcpp-rocm |
| 174 | + |
| 175 | +# - uses: actions/setup-python@v3 |
| 176 | +# with: |
| 177 | +# python-version: ${{ matrix.pyver }} |
| 178 | + |
| 179 | +# - name: Install Dependencies |
| 180 | +# run: | |
| 181 | +# python -m pip install build wheel cmake scikit-build ninja |
| 182 | + |
| 183 | +# - name: Build Wheel |
| 184 | +# run: | |
| 185 | +# $packageVersion = [version]$env:PCKGVER.TrimStart('v') |
| 186 | +# $setup = Get-Content 'setup.py' -raw |
| 187 | +# if ($packageVersion -lt [version]'0.1.78') {$newsetup = $setup.Replace("packages=[`"llama_cpp`", `"llama_cpp.server`"],","packages=[`"llama_cpp`", `"llama_cpp.server`"],`n package_data={'llama_cpp': ['llama.dll']},")} |
| 188 | +# if ($packageVersion -gt [version]'0.1.77') {$newsetup = $setup.Replace('package_data={"llama_cpp": ["py.typed"]},','package_data={"llama_cpp": ["py.typed", "llama.dll"]},')} |
| 189 | +# New-Item 'setup.py' -itemType File -value $newsetup -force |
| 190 | +# python setup.py --skip-cmake bdist_wheel egg_info --tag-build=+rocm5.5.1 |
| 191 | + |
| 192 | +# - name: Upload files to a GitHub release |
| 193 | +# id: upload-release |
| 194 | +# uses: svenstaro/upload-release-action@2.6.1 |
| 195 | +# continue-on-error: true |
| 196 | +# with: |
| 197 | +# file: ./dist/*.whl |
| 198 | +# tag: rocm |
| 199 | +# file_glob: true |
| 200 | +# make_latest: false |
| 201 | +# overwrite: true |
| 202 | + |
| 203 | +# - uses: actions/upload-artifact@v3 |
| 204 | +# if: steps.upload-release.outcome == 'failure' |
| 205 | +# with: |
| 206 | +# name: 'win-rocm-wheels' |
| 207 | +# path: ./dist/*.whl |
0 commit comments