diff options
author | crasm <crasm@git.vczf.net> | 2024-01-26 07:18:00 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-26 14:18:00 +0200 |
commit | 413e7b0559f922bd4de5e9eec548829d111651b1 (patch) | |
tree | 8d9ddf3f1e8ea25a105ed8aa04321e57d93cbfff /scripts | |
parent | 6dd3c28c9cd1ef74b49d79f47d668759346a3c6c (diff) |
ci : add model tests + script wrapper (#4586)
* scripts : add lib.sh and lib_test.sh
* scripts : stub out new ci-run.sh script
* scripts : switch to PascalCase for functions
This looks a little odd at first, but I find it very useful as a
convention to know if a command is part of our code vs a builtin.
* scripts : add some fancy conversion from snake_case to PascalCase
* Add venv to ci/run.sh
* Revert scripts work
* scripts : add wrapper script for local use of ci/run.sh
* Simplify .gitignore for tests, clang-tidy fixes
* Label all ctest tests
* ci : ctest uses -L main
* Attempt at writing ctest_with_model
* Update test-model-load-cancel
* ci : add ctest_with_model for debug and release
ggml-ci
* Fix gg_get_model function
ggml-ci
* got stuck on CMake
* Add get_model.cpp to tests/CMakeLists.txt
ggml-ci
* Fix README.md output for ctest_with_model
ggml-ci
* workflows : use `-L main` for all ctest
ggml-ci
* Fixes
* GG_RUN_CTEST_MODELFILE => LLAMACPP_TESTMODELFILE
* Always show warning rather than failing if model file variable is not
set
* scripts : update usage text for ci-run.sh
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/ci-run.sh | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/scripts/ci-run.sh b/scripts/ci-run.sh new file mode 100755 index 00000000..06b5d9c6 --- /dev/null +++ b/scripts/ci-run.sh @@ -0,0 +1,50 @@ +#!/bin/bash +set -euo pipefail +this=$(realpath "$0"); readonly this +cd "$(dirname "$this")" +shellcheck "$this" + +if (( $# != 1 && $# != 2 )); then + cat >&2 <<'EOF' +usage: + ci-run.sh <tmp_dir> [<cache_dir>] + +This script wraps ci/run.sh: +* If <tmp_dir> is a ramdisk, you can reduce writes to your SSD. If <tmp_dir> is not a ramdisk, keep in mind that total writes will increase by the size of <cache_dir>. + (openllama_3b_v2: quantized models are about 30GB) +* Persistent model and data files are synced to and from <cache_dir>, + excluding generated .gguf files. + (openllama_3b_v2: persistent files are about 6.6GB) +* <cache_dir> defaults to ~/.cache/llama.cpp +EOF + exit 1 +fi + +cd .. # => llama.cpp repo root + +tmp="$1" +mkdir -p "$tmp" +tmp=$(realpath "$tmp") +echo >&2 "Using tmp=$tmp" + +cache="${2-$HOME/.cache/llama.cpp}" +mkdir -p "$cache" +cache=$(realpath "$cache") +echo >&2 "Using cache=$cache" + +_sync() { + local from="$1"; shift + local to="$1"; shift + + echo >&2 "Syncing from $from to $to" + mkdir -p "$from" "$to" + rsync -a "$from" "$to" --delete-during "$@" +} + +_sync "$(realpath .)/" "$tmp/llama.cpp" +_sync "$cache/ci-mnt/models/" "$tmp/llama.cpp/ci-mnt/models/" + +cd "$tmp/llama.cpp" +bash ci/run.sh ci-out ci-mnt + +_sync 'ci-mnt/models/' "$cache/ci-mnt/models/" --exclude='*.gguf' -P |