From e28cdd78b0cd22520cfe077198dc9a74fe6faf14 Mon Sep 17 00:00:00 2001 From: Yutong Dai Date: Thu, 3 Oct 2024 22:08:36 +0000 Subject: [PATCH] quantization script added --- examples/xgenmm/quantize.sh | 10 ++++++++++ examples/xgenmm/run_cli.sh | 4 ++-- test_anyres_handle_patches | Bin 0 -> 48127832 bytes xgenmm-cli | Bin 48440544 -> 48440544 bytes 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 examples/xgenmm/quantize.sh create mode 100755 test_anyres_handle_patches diff --git a/examples/xgenmm/quantize.sh b/examples/xgenmm/quantize.sh new file mode 100644 index 000000000..afc9b9041 --- /dev/null +++ b/examples/xgenmm/quantize.sh @@ -0,0 +1,10 @@ +gguf_dir=/export/share/yutong/xgenmm/llamacpp_wd/siglip_kosmos_phi3_4k_instruct_bf16_patch128/gguf +model_name=phi3_mini_4k_instruct_f16 +quantize_method=Q4_K_M + +outname=${model_name}_${quantize_method} +input_model_path=$gguf_dir/$model_name.gguf +output_model_path=$gguf_dir/$outname.gguf +echo $outname +cd ../../ +./llama-quantize $input_model_path $output_model_path $quantize_method \ No newline at end of file diff --git a/examples/xgenmm/run_cli.sh b/examples/xgenmm/run_cli.sh index 5da2bd376..df10fa319 100644 --- a/examples/xgenmm/run_cli.sh +++ b/examples/xgenmm/run_cli.sh @@ -35,14 +35,14 @@ make xgenmm-cli # --seed 42 --ctx-size 4096 --predict 1024 \ # --temp 0 --verbose-prompt -# Q="What is the address of this resturant?" +Q="What is the address of this resturant?" # Q="Is this dine in or dine out receipt?" # Q="What is the total amount paid?" # Q="What is card holder's name?" # Q="What is the transaction date?" # Q="What is the phone number of this resturant?" # Q="Who is the attendant?" -Q="Who is the cashier?" +# Q="Who is the cashier?" # Q="Briefly describe this image." prompt="<|system|>\nA chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.<|end|>\n<|user|>\n\n $Q<|end|>\n<|assistant|>\n" echo $prompt diff --git a/test_anyres_handle_patches b/test_anyres_handle_patches new file mode 100755 index 0000000000000000000000000000000000000000..d7807c1960d492d5c5ab7c3b259c7975db2d4628 GIT binary patch literal 48127832 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