# LLaDA Model Evaluation Guide This document provides detailed instructions for evaluating the LLaDA model on GSM8K math problem solving and HumanEval code generation tasks. ## Environment Setup Before running any evaluation, set the following environment variables: ```bash export HF_ALLOW_CODE_EVAL=1 export HF_DATASETS_TRUST_REMOTE_CODE=true ``` ## GSM8K Evaluation GSM8K is a dataset of 8,000 grade school math problems designed to evaluate mathematical reasoning capabilities. ### Common Parameters ```bash task=gsm8k length=256 block_length=32 num_fewshot=5 steps=$((length / block_length)) ``` ### Evaluation Methods 1. **Baseline** ```bash accelerate launch eval_llada.py --tasks ${task} --num_fewshot ${num_fewshot} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${length},block_length=${block_length},show_speed=True ``` 2. **Prefix Cache** ```bash accelerate launch eval_llada.py --tasks ${task} --num_fewshot ${num_fewshot} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${length},block_length=${block_length},use_cache=True,show_speed=True ``` 3. **Parallel Generation** ```bash accelerate launch eval_llada.py --tasks ${task} --num_fewshot ${num_fewshot} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${steps},block_length=${block_length},threshold=0.9,show_speed=True ``` 4. **Prefix Cache + Parallel** ```bash accelerate launch eval_llada.py --tasks ${task} --num_fewshot ${num_fewshot} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${steps},block_length=${block_length},use_cache=True,threshold=0.9,show_speed=True ``` 5. **Dual Cache + Parallel** ```bash accelerate launch eval_llada.py --tasks ${task} --num_fewshot ${num_fewshot} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${steps},block_length=${block_length},use_cache=True,dual_cache=True,threshold=0.9,show_speed=True ``` ### Parameter Descriptions - `task`: Evaluation task (gsm8k) - `length`: Generation length - `block_length`: Block size for parallel generation - `num_fewshot`: Number of few-shot examples - `steps`: Number of generation steps - `use_cache`: Enable prefix cache - `dual_cache`: Enable dual cache - `threshold`: Confidence threshold for parallel generation - `show_speed`: Display speed metrics ## HumanEval Evaluation HumanEval is a dataset of 164 Python programming problems designed to evaluate code generation capabilities. ### Common Parameters ```bash task=humaneval length=256 block_length=32 steps=$((length / block_length)) ``` ### Evaluation Methods 1. **Baseline** ```bash accelerate launch eval_llada.py --tasks ${task} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${length},block_length=${block_length},show_speed=True \ --output_path evals_results/baseline/humaneval-ns0-${length} --log_samples ``` 2. **Prefix Cache** ```bash accelerate launch eval_llada.py --tasks ${task} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${length},block_length=${block_length},use_cache=True,show_speed=True \ --output_path evals_results/prefix_cache/humaneval-ns0-${length} --log_samples ``` 3. **Parallel Generation** ```bash accelerate launch eval_llada.py --tasks ${task} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${steps},block_length=${block_length},threshold=0.9,show_speed=True \ --output_path evals_results/parallel/humaneval-ns0-${length} --log_samples ``` 4. **Prefix Cache + Parallel** ```bash accelerate launch eval_llada.py --tasks ${task} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${steps},block_length=${block_length},use_cache=True,threshold=0.9,show_speed=True \ --output_path evals_results/cache_parallel/humaneval-ns0-${length} --log_samples ``` 5. **Dual Cache + Parallel** ```bash accelerate launch eval_llada.py --tasks ${task} \ --confirm_run_unsafe_code --model llada_dist \ --model_args model_path='GSAI-ML/LLaDA-8B-Instruct',gen_length=${length},steps=${steps},block_length=${block_length},use_cache=True,dual_cache=True,threshold=0.9,show_speed=True \ --output_path evals_results/dual_cache_parallel/humaneval-ns0-${length} --log_samples ``` ### Post-processing For HumanEval evaluation, post-processing is required: ```bash python postprocess_code.py {the samples_xxx.jsonl file under output_path} ``` ## Notes 1. All evaluations use the LLaDA-8B-Instruct model 2. Results are saved in the `evals_results` directory 3. For HumanEval, samples are logged for post-processing 4. Speed metrics are shown for all evaluations 5. Different optimization strategies can be combined: