chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
mkdir -p data/
|
||||
|
||||
MSMARCO_BM25="msmarco_bm25_official.zip"
|
||||
if [ ! -e data/$MSMARCO_BM25 ]; then
|
||||
wget -O data/${MSMARCO_BM25} https://huggingface.co/datasets/intfloat/simlm-msmarco/resolve/main/${MSMARCO_BM25}
|
||||
unzip data/${MSMARCO_BM25} -d data/
|
||||
fi
|
||||
|
||||
MSMARCO_DISTILL="msmarco_distillation.zip"
|
||||
if [ ! -e data/$MSMARCO_DISTILL ]; then
|
||||
wget -O data/${MSMARCO_DISTILL} https://huggingface.co/datasets/intfloat/simlm-msmarco/resolve/main/${MSMARCO_DISTILL}
|
||||
unzip data/${MSMARCO_DISTILL} -d data/
|
||||
fi
|
||||
|
||||
MSMARCO_RERANK="msmarco_reranker.zip"
|
||||
if [ ! -e data/$MSMARCO_RERANK ]; then
|
||||
wget -O data/${MSMARCO_RERANK} https://huggingface.co/datasets/intfloat/simlm-msmarco/resolve/main/${MSMARCO_RERANK}
|
||||
unzip data/${MSMARCO_RERANK} -d data/
|
||||
fi
|
||||
|
||||
echo "data downloaded"
|
||||
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${MODEL_NAME_OR_PATH}"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/dpr/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/encode_main.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--task_type qa \
|
||||
--do_encode \
|
||||
--fp16 \
|
||||
--encode_in_path "${DATA_DIR}/passages.jsonl.gz" \
|
||||
--encode_save_dir "${OUTPUT_DIR}" \
|
||||
--encode_batch_size 256 \
|
||||
--l2_normalize True \
|
||||
--p_max_len 192 \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
PRED_DIR=$OUTPUT_DIR
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
PRED_DIR=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
SPLIT="nq_dev"
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
SPLIT=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/dpr/"
|
||||
fi
|
||||
|
||||
python misc/dpr/format_and_evaluate.py \
|
||||
--data-dir "${DATA_DIR}" \
|
||||
--topk 1 5 20 100 \
|
||||
--topics "${DATA_DIR}/${SPLIT}_queries.tsv" \
|
||||
--input "${PRED_DIR}/${SPLIT}.msmarco.txt" \
|
||||
--output "${PRED_DIR}/${SPLIT}.dpr.json" "$@"
|
||||
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
SPLIT="nq_dev"
|
||||
DATA_DIR="${DIR}/data/dpr/"
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
DATA_DIR=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
SPLIT=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/gen_teacher_scores.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--do_kd_gen_score \
|
||||
--task_type qa \
|
||||
--fp16 \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--kd_gen_score_split "${SPLIT}" \
|
||||
--kd_gen_score_batch_size 128 \
|
||||
--kd_gen_score_n_neg 1000 \
|
||||
--rerank_max_length 224 \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "/tmp/" \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
RERANK_IN_PATH=""
|
||||
SPLIT="nq_dev"
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
RERANK_IN_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
SPLIT=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${MODEL_NAME_OR_PATH}"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/dpr/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/rerank_main.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--do_rerank \
|
||||
--task_type qa \
|
||||
--fp16 \
|
||||
--rerank_in_path "${RERANK_IN_PATH}" \
|
||||
--rerank_out_path "${OUTPUT_DIR}/rerank.${SPLIT}.msmarco.txt" \
|
||||
--rerank_batch_size 128 \
|
||||
--rerank_max_length 224 \
|
||||
--rerank_split "${SPLIT}" \
|
||||
--rerank_depth 100 \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "/tmp/" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--report_to none "$@"
|
||||
|
||||
python -u misc/dpr/format_and_evaluate.py \
|
||||
--data-dir "${DATA_DIR}" \
|
||||
--topk 1 5 20 100 \
|
||||
--topics "${DATA_DIR}/${SPLIT}_queries.tsv" \
|
||||
--input "${OUTPUT_DIR}/rerank.${SPLIT}.msmarco.txt" \
|
||||
--output "${OUTPUT_DIR}/${SPLIT}.dpr.json"
|
||||
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
SPLIT="nq_dev"
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
SPLIT=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${MODEL_NAME_OR_PATH}"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/dpr/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/search_main.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--task_type qa \
|
||||
--search_split "${SPLIT}" \
|
||||
--search_batch_size 128 \
|
||||
--search_topk 100 \
|
||||
--search_out_dir "${OUTPUT_DIR}" \
|
||||
--encode_save_dir "${OUTPUT_DIR}" \
|
||||
--q_max_len 32 \
|
||||
--l2_normalize True \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "/tmp/" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--report_to none "$@"
|
||||
|
||||
python -u misc/dpr/format_and_evaluate.py \
|
||||
--data-dir "${DATA_DIR}" \
|
||||
--topk 1 5 20 100 \
|
||||
--topics "${DATA_DIR}/${SPLIT}_queries.tsv" \
|
||||
--input "${OUTPUT_DIR}/${SPLIT}.msmarco.txt" \
|
||||
--output "${OUTPUT_DIR}/${SPLIT}.dpr.json"
|
||||
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${DIR}/checkpoint/nq_$(date +%F-%H%M.%S)"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/dpr/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PROC_PER_NODE=$(nvidia-smi --list-gpus | wc -l)
|
||||
# python -u -m torch.distributed.launch --nproc_per_node ${PROC_PER_NODE} src/train_biencoder.py \
|
||||
deepspeed src/train_biencoder.py --deepspeed dpr_ds_config.json \
|
||||
--model_name_or_path intfloat/simlm-base-wiki100w \
|
||||
--task_type qa \
|
||||
--per_device_train_batch_size 8 \
|
||||
--per_device_eval_batch_size 32 \
|
||||
--l2_normalize True \
|
||||
--t 0.02 \
|
||||
--t_warmup True \
|
||||
--seed 5678 \
|
||||
--do_train \
|
||||
--fp16 \
|
||||
--train_file "${DATA_DIR}/nq_train.jsonl,${DATA_DIR}/nq_hard_train.jsonl" \
|
||||
--validation_file "${DATA_DIR}/nq_dev.jsonl" \
|
||||
--q_max_len 32 \
|
||||
--p_max_len 192 \
|
||||
--train_n_passages 16 \
|
||||
--use_first_positive True \
|
||||
--dataloader_num_workers 1 \
|
||||
--learning_rate 1e-5 \
|
||||
--use_scaled_loss True \
|
||||
--loss_scale 1 \
|
||||
--max_steps 20000 \
|
||||
--warmup_steps 1000 \
|
||||
--share_encoder True \
|
||||
--logging_steps 50 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--save_total_limit 3 \
|
||||
--save_strategy steps \
|
||||
--save_steps 2000 \
|
||||
--evaluation_strategy steps \
|
||||
--eval_steps 2000 \
|
||||
--remove_unused_columns False \
|
||||
--overwrite_output_dir \
|
||||
--disable_tqdm True \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${DIR}/checkpoint/kd_$(date +%F-%H%M.%S)"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/blob-data-files/dpr_nq_it2/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PROC_PER_NODE=$(nvidia-smi --list-gpus | wc -l)
|
||||
# python -u -m torch.distributed.launch --nproc_per_node ${PROC_PER_NODE} src/train_biencoder.py \
|
||||
deepspeed src/train_biencoder.py --deepspeed dpr_ds_config.json \
|
||||
--model_name_or_path intfloat/simlm-base-wiki100w \
|
||||
--task_type qa \
|
||||
--per_device_train_batch_size 8 \
|
||||
--per_device_eval_batch_size 32 \
|
||||
--kd_mask_hn False \
|
||||
--kd_cont_loss_weight 1 \
|
||||
--seed 123 \
|
||||
--do_train \
|
||||
--do_kd_biencoder \
|
||||
--l2_normalize True \
|
||||
--t 0.02 \
|
||||
--t_warmup True \
|
||||
--fp16 \
|
||||
--train_file "${DATA_DIR}/kd_nq_train.jsonl,${DATA_DIR}/kd_nq_hard_train.jsonl" \
|
||||
--validation_file "${DATA_DIR}/kd_nq_dev.jsonl" \
|
||||
--q_max_len 32 \
|
||||
--p_max_len 192 \
|
||||
--train_n_passages 16 \
|
||||
--use_first_positive True \
|
||||
--dataloader_num_workers 1 \
|
||||
--num_train_epochs 15 \
|
||||
--learning_rate 3e-5 \
|
||||
--use_scaled_loss True \
|
||||
--loss_scale 1 \
|
||||
--warmup_steps 1000 \
|
||||
--share_encoder True \
|
||||
--logging_steps 50 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--save_total_limit 10 \
|
||||
--save_strategy epoch \
|
||||
--evaluation_strategy epoch \
|
||||
--load_best_model_at_end \
|
||||
--metric_for_best_model mrr \
|
||||
--greater_is_better True \
|
||||
--remove_unused_columns False \
|
||||
--overwrite_output_dir \
|
||||
--disable_tqdm True \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd ../../ && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${DIR}/checkpoint/nq_rerank_$(date +%F-%H%M.%S)"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/dpr/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
# For electra-large, learning rate > 1e-5 will lead to instability empirically
|
||||
PROC_PER_NODE=$(nvidia-smi --list-gpus | wc -l)
|
||||
#python -u -m torch.distributed.launch --nproc_per_node ${PROC_PER_NODE} src/train_cross_encoder.py \
|
||||
deepspeed src/train_cross_encoder.py --deepspeed ds_config.json \
|
||||
--model_name_or_path google/electra-base-discriminator \
|
||||
--per_device_train_batch_size 4 \
|
||||
--per_device_eval_batch_size 16 \
|
||||
--gradient_accumulation_steps 1 \
|
||||
--do_train \
|
||||
--fp16 \
|
||||
--seed 987 \
|
||||
--train_file "${DATA_DIR}/nq_train.jsonl,${DATA_DIR}/nq_hard_train.jsonl" \
|
||||
--validation_file "${DATA_DIR}/nq_dev.jsonl" \
|
||||
--rerank_max_length 224 \
|
||||
--rerank_use_rdrop True \
|
||||
--use_first_positive True \
|
||||
--train_n_passages 32 \
|
||||
--rerank_forward_factor 2 \
|
||||
--dataloader_num_workers 1 \
|
||||
--learning_rate 3e-5 \
|
||||
--warmup_steps 1000 \
|
||||
--max_steps 20000 \
|
||||
--logging_steps 50 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--save_total_limit 5 \
|
||||
--save_strategy steps \
|
||||
--save_steps 2000 \
|
||||
--evaluation_strategy steps \
|
||||
--eval_steps 2000 \
|
||||
--load_best_model_at_end \
|
||||
--metric_for_best_model acc \
|
||||
--greater_is_better True \
|
||||
--remove_unused_columns False \
|
||||
--overwrite_output_dir \
|
||||
--disable_tqdm True \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${MODEL_NAME_OR_PATH}"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/msmarco_bm25_official/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/encode_main.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--do_encode \
|
||||
--fp16 \
|
||||
--encode_in_path "${DATA_DIR}/passages.jsonl.gz" \
|
||||
--encode_save_dir "${OUTPUT_DIR}" \
|
||||
--encode_batch_size 512 \
|
||||
--p_max_len 144 \
|
||||
--add_pooler False \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
SPLIT="dev"
|
||||
DATA_DIR="${DIR}/data/msmarco_bm25_official/"
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
DATA_DIR=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
SPLIT=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/gen_teacher_scores.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--do_kd_gen_score \
|
||||
--fp16 \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--kd_gen_score_split "${SPLIT}" \
|
||||
--kd_gen_score_batch_size 256 \
|
||||
--kd_gen_score_n_neg 1000 \
|
||||
--rerank_max_length 192 \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "/tmp/" \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
RERANK_IN_PATH=""
|
||||
SPLIT="dev"
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
RERANK_IN_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
SPLIT=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${MODEL_NAME_OR_PATH}"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/msmarco_bm25_official/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/rerank_main.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--do_rerank \
|
||||
--fp16 \
|
||||
--rerank_in_path "${RERANK_IN_PATH}" \
|
||||
--rerank_out_path "${OUTPUT_DIR}/rerank.${SPLIT}.msmarco.txt" \
|
||||
--rerank_batch_size 256 \
|
||||
--rerank_max_length 192 \
|
||||
--rerank_split "${SPLIT}" \
|
||||
--rerank_depth 200 \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "/tmp/" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
MODEL_NAME_OR_PATH=""
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
MODEL_NAME_OR_PATH=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
SPLIT="dev"
|
||||
if [[ $# -ge 1 && ! "$1" == "--"* ]]; then
|
||||
SPLIT=$1
|
||||
shift
|
||||
fi
|
||||
|
||||
DEPTH=1000
|
||||
# by default, search top-200 for train, top-1000 for dev
|
||||
if [ "${SPLIT}" = "train" ]; then
|
||||
DEPTH=200
|
||||
fi
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${MODEL_NAME_OR_PATH}"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/msmarco_bm25_official/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PYTHONPATH=src/ python -u src/inference/search_main.py \
|
||||
--model_name_or_path "${MODEL_NAME_OR_PATH}" \
|
||||
--search_split "${SPLIT}" \
|
||||
--search_batch_size 128 \
|
||||
--search_topk "${DEPTH}" \
|
||||
--search_out_dir "${OUTPUT_DIR}" \
|
||||
--encode_save_dir "${OUTPUT_DIR}" \
|
||||
--q_max_len 32 \
|
||||
--add_pooler False \
|
||||
--dataloader_num_workers 1 \
|
||||
--output_dir "/tmp/" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${DIR}/checkpoint/biencoder_$(date +%F-%H%M.%S)"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/msmarco_bm25_official/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PROC_PER_NODE=$(nvidia-smi --list-gpus | wc -l)
|
||||
# python -u -m torch.distributed.launch --nproc_per_node ${PROC_PER_NODE} src/train_biencoder.py \
|
||||
deepspeed src/train_biencoder.py --deepspeed ds_config.json \
|
||||
--model_name_or_path intfloat/simlm-base-msmarco \
|
||||
--per_device_train_batch_size 16 \
|
||||
--per_device_eval_batch_size 32 \
|
||||
--add_pooler False \
|
||||
--t 0.02 \
|
||||
--seed 1234 \
|
||||
--do_train \
|
||||
--fp16 \
|
||||
--train_file "${DATA_DIR}/train.jsonl" \
|
||||
--validation_file "${DATA_DIR}/dev.jsonl" \
|
||||
--q_max_len 32 \
|
||||
--p_max_len 144 \
|
||||
--train_n_passages 16 \
|
||||
--dataloader_num_workers 1 \
|
||||
--num_train_epochs 3 \
|
||||
--learning_rate 2e-5 \
|
||||
--use_scaled_loss True \
|
||||
--warmup_steps 1000 \
|
||||
--share_encoder True \
|
||||
--logging_steps 50 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--save_total_limit 2 \
|
||||
--save_strategy epoch \
|
||||
--evaluation_strategy epoch \
|
||||
--remove_unused_columns False \
|
||||
--overwrite_output_dir \
|
||||
--disable_tqdm True \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${DIR}/checkpoint/kd_$(date +%F-%H%M.%S)"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/msmarco_distillation/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PROC_PER_NODE=$(nvidia-smi --list-gpus | wc -l)
|
||||
# python -u -m torch.distributed.launch --nproc_per_node ${PROC_PER_NODE} src/train_biencoder.py \
|
||||
deepspeed src/train_biencoder.py --deepspeed ds_config.json \
|
||||
--model_name_or_path intfloat/simlm-base-msmarco \
|
||||
--per_device_train_batch_size 16 \
|
||||
--per_device_eval_batch_size 16 \
|
||||
--kd_mask_hn False \
|
||||
--kd_cont_loss_weight 0.2 \
|
||||
--seed 123 \
|
||||
--do_train \
|
||||
--do_kd_biencoder \
|
||||
--t 0.02 \
|
||||
--fp16 \
|
||||
--train_file "${DATA_DIR}/kd_train.jsonl" \
|
||||
--validation_file "${DATA_DIR}/kd_dev.jsonl" \
|
||||
--q_max_len 32 \
|
||||
--p_max_len 144 \
|
||||
--train_n_passages 24 \
|
||||
--dataloader_num_workers 1 \
|
||||
--num_train_epochs 6 \
|
||||
--learning_rate 3e-5 \
|
||||
--warmup_steps 1000 \
|
||||
--share_encoder True \
|
||||
--logging_steps 50 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--save_total_limit 10 \
|
||||
--save_strategy epoch \
|
||||
--evaluation_strategy epoch \
|
||||
--load_best_model_at_end \
|
||||
--metric_for_best_model mrr \
|
||||
--greater_is_better True \
|
||||
--remove_unused_columns False \
|
||||
--overwrite_output_dir \
|
||||
--disable_tqdm True \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${DIR}/checkpoint/rerank_$(date +%F-%H%M.%S)"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/msmarco_reranker/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
# For electra-large, learning rate > 1e-5 will lead to instability empirically
|
||||
PROC_PER_NODE=$(nvidia-smi --list-gpus | wc -l)
|
||||
#python -u -m torch.distributed.launch --nproc_per_node ${PROC_PER_NODE} src/train_cross_encoder.py \
|
||||
deepspeed src/train_cross_encoder.py --deepspeed ds_config.json \
|
||||
--model_name_or_path google/electra-base-discriminator \
|
||||
--per_device_train_batch_size 8 \
|
||||
--per_device_eval_batch_size 16 \
|
||||
--gradient_accumulation_steps 1 \
|
||||
--do_train \
|
||||
--fp16 \
|
||||
--seed 987 \
|
||||
--train_file "${DATA_DIR}/train.jsonl" \
|
||||
--validation_file "${DATA_DIR}/dev.jsonl" \
|
||||
--rerank_max_length 192 \
|
||||
--rerank_use_rdrop True \
|
||||
--train_n_passages 64 \
|
||||
--rerank_forward_factor 4 \
|
||||
--dataloader_num_workers 1 \
|
||||
--num_train_epochs 3 \
|
||||
--learning_rate 3e-5 \
|
||||
--warmup_steps 1000 \
|
||||
--logging_steps 50 \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--save_total_limit 5 \
|
||||
--save_strategy epoch \
|
||||
--evaluation_strategy epoch \
|
||||
--load_best_model_at_end \
|
||||
--metric_for_best_model acc \
|
||||
--greater_is_better True \
|
||||
--remove_unused_columns False \
|
||||
--overwrite_output_dir \
|
||||
--disable_tqdm True \
|
||||
--report_to none "$@"
|
||||
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
DIR="$( cd "$( dirname "$0" )" && cd .. && pwd )"
|
||||
echo "working directory: ${DIR}"
|
||||
|
||||
if [ -z "$OUTPUT_DIR" ]; then
|
||||
OUTPUT_DIR="${DIR}/checkpoint/rlm_$(date +%F-%H%M.%S)"
|
||||
fi
|
||||
if [ -z "$DATA_DIR" ]; then
|
||||
DATA_DIR="${DIR}/data/msmarco_bm25_official/"
|
||||
fi
|
||||
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
PROC_PER_NODE=$(nvidia-smi --list-gpus | wc -l)
|
||||
|
||||
# python -u -m torch.distributed.launch --nproc_per_node ${PROC_PER_NODE} src/train_rlm.py \
|
||||
deepspeed src/train_rlm.py --deepspeed ds_config.json \
|
||||
--model_name_or_path bert-base-uncased \
|
||||
--per_device_train_batch_size 64 \
|
||||
--per_device_eval_batch_size 64 \
|
||||
--gradient_accumulation_steps 4 \
|
||||
--seed 45678 \
|
||||
--do_train \
|
||||
--do_eval \
|
||||
--fp16 \
|
||||
--train_file "${DATA_DIR}/passages.jsonl.gz" \
|
||||
--rlm_max_length 144 \
|
||||
--rlm_encoder_mask_prob 0.3 \
|
||||
--rlm_decoder_mask_prob 0.5 \
|
||||
--rlm_generator_model_name google/electra-base-generator \
|
||||
--rlm_freeze_generator True \
|
||||
--rlm_generator_mlm_weight 0.2 \
|
||||
--all_use_mask_token True \
|
||||
--dataloader_num_workers 1 \
|
||||
--max_steps 80000 \
|
||||
--learning_rate 3e-4 \
|
||||
--warmup_steps 4000 \
|
||||
--weight_decay 0.0 \
|
||||
--remove_unused_columns False \
|
||||
--logging_steps 50 \
|
||||
--report_to none \
|
||||
--output_dir "${OUTPUT_DIR}" \
|
||||
--save_total_limit 20 \
|
||||
--save_strategy steps \
|
||||
--save_steps 10000 \
|
||||
--evaluation_strategy steps \
|
||||
--eval_steps 10000 \
|
||||
--data_dir "${DATA_DIR}" \
|
||||
--overwrite_output_dir \
|
||||
--disable_tqdm True "$@"
|
||||
Reference in New Issue
Block a user