After installing the Python libraries from requirements.txt,
run meta-generation strategies as follows:

./generate.py \
    --dataset            data/algebra__linear_1d/test.jsonl \
    --model              meta-llama/Meta-Llama-3.1-8B-Instruct \
    --prefix             prompts/math-0cot \
    --suffix             prompts/math-0cot-suffix \
    --lilave_model       lilave_models/algebra__linear_1d.xgb \
    --meta_generator     best_of_n \
    --temperature        1 \
    --n                  16 # number of samples

The list of available meta-generation strategies can be found in meta_generators.py

To train your own LiLaVe XGBoost model, first extract hidden states
following this example:

./latent_training_samples.py \
    --dataset                  data/algebra__linear_1d/train_1k.jsonl \
    --model                    meta-llama/Meta-Llama-3.1-8B-Instruct \
    --prefix                   prompts/math-0cot \
    --suffix                   prompts/math-0cot-suffix \
    --hidden_states_path       hidden_states.csv \
    --varied_temperature_up_to 1 \
    --n                        5 # number of samples per question

Then, train your own XGBoost LiLaVe using the following script
(the script depends on R and it's xgboost libarary):

./train-lilave.R hidden_states.csv

This will result in an XGBoost model saved under hidden_states.xgb
It can be used by the generate.py script passed via the --lilave_model
argument (as shown above).
