Skip to content

Commit b8883e2

Browse files
henk717LostRuins
andauthored
KoboldCpp.sh updates (LostRuins#1562)
* YR makefile upstream * Create make_portable_rocm_libs.sh * update makefile, support llama portable, ditch all unnecessary changes * Delete make_portable_rocm_libs.sh should not be needed * koboldcpp.sh updates * Small rocm fixes * ROCm is now a cuda version not a command * Don't commit temp file * Don't commit temp file * 1200 has errors, removing it for now * Only rebuild rocm with rebuild * Update kcpp-build-release-linux.yaml * Fix rocm filename * ROCm Linux CI * We need more diskspace * Workaround for lockfile getting stuck Why do I have to do hacks like this.... * Update kcpp-build-release-linux-rocm.yaml * Dont apt update rocm You don't allow us to apt update? Better not break things github! * Container maybe? * Turns out we aren't root, so we use sudo * Cleanup ROCm CI PR * Build for Runpods GPU * We also need rocblas * More cleanup just in case * Update kcpp-build-release-linux-rocm.yaml --------- Co-authored-by: LostRuins Concedo <[email protected]>
1 parent 60268de commit b8883e2

File tree

9 files changed

+131
-12
lines changed

9 files changed

+131
-12
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Koboldcpp Linux ROCm
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
commit_hash:
7+
description: 'Optional commit hash to build from'
8+
required: false
9+
default: ''
10+
11+
env:
12+
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
13+
KCPP_CUDA: rocm
14+
ARCHES_CU12: 1
15+
16+
jobs:
17+
linux:
18+
runs-on: ubuntu-22.04
19+
steps:
20+
- name: Free Disk Space (Ubuntu)
21+
uses: jlumbroso/free-disk-space@main
22+
with:
23+
# this might remove tools that are actually needed,
24+
# if set to "true" but frees about 6 GB
25+
tool-cache: true
26+
27+
# all of these default to true, but feel free to set to
28+
# "false" if necessary for your workflow
29+
android: true
30+
dotnet: true
31+
haskell: true
32+
large-packages: true
33+
docker-images: true
34+
swap-storage: true
35+
36+
- name: Clone
37+
id: checkout
38+
uses: actions/checkout@v3
39+
with:
40+
ref: ${{ inputs.commit_hash != '' && inputs.commit_hash || github.head_ref || github.ref_name }}
41+
42+
- name: Show Commit Used
43+
run: |
44+
echo "Building from ref: ${{ inputs.commit_hash != '' && inputs.commit_hash || github.head_ref || github.ref_name }}"
45+
46+
- name: Dependencies
47+
id: depends
48+
run: |
49+
sudo apt update
50+
export DEBIAN_FRONTEND=noninteractive
51+
sudo ln -fs /usr/share/zoneinfo/UTC /etc/localtime
52+
echo "tzdata tzdata/Areas select Etc" | sudo debconf-set-selections
53+
echo "tzdata tzdata/Zones/Etc select UTC" | sudo debconf-set-selections
54+
sudo apt-get -y install git curl bzip2 python3-tk tcl tk
55+
curl -fLO https://repo.radeon.com/rocm/installer/rocm-runfile-installer/rocm-rel-6.4.1/ubuntu/22.04/rocm-installer_1.1.1.60401-30-83~22.04.run && sudo bash rocm-installer_1.1.1.60401-30-83~22.04.run deps=install rocm postrocm target="/opt"
56+
sudo rm -rf rocm-install*
57+
58+
- name: Set Tcl/Tk Paths
59+
run: |
60+
echo "TCL_LIBRARY=$(find /usr/lib/ -name 'tcl8*' | head -n 1)" >> $GITHUB_ENV
61+
echo "TK_LIBRARY=$(find /usr/lib/ -name 'tk8*' | head -n 1)" >> $GITHUB_ENV
62+
63+
- name: Build
64+
id: make_build
65+
run: |
66+
./koboldcpp.sh dist
67+
68+
- name: Save artifact
69+
uses: actions/upload-artifact@v4
70+
with:
71+
name: kcpp_linux_binary
72+
path: dist/

.github/workflows/kcpp-build-release-linux.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ env:
1212
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
1313
NOAVX2: 1
1414
ARCHES_CU11: 1
15+
KCPP_CUDA: 11.5.0
1516

1617
jobs:
1718
linux:

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
*.o
22
*.a
33
*.bin
4+
*.tmp.yaml
5+
46
.DS_Store
57
.build/
68
.cache/

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,15 +243,15 @@ ifdef LLAMA_HIPBLAS
243243
ifeq ($(wildcard /opt/rocm),)
244244
ROCM_PATH ?= /usr
245245
ifdef LLAMA_PORTABLE
246-
GPU_TARGETS ?= gfx803 gfx900 gfx906 gfx908 gfx90a gfx1010 gfx1030 gfx1031 gfx1032 gfx1100 gfx1101 gfx1102 $(shell $(shell which amdgpu-arch))
246+
GPU_TARGETS ?= gfx803 gfx900 gfx906 gfx908 gfx90a gfx942 gfx1010 gfx1030 gfx1031 gfx1032 gfx1100 gfx1101 gfx1102 $(shell $(shell which amdgpu-arch))
247247
else
248248
GPU_TARGETS ?= $(shell $(shell which amdgpu-arch))
249249
endif
250250
HCC := $(ROCM_PATH)/bin/hipcc
251251
HCXX := $(ROCM_PATH)/bin/hipcc
252252
else
253253
ROCM_PATH ?= /opt/rocm
254-
GPU_TARGETS ?= gfx803 gfx900 gfx906 gfx908 gfx90a gfx1010 gfx1030 gfx1031 gfx1032 gfx1100 gfx1101 gfx1102 $(shell $(ROCM_PATH)/llvm/bin/amdgpu-arch)
254+
GPU_TARGETS ?= gfx803 gfx900 gfx906 gfx908 gfx90a gfx942 gfx1010 gfx1030 gfx1031 gfx1032 gfx1100 gfx1101 gfx1102 $(shell $(ROCM_PATH)/llvm/bin/amdgpu-arch)
255255
HCC := $(ROCM_PATH)/llvm/bin/clang
256256
HCXX := $(ROCM_PATH)/llvm/bin/clang++
257257
endif
@@ -859,4 +859,4 @@ build-info.h:
859859
#phony for printing messages
860860
finishedmsg:
861861
$(NOTIFY_MSG)
862-
$(DONOTHING)
862+
$(DONOTHING)

create_ver_file.sh

100644100755
File mode changed.

environment-nocuda.yaml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
name: koboldcpp
2+
channels:
3+
- conda-forge
4+
- defaults
5+
dependencies:
6+
- python=3.10
7+
- cxx-compiler
8+
- gxx=10
9+
- pip
10+
- git=2.35.1
11+
- clblast
12+
- ninja
13+
- make
14+
- packaging
15+
- pyinstaller
16+
- libcblas
17+
- ocl-icd-system
18+
- libvulkan-loader
19+
- tk=*=xft_*
20+
- pip:
21+
- customtkinter

environment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: koboldcpp
22
channels:
3-
- nvidia/label/cuda-11.5.0
3+
- nvidia/label/cuda-12.1.0
44
- conda-forge
55
- defaults
66
dependencies:

glslc-linux

100644100755
File mode changed.

koboldcpp.sh

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,26 @@ if [ ! -f "bin/micromamba" ]; then
44
curl -Ls https://anaconda.org/conda-forge/micromamba/1.5.3/download/linux-64/micromamba-1.5.3-0.tar.bz2 | tar -xvj bin/micromamba
55
fi
66

7-
if [[ ! -f "conda/envs/linux/bin/python" || $1 == "rebuild" ]]; then
7+
if [[ ! -f "conda/envs/linux/bin/python" && $KCPP_CUDA != "rocm" || $1 == "rebuild" && $KCPP_CUDA != "rocm" ]]; then
88
cp environment.yaml environment.tmp.yaml
99
if [ -n "$KCPP_CUDA" ]; then
10-
sed -i -e "s/nvidia\/label\/cuda-11.5.0/nvidia\/label\/cuda-$KCPP_CUDA/g" environment.tmp.yaml
10+
sed -i -e "s/nvidia\/label\/cuda-12.1.0/nvidia\/label\/cuda-$KCPP_CUDA/g" environment.tmp.yaml
1111
else
12-
KCPP_CUDA=11.5.0
12+
KCPP_CUDA=12.1.0
1313
fi
1414
bin/micromamba create --no-rc --no-shortcuts -r conda -p conda/envs/linux -f environment.tmp.yaml -y
1515
bin/micromamba create --no-rc --no-shortcuts -r conda -p conda/envs/linux -f environment.tmp.yaml -y
1616
bin/micromamba run -r conda -p conda/envs/linux make clean
1717
echo $KCPP_CUDA > conda/envs/linux/cudaver
1818
echo rm environment.tmp.yaml
1919
fi
20+
21+
if [[ ! -f "conda/envs/linux/bin/python" && $KCPP_CUDA == "rocm" || $1 == "rebuild" && $KCPP_CUDA == "rocm" ]]; then
22+
bin/micromamba create --no-rc --no-shortcuts -r conda -p conda/envs/linux -f environment-nocuda.yaml -y
23+
bin/micromamba run -r conda -p conda/envs/linux make clean
24+
echo "rocm" > conda/envs/linux/cudaver
25+
fi
26+
2027
KCPP_CUDA=$(<conda/envs/linux/cudaver)
2128
KCPP_CUDAAPPEND=-cuda${KCPP_CUDA//.}$KCPP_APPEND
2229

@@ -32,7 +39,12 @@ if [ -n "$ARCHES_CU12" ]; then
3239
ARCHES_FLAG="LLAMA_ARCHES_CU12=1"
3340
fi
3441

35-
bin/micromamba run -r conda -p conda/envs/linux make -j$(nproc) LLAMA_VULKAN=1 LLAMA_CLBLAST=1 LLAMA_CUBLAS=1 LLAMA_PORTABLE=1 LLAMA_ADD_CONDA_PATHS=1 $LLAMA_NOAVX2_FLAG $ARCHES_FLAG
42+
if [ "$KCPP_CUDA" = "rocm" ]; then
43+
bin/micromamba run -r conda -p conda/envs/linux make -j$(nproc) LLAMA_VULKAN=1 LLAMA_CLBLAST=1 LLAMA_HIPBLAS=1 LLAMA_PORTABLE=1 LLAMA_ADD_CONDA_PATHS=1 $LLAMA_NOAVX2_FLAG $ARCHES_FLAG
44+
else
45+
bin/micromamba run -r conda -p conda/envs/linux make -j$(nproc) LLAMA_VULKAN=1 LLAMA_CLBLAST=1 LLAMA_CUBLAS=1 LLAMA_PORTABLE=1 LLAMA_ADD_CONDA_PATHS=1 $LLAMA_NOAVX2_FLAG $ARCHES_FLAG
46+
fi
47+
3648
if [ $? -ne 0 ]; then
3749
echo "Error: make failed."
3850
exit 1
@@ -44,11 +56,22 @@ if [[ $1 == "rebuild" ]]; then
4456
echo Rebuild complete, you can now try to launch Koboldcpp.
4557
elif [[ $1 == "dist" ]]; then
4658
bin/micromamba remove --no-rc -r conda -p conda/envs/linux --force ocl-icd -y
47-
if [ -n "$NOAVX2" ]; then
48-
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_cublas.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64$KCPP_CUDAAPPEND"
59+
if [ "$KCPP_CUDA" = "rocm" ]; then
60+
if [ ! -n "$ROCM_PATH" ]; then
61+
ROCM_PATH=/opt/rocm
62+
fi
63+
if [ -n "$NOAVX2" ]; then
64+
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_hipblas.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --add-data "$ROCM_PATH/lib/rocblas:." --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64-rocm"
65+
else
66+
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_hipblas.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --add-data "$ROCM_PATH/lib/rocblas:." --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64-rocm"
67+
fi
4968
else
50-
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_cublas.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64$KCPP_CUDAAPPEND"
51-
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64-nocuda$KCPP_APPEND"
69+
if [ -n "$NOAVX2" ]; then
70+
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_cublas.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64$KCPP_CUDAAPPEND"
71+
else
72+
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_cublas.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64$KCPP_CUDAAPPEND"
73+
bin/micromamba run -r conda -p conda/envs/linux pyinstaller --noconfirm --onefile --collect-all customtkinter --collect-all psutil --add-data './koboldcpp_default.so:.' --add-data './koboldcpp_vulkan.so:.' --add-data './koboldcpp_clblast.so:.' --add-data './koboldcpp_failsafe.so:.' --add-data './koboldcpp_noavx2.so:.' --add-data './koboldcpp_clblast_noavx2.so:.' --add-data './koboldcpp_clblast_failsafe.so:.' --add-data './koboldcpp_vulkan_noavx2.so:.' --add-data './kcpp_adapters:./kcpp_adapters' --add-data './koboldcpp.py:.' --add-data './json_to_gbnf.py:.' --add-data './launch.cmd:.' --add-data './requirements_minimal.txt:.' --add-data './LICENSE.md:.' --add-data './MIT_LICENSE_GGML_SDCPP_LLAMACPP_ONLY.md:.' --add-data './klite.embd:.' --add-data './kcpp_docs.embd:.' --add-data './kcpp_sdui.embd:.' --add-data './taesd.embd:.' --add-data './taesd_xl.embd:.' --add-data './taesd_f.embd:.' --add-data './taesd_3.embd:.' --add-data './rwkv_vocab.embd:.' --add-data './rwkv_world_vocab.embd:.' --version-file './version.txt' --clean --console koboldcpp.py -n "koboldcpp-linux-x64-nocuda$KCPP_APPEND"
74+
fi
5275
fi
5376
bin/micromamba install --no-rc -r conda -p conda/envs/linux ocl-icd -c conda-forge -y
5477
else

0 commit comments

Comments
 (0)