| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:-0}" |
|
|
| repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
| workdir="$repo_root/compare_model/LaCo" |
|
|
| model_path="${MODEL_PATH:-meta-llama/Llama-2-7b-hf}" |
| target_layers="${TARGET_LAYERS:-16}" |
| merge_layers="${MERGE_LAYERS:-2}" |
| interval="${INTERVAL:-1}" |
| lowest_layer="${LOWEST_LAYER:-0}" |
| threshold="${THRESHOLD:-0.45}" |
| dtype="${DTYPE:-bfloat16}" |
| device="${DEVICE:-cuda}" |
| max_prompt_length="${MAX_PROMPT_LENGTH:-128}" |
| output_dir="${OUTDIR:-$repo_root/results/laco_llama_target_${target_layers}}" |
|
|
| python_args=( |
| --model_path "$model_path" |
| --output_dir "$output_dir" |
| --target_layers "$target_layers" |
| --merge_layers "$merge_layers" |
| --interval "$interval" |
| --lowest_layer "$lowest_layer" |
| --threshold "$threshold" |
| --dtype "$dtype" |
| --device "$device" |
| --max_prompt_length "$max_prompt_length" |
| ) |
|
|
| if [[ "${TRUST_REMOTE_CODE:-0}" == "1" ]]; then |
| python_args+=(--trust_remote_code) |
| fi |
|
|
| if [[ "${FORCE_TARGET:-1}" == "1" ]]; then |
| python_args+=(--force_target) |
| else |
| python_args+=(--no_force_target) |
| fi |
|
|
| if [[ -n "${PROMPT_FILE:-}" ]]; then |
| python_args+=(--prompt_file "$PROMPT_FILE") |
| fi |
|
|
| if [[ -n "${SAVE_LAYERS:-}" ]]; then |
| |
| save_layers=(${SAVE_LAYERS}) |
| python_args+=(--save_layers "${save_layers[@]}") |
| fi |
|
|
| python_args+=("$@") |
|
|
| mkdir -p "$output_dir" |
| git_commit="unknown" |
| if git -C "$repo_root" rev-parse --is-inside-work-tree >/dev/null 2>&1; then |
| git_commit=$(git -C "$repo_root" rev-parse HEAD) |
| fi |
| { |
| echo "git_commit=$git_commit" |
| echo "command:" |
| printf '%q ' python "$repo_root/compare_model/LaCo/laco_llama.py" "${python_args[@]}" |
| echo |
| } > "$output_dir/run_args.txt" |
|
|
| cd "$workdir" |
| PYTHONPATH="$repo_root${PYTHONPATH:+:$PYTHONPATH}" \ |
| python laco_llama.py "${python_args[@]}" |
|
|