Views
No views yet

instruction: str, describes the task the model should perform.input: str, optional context or input for the task.output: str, ground-truth output text for the task and input text.
| Method | Brainstorming Unique V-N pairs | Rewriting Unique V-N pairs | Math Unique V-N pairs |
|---|---|---|---|
| Domain-Specific Human-Curated | 2 | 8 | 3 |
| Domain-Aware Self-Instruct | 781 | 1715 | 451 |
| Explore-Instruct | 790 | 2015 | 917 |
| Automatic Comparison in the Brainstorming Domain | Win:Tie:Lose | Beat Rate |
|---|---|---|
| Explore-LM vs Domain-Curated-LM | 194:1:13 | 93.72 |
| Explore-LM-Ext vs Domain-Curated-LM | 196:1:11 | 94.69 |
| Explore-LM vs Domain-Instruct-LM | 114:56:38 | 75.00 |
| Explore-LM-Ext vs Domain-Instruct-LM | 122:55:31 | 79.74 |
| Explore-LM vs ChatGPT | 52:71:85 | 37.96 |
| Explore-LM-Ext vs ChatGPT | 83:69:56 | 59.71 |
| Automatic Comparison in the Rewriting Domain | Win:Tie:Lose | Beat Rate |
|---|---|---|
| Explore-LM vs Domain-Curated-LM | 50:38:6 | 89.29 |
| Explore-LM-Ext vs Domain-Curated-LM | 53:37:4 | 92.98 |
| Explore-LM vs Domain-Instruct-LM | 34:49:11 | 75.56 |
| Explore-LM-Ext vs Domain-Instruct-LM | 35:53:6 | 85.37 |
| Explore-LM vs ChatGPT | 11:59:24 | 31.43 |
| Explore-LM-Ext vs ChatGPT | 12:56:26 | 31.58 |
| Automatic Comparison in the Math Domain | Accuracy Rate |
|---|---|
| Domain-Curated-LM | 3.4 |
| Domain-Instruct-LM | 4.0 |
| Explore-LM | 6.8 |
| Explore-LM-Ext | 8.4 |
| ChatGPT | 34.8 |

