HelloSun's picture
openPangu-2.0-Flash support for llama.cpp v0.7.0 (diff + patch.sh)
46def5b
Raw History Blame Contribute Delete
2.72 kB
#!/usr/bin/env bash
# ----------------------------------------------------------------------------
# openPangu-2.0-Flash support + speed optimizations for llama.cpp v0.7.0
#
# Downloads the pinned upstream llama.cpp commit, applies the patch and
# prints build/run instructions.
#
# Usage: ./patch.sh
# ----------------------------------------------------------------------------
set -euo pipefail
LLAMA_COMMIT="620d2225cc436ab0b001e3200e590e3b286ef9ab" # llama.cpp release v0.7.0
SRC_DIR="llama.cpp-${LLAMA_COMMIT}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PATCH_FILE="${SCRIPT_DIR}/llama.cpp-openpangu-v0.7.0.diff"
if [ ! -f "${PATCH_FILE}" ]; then
echo "error: ${PATCH_FILE} not found (keep it next to this script)" >&2
exit 1
fi
cd "${SCRIPT_DIR}"
if [ ! -d "${SRC_DIR}" ]; then
echo "==> downloading llama.cpp @ ${LLAMA_COMMIT} (v0.7.0)"
if command -v curl >/dev/null 2>&1; then
curl -L --fail -o llama.tar.gz \
"https://codeload.github.com/ggml-org/llama.cpp/tar.gz/${LLAMA_COMMIT}"
elif command -v wget >/dev/null 2>&1; then
wget -O llama.tar.gz \
"https://codeload.github.com/ggml-org/llama.cpp/tar.gz/${LLAMA_COMMIT}"
else
echo "error: need curl or wget" >&2
exit 1
fi
echo "==> extracting"
tar xzf llama.tar.gz
rm -f llama.tar.gz
fi
cd "${SRC_DIR}"
echo "==> applying $(basename "${PATCH_FILE}")"
if command -v git >/dev/null 2>&1 && git apply --check "${PATCH_FILE}" 2>/dev/null; then
git apply "${PATCH_FILE}"
elif command -v patch >/dev/null 2>&1; then
patch -p1 --forward < "${PATCH_FILE}"
else
echo "error: need git or patch to apply the diff" >&2
exit 1
fi
echo
echo "==> done. build with:"
echo
echo " cd ${SRC_DIR}"
echo " cmake -B build -S . -DCMAKE_BUILD_TYPE=Release"
echo " cmake --build build -j --target llama-cli llama-server"
echo
echo " # CPU only (no GPU):"
echo " cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=ON"
echo " # CUDA:"
echo " cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DGGML_CUDA=ON"
echo
echo "==> run (get the GGUF models at https://huggingface.co/mrexodia/openPangu-2.0-Flash-GGUF):"
echo
echo " ./build/bin/llama-cli -m openPangu-2.0-Flash-base-Q3_K_M.gguf -c 65536 --jinja -t \$(nproc)"
echo " ./build/bin/llama-server -m openPangu-2.0-Flash-base-Q3_K_M.gguf -c 65536 --jinja --host 0.0.0.0 --port 8080"
echo
echo " # optional multi-token-prediction self-speculative decoding (needs the split MTP head):"
echo " ./build/bin/llama-cli -m openPangu-2.0-Flash-base-Q3_K_M.gguf \\"
echo " --spec-draft-model openPangu-2.0-Flash-mtp-Q8_0.gguf --spec-type draft-mtp -c 65536 --jinja"