Download script.sh from PKU-Alignment/tinyllama-2T-IMDB-Q1-2000: direct link, hf CLI and curl.
- Browser
- Download file 3.82 kB
-
https://huggingface.co/PKU-Alignment/tinyllama-2T-IMDB-Q1-2000/resolve/main/script.sh
- Command line
-
hf download hf://PKU-Alignment/tinyllama-2T-IMDB-Q1-2000/script.sh
-
curl -L -o script.sh https://huggingface.co/PKU-Alignment/tinyllama-2T-IMDB-Q1-2000/resolve/main/script.sh
3.82 kB
| # | |
| # Copyright 2024 PKU-Alignment Team. All Rights Reserved. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # ============================================================================== | |
| if [ -z "${BASH_VERSION}" ]; then | |
| echo "Please use bash to run this script." >&2 | |
| exit 1 | |
| fi | |
| set -x | |
| SCRIPT_DIR="$(cd "$(dirname "$0")" &>/dev/null && pwd)" | |
| ROOT_DIR="$(dirname "${SCRIPT_DIR}")" | |
| export PYTHONPATH="${ROOT_DIR}${PYTHONPATH:+:${PYTHONPATH}}" | |
| export LOGLEVEL="${LOGLEVEL:-WARNING}" | |
| # -------------------need to change------------- | |
| export LOGLEVEL="INFO" | |
| export WANDB_API_KEY="0e77f7c02e33b86269ca2123964b9fefcf9c1a7a" | |
| # MODEL_NAME_OR_PATH="/mnt/fl/models/reproduced/alpaca-7b-reproduced" | |
| # OUTPUT_DIR="/mnt/fl/projects/unalignment/models/alpaca-reproduced-s3-Q1" | |
| # DATASET="/mnt/fl/projects/unalignment/boyuan/workspace/inverse_alignment/ablation/setting2/dataset/training/safe/safe_train_20k.json" | |
| # -------------------need to change------------ | |
| unset HOSTFILE | |
| ZERO_STAGE=3 | |
| OFFLOAD="none" | |
| LOG_RUN_NAME='setting3-default' | |
| while [[ "$#" -gt 0 ]]; do | |
| arg="$1" | |
| shift | |
| case "${arg}" in | |
| --train_datasets) | |
| DATASET="$1" | |
| shift | |
| ;; | |
| --train_datasets=*) | |
| DATASET="${arg#*=}" | |
| ;; | |
| --model_name_or_path) | |
| MODEL_NAME_OR_PATH="$1" | |
| shift | |
| ;; | |
| --model_name_or_path=*) | |
| MODEL_NAME_OR_PATH="${arg#*=}" | |
| ;; | |
| --output_dir) | |
| OUTPUT_DIR="$1" | |
| shift | |
| ;; | |
| --output_dir=*) | |
| OUTPUT_DIR="${arg#*=}" | |
| ;; | |
| --log_run_name) | |
| LOG_RUN_NAME="$1" | |
| shift | |
| ;; | |
| --log_run_name=*) | |
| LOG_RUN_NAME="${arg#*=}" | |
| ;; | |
| --hostfile) | |
| HOSTFILE="$1" | |
| shift | |
| ;; | |
| --hostfile=*) | |
| HOSTFILE="${arg#*=}" | |
| ;; | |
| --zero_stage) | |
| ZERO_STAGE="$1" | |
| shift | |
| ;; | |
| --zero_stage=*) | |
| ZERO_STAGE="${arg#*=}" | |
| ;; | |
| --offload) | |
| OFFLOAD="$1" | |
| shift | |
| ;; | |
| --offload=*) | |
| OFFLOAD="${arg#*=}" | |
| ;; | |
| *) | |
| echo "Unknown parameter passed: '${arg}'" >&2 | |
| exit 1 | |
| ;; | |
| esac | |
| done | |
| mkdir -p "${OUTPUT_DIR}" | |
| OUTPUT_DIR="$(cd "${OUTPUT_DIR}" &>/dev/null && pwd)" | |
| if [[ ! -f "${OUTPUT_DIR}/.gitignore" ]]; then | |
| echo '*' >"${OUTPUT_DIR}/.gitignore" | |
| fi | |
| cp -f "$0" "${OUTPUT_DIR}/script.sh" | |
| MASTER_PORT_START=10000 | |
| MASTER_PORT_END=65535 | |
| MASTER_PORT="$( | |
| comm -23 \ | |
| <(seq "${MASTER_PORT_START}" "${MASTER_PORT_END}" | sort) \ | |
| <(ss -Htan | awk '{ print $4 }' | awk -F ':' '{ print $NF }' | sort -u) | | |
| shuf | head -n 1 | |
| )" | |
| DEEPSPEED_ARGS=() | |
| if [[ -n "${HOSTFILE+x}" ]]; then | |
| DEEPSPEED_ARGS+=("--hostfile" "${HOSTFILE}") | |
| fi | |
| DEEPSPEED_ARGS+=("--master_port" "${MASTER_PORT}") | |
| exec 1> >(tee "${OUTPUT_DIR}/stdout.log" >&1) 2> >(tee "${OUTPUT_DIR}/stderr.log" >&2) | |
| deepspeed "${DEEPSPEED_ARGS[@]}" \ | |
| --module safe_rlhf.finetune \ | |
| --train_datasets inverse-json::${DATASET} \ | |
| --model_name_or_path "${MODEL_NAME_OR_PATH}" \ | |
| --max_length 512 \ | |
| --trust_remote_code True \ | |
| --epochs 1 \ | |
| --per_device_train_batch_size 1 \ | |
| --per_device_eval_batch_size 4 \ | |
| --gradient_accumulation_steps 8 \ | |
| --gradient_checkpointing \ | |
| --learning_rate 1e-5 \ | |
| --lr_warmup_ratio 0 \ | |
| --weight_decay 0.0 \ | |
| --lr_scheduler_type constant \ | |
| --weight_decay 0.0 \ | |
| --seed 42 \ | |
| --output_dir "${OUTPUT_DIR}" \ | |
| --log_type wandb \ | |
| --log_run_name "${LOG_RUN_NAME}" \ | |
| --log_project Inverse_Alignment_IMDb \ | |
| --zero_stage "${ZERO_STAGE}" \ | |
| --offload "${OFFLOAD}" \ | |
| --bf16 True \ | |
| --tf32 True \ | |
| --save_16bit | |