python3 generate_instruction.py \
--action extend \
--save_dir ./en_data/demo_domain \ # input dir include current domain tree for exploration
--out_dir ./en_data/demo_domain_exploration \ # output dir of the explored new domain tree
--lang <LANGUAGE> \ # currently support 'en'
--domain demo_domain \ # domain for exploration
--extend_nums <TASK_NUMBER_DEPTH_0>,...,<TASK_NUMBER_DEPTH_MAX_DEPTH-1> \ # exploration breadth at each depth
--max_depth <MAX_DEPTH> \ # exploration depth
--assistant_name <ASSISTANT_NAME> # currently support openai and claudepython3 generate_instruction.py \
--action enrich \
--save_dir ./en_data/demo_domain_exploration \ # input dir include current domain tree for data generation
--out_dir ./en_data/demo_domain_generation \ # output dir of the domain tree with generated data
--lang <LANGUAGE> \ # currently support 'en'
--domain demo_domain \ # domain for exploration
--enrich_nums <DATA_NUMBER_DEPTH_0>,...,<DATA_NUMBER_DEPTH_MAX_DEPTH> \ # data number for task at each depth
--enrich_batch_size <BATCH_SIZE> \ # batch size for data generation
--assistant_name <ASSISTANT_NAME> # currently support openai and claudepython3 generate_instruction.py \
--action prune \
--save_dir ./en_data/demo_domain_generation \ # input dir include current domain tree for task pruning
--out_dir ./en_data/demo_domain_pruning \ # output dir of the domain tree with 'pruned_subtasks_name.json' file
--lang <LANGUAGE> \ # currently support 'en'
--domain demo_domain \ # domain for exploration
--pruned_file ./en_data/demo_domain_pruning/pruned_subtasks_name.json \ # file of pruned tasks
--prune_threshold <PRUNE_THRESHOLD> \ # threshold of rouge-l overlap between task names
--assistant_name <ASSISTANT_NAME> # currently support openai and claudepython3 generate_instruction.py \
--action filter \
--save_dir ./en_data/demo_domain_pruning \ # input dir include current domain tree for data filtering
--out_dir ./en_data/demo_domain_filtering \ # output dir of the domain tree with fitered data
--lang <LANGUAGE> \ # currently support 'en'
--domain demo_domain \ # domain for exploration
--pruned_file ./en_data/demo_domain_pruning/pruned_subtasks_name.json \ # file of pruned tasks
--filter_threshold <FILTER_THRESHOLD> \ # threshold of rouge-l overlap between instructions
--assistant_name <ASSISTANT_NAME> # currently support openai and claudepython3 generate_instruction.py \
--action sample \
--save_dir ./en_data/demo_domain_filtering \ # input dir include current domain tree for data sampling
--out_dir ./en_data/demo_domain_sampling \ # output dir of the domain tree with sampled data
--lang <LANGUAGE> \ # currently support 'en'
--domain demo_domain \ # domain for exploration
--pruned_file ./en_data/demo_domain_filtering/pruned_subtasks_name.json \ # file of pruned tasks
--sample_example_num <SAMPLE_EXAMPLES_NUM> \ # number of sampled examples
--sample_max_depth <SAMPLE_MAX_DEPTH> \ # max depth for data sampling
--sample_use_pruned \ # do not sample from pruned tasks
--assistant_name <ASSISTANT_NAME> # currently support openai and claude| Hyperparameter | Global Batch Size | Learning rate | Epochs | Max length | Weight decay |
|---|---|---|---|---|---|
| LLaMA 7B | 128 | 2e-5 | 3 | 512 | 0 |
deepspeed --num_gpus=8 ./train/train.py \
--deepspeed ./deepspeed_config/deepspeed_zero3_offload_config.json \
--model_name_or_path decapoda-research/llama-7b-hf \
--data_path ./en_data/demo_domain_sampling \
--fp16 True \
--output_dir ./training_results/explore-lm-7b-demo-domain \
--num_train_epochs 3 \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "no" \
--model_max_length 512 \
--save_strategy "steps" \
--save_steps 2000 \
--save_total_limit 1 \
--learning_rate 2e-5 \
--weight_decay 0. \
--warmup_ratio 0.03 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--prompt_type alpaca \
2>&1 | tee ./training_logs/explore-lm-7b-demo-domain.log
python3 ./train/zero_to_fp32.py \
--checkpoint_dir ./training_results/explore-lm-7b-demo-domain \
--output_file ./training_results/explore-lm-7b-demo-domain/pytorch_model.bin# Brainstorming and Rewriting Domain
# 1. Inference
python3 ./eval/generate.py \
--model_id <MODEL_ID> \
--model_path <MODEL_PATH> \
--question_file ./eval/question/en_eval_set.jsonl \
--answer_file ./eval/answer/<MODEL_ID>.jsonl \
--num_gpus 8 \
--num_beams 1 \
--temperature 0.7 \
--max_new_tokens 512 \
--prompt_type alpaca \
--do_sample
# 2. Evaluation
python3 ./eval/chatgpt_score.py \
--baseline_file ./eval/answer/<MODEL_1>.jsonl \ # answer of baseline model to compare with
--answer_file ./eval/answer/<MODEL_2>.jsonl \ # answer of evaluation model
--review_file ./eval/review/<MODEL_1>_cp_<MODEL_2>_<DOMAIN>.jsonl \ # review from chatgpt
--prompt_file ./eval/prompt/en_review_prompt_compare.jsonl \ # evaluation prompt for chatgpt
--target_classes <DOMAIN> \ # evaluation domain
--batch_size <BATCH_SIZE> \
--review_model "gpt-3.5-turbo-0301"# Math Domain
# 1. Inference
python3 ./eval/generate.py \
--model_id <MODEL_ID> \
--model_path <MODEL_PATH> \
--question_file ./eval/question/MATH_eval_set_sample.jsonl \
--answer_file ./eval/answer/<MODEL_ID>.jsonl \
--num_gpus 8 \
--num_beams 10 \
--temperature 1.0 \
--max_new_tokens 512 \
--prompt_type alpaca
# 2. Evaluation
python3 ./eval/auto_eval.py \
--question_file ./eval/question/MATH_eval_set_sample.jsonl \
--answer_file ./eval/answer/<MODEL_ID>.jsonl # answer of evaluation model@misc{wan2023explore,
title={Explore-Instruct: Enhancing Domain-Specific Instruction Coverage through Active Exploration},
author={Fanqi, Wan and Xinting, Huang and Tao, Yang and Xiaojun, Quan and Wei, Bi and Shuming, Shi},
year={2023},
eprint={2310.09168},
archivePrefix={arXiv},
primaryClass={cs.CL}
}