From aa750c1ede6232c91de890a14a7731d6daa2bc8e Mon Sep 17 00:00:00 2001 From: Georgi Gerganov Date: Thu, 25 Apr 2024 14:27:20 +0300 Subject: tests : minor bash stuff (#6902) * tests : minor bash stuff ggml-ci * llama : fix build ggml-ci * tests : fix CUR_DIR -> ROOT_DIR ggml-ci * tests : fix fname ggml-ci --- ci/run.sh | 2 ++ examples/gguf-split/tests.sh | 16 +++++------ examples/quantize/test.sh | 65 ------------------------------------------ examples/quantize/tests.sh | 65 ++++++++++++++++++++++++++++++++++++++++++ examples/server/tests/tests.sh | 7 ++--- llama.cpp | 4 +-- 6 files changed, 80 insertions(+), 79 deletions(-) mode change 100644 => 100755 examples/gguf-split/tests.sh delete mode 100644 examples/quantize/test.sh create mode 100644 examples/quantize/tests.sh diff --git a/ci/run.sh b/ci/run.sh index 085dfd42..a75d0f5e 100755 --- a/ci/run.sh +++ b/ci/run.sh @@ -161,6 +161,7 @@ function gg_run_test_scripts_debug { set -e (cd ./examples/gguf-split && time bash tests.sh "$SRC/build-ci-debug/bin" "$MNT/models") 2>&1 | tee -a $OUT/${ci}-scripts.log + (cd ./examples/quantize && time bash tests.sh "$SRC/build-ci-debug/bin" "$MNT/models") 2>&1 | tee -a $OUT/${ci}-scripts.log set +e } @@ -184,6 +185,7 @@ function gg_run_test_scripts_release { set -e (cd ./examples/gguf-split && time bash tests.sh "$SRC/build-ci-release/bin" "$MNT/models") 2>&1 | tee -a $OUT/${ci}-scripts.log + (cd ./examples/quantize && time bash tests.sh "$SRC/build-ci-release/bin" "$MNT/models") 2>&1 | tee -a $OUT/${ci}-scripts.log set +e } diff --git a/examples/gguf-split/tests.sh b/examples/gguf-split/tests.sh old mode 100644 new mode 100755 index 879522f7..57588204 --- a/examples/gguf-split/tests.sh +++ b/examples/gguf-split/tests.sh @@ -4,16 +4,16 @@ set -eu if [ $# -lt 1 ] then - echo "usage: $0 path_to_build_binary [path_to_temp_folder]" - echo "example: $0 ../../build/bin ../../tmp" - exit 1 + echo "usage: $0 path_to_build_binary [path_to_temp_folder]" + echo "example: $0 ../../build/bin ../../tmp" + exit 1 fi if [ $# -gt 1 ] then - TMP_DIR=$2 + TMP_DIR=$2 else - TMP_DIR=/tmp + TMP_DIR=/tmp fi set -x @@ -21,7 +21,7 @@ set -x SPLIT=$1/gguf-split MAIN=$1/main WORK_PATH=$TMP_DIR/gguf-split -CUR_DIR=$(pwd) +ROOT_DIR=$(realpath $(dirname $0)/../../) mkdir -p "$WORK_PATH" @@ -30,8 +30,8 @@ rm -f $WORK_PATH/ggml-model-split*.gguf $WORK_PATH/ggml-model-merge*.gguf # 1. Get a model ( - cd $WORK_PATH - "$CUR_DIR"/../../scripts/hf.sh --repo ggml-org/gemma-1.1-2b-it-Q8_0-GGUF --file gemma-1.1-2b-it.Q8_0.gguf +cd $WORK_PATH +"$ROOT_DIR"/scripts/hf.sh --repo ggml-org/gemma-1.1-2b-it-Q8_0-GGUF --file gemma-1.1-2b-it.Q8_0.gguf ) echo PASS diff --git a/examples/quantize/test.sh b/examples/quantize/test.sh deleted file mode 100644 index 840f712a..00000000 --- a/examples/quantize/test.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/bash - -set -eu - -if [ $# -lt 1 ] -then - echo "usage: $0 path_to_build_binary [path_to_temp_folder]" - echo "example: $0 ../../build/bin ../../tmp" - exit 1 -fi - -if [ $# -gt 1 ] -then - TMP_DIR=$2 -else - TMP_DIR=/tmp -fi - -set -x - -SPLIT=$1/gguf-split -QUANTIZE=$1/quantize -MAIN=$1/main -WORK_PATH=$TMP_DIR/quantize -CUR_DIR=$(pwd) - -mkdir -p "$WORK_PATH" - -# Clean up in case of previously failed test -rm -f $WORK_PATH/ggml-model-split*.gguf $WORK_PATH/ggml-model-requant*.gguf - -# 1. Get a model -( - cd $WORK_PATH - "$CUR_DIR"/../../scripts/hf.sh --repo ggml-org/gemma-1.1-2b-it-Q8_0-GGUF --file gemma-1.1-2b-it.Q8_0.gguf -) -echo PASS - -# 2. Split model -$SPLIT --split-max-tensors 28 $WORK_PATH/gemma-1.1-2b-it.Q8_0.gguf $WORK_PATH/ggml-model-split -echo PASS -echo - -# 3. Requant model with '--keep_split' -$QUANTIZE --allow-requantize --keep_split $WORK_PATH/ggml-model-split-00001-of-00006.gguf $WORK_PATH/ggml-model-requant.gguf Q4_K -echo PASS -echo - -# 3a. Test the requanted model is loading properly -$MAIN --model $WORK_PATH/ggml-model-requant-00001-of-00006.gguf --random-prompt --n-predict 32 -echo PASS -echo - -# 4. Requant mode without '--keep_split' -$QUANTIZE --allow-requantize $WORK_PATH/ggml-model-split-00001-of-00006.gguf $WORK_PATH/ggml-model-requant-merge.gguf Q4_K -echo PASS -echo - -# 4b. Test the requanted model is loading properly -$MAIN --model $WORK_PATH/ggml-model-requant-merge.gguf --random-prompt --n-predict 32 -echo PASS -echo - -# Clean up -rm -f $WORK_PATH/ggml-model-split*.gguf $WORK_PATH/ggml-model-requant*.gguf diff --git a/examples/quantize/tests.sh b/examples/quantize/tests.sh new file mode 100644 index 00000000..160c12be --- /dev/null +++ b/examples/quantize/tests.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -eu + +if [ $# -lt 1 ] +then + echo "usage: $0 path_to_build_binary [path_to_temp_folder]" + echo "example: $0 ../../build/bin ../../tmp" + exit 1 +fi + +if [ $# -gt 1 ] +then + TMP_DIR=$2 +else + TMP_DIR=/tmp +fi + +set -x + +SPLIT=$1/gguf-split +QUANTIZE=$1/quantize +MAIN=$1/main +WORK_PATH=$TMP_DIR/quantize +ROOT_DIR=$(realpath $(dirname $0)/../../) + +mkdir -p "$WORK_PATH" + +# Clean up in case of previously failed test +rm -f $WORK_PATH/ggml-model-split*.gguf $WORK_PATH/ggml-model-requant*.gguf + +# 1. Get a model +( +cd $WORK_PATH +"$ROOT_DIR"/scripts/hf.sh --repo ggml-org/gemma-1.1-2b-it-Q8_0-GGUF --file gemma-1.1-2b-it.Q8_0.gguf +) +echo PASS + +# 2. Split model +$SPLIT --split-max-tensors 28 $WORK_PATH/gemma-1.1-2b-it.Q8_0.gguf $WORK_PATH/ggml-model-split +echo PASS +echo + +# 3. Requant model with '--keep_split' +$QUANTIZE --allow-requantize --keep_split $WORK_PATH/ggml-model-split-00001-of-00006.gguf $WORK_PATH/ggml-model-requant.gguf Q4_K +echo PASS +echo + +# 3a. Test the requanted model is loading properly +$MAIN --model $WORK_PATH/ggml-model-requant-00001-of-00006.gguf --random-prompt --n-predict 32 +echo PASS +echo + +# 4. Requant mode without '--keep_split' +$QUANTIZE --allow-requantize $WORK_PATH/ggml-model-split-00001-of-00006.gguf $WORK_PATH/ggml-model-requant-merge.gguf Q4_K +echo PASS +echo + +# 4b. Test the requanted model is loading properly +$MAIN --model $WORK_PATH/ggml-model-requant-merge.gguf --random-prompt --n-predict 32 +echo PASS +echo + +# Clean up +rm -f $WORK_PATH/ggml-model-split*.gguf $WORK_PATH/ggml-model-requant*.gguf diff --git a/examples/server/tests/tests.sh b/examples/server/tests/tests.sh index 1c6c5695..72a0fbad 100755 --- a/examples/server/tests/tests.sh +++ b/examples/server/tests/tests.sh @@ -4,9 +4,8 @@ set -eu if [ $# -lt 1 ] then - # Start @llama.cpp scenario - behave --summary --stop --no-capture --exclude 'issues|wrong_usages|passkey' --tags llama.cpp + # Start @llama.cpp scenario + behave --summary --stop --no-capture --exclude 'issues|wrong_usages|passkey' --tags llama.cpp else - behave "$@" + behave "$@" fi - diff --git a/llama.cpp b/llama.cpp index 0f74cb7a..51aae62a 100644 --- a/llama.cpp +++ b/llama.cpp @@ -14574,7 +14574,7 @@ static void llama_model_quantize_internal(const std::string & fname_inp, const s fout.close(); } }; - auto new_ofstream = [&](int index = 0) { + auto new_ofstream = [&](int index) { cur_split = index; GGML_ASSERT(ctx_outs[cur_split] && "Find uninitialized gguf_context"); std::string fname = fname_out; @@ -14592,7 +14592,7 @@ static void llama_model_quantize_internal(const std::string & fname_inp, const s }; const auto tn = LLM_TN(model.arch); - new_ofstream(); + new_ofstream(0); for (int i = 0; i < ml.n_tensors; ++i) { auto weight = ml.get_weight(i); struct ggml_tensor * tensor = weight->tensor; -- cgit v1.2.3