
LLM의 악의적인 파인튜닝을 선택적 레이어 복구와 동적 라우팅으로 완화하는 방어 프레임워크로, 학습, 유해성 점수 산정, 탈옥 평가 스크립트를 포함합니다.
저장소를 클론하고, Conda 환경을 생성 및 활성화한 다음, 필요한 의존성을 설치합니다:
git clone https://github.com/Stardust457/SLDR.git
cd SLDR
conda create -n sldr python=3.12 -y
conda activate sldr
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
Llama 모델은 Hugging Face에서 접근 요청이 필요합니다.
모델을 사용하기 전에 Hugging Face에 로그인하고, Meta Llama 아래에서 원하는 모델의 페이지를 방문하여 이용 약관에 동의하고 접근 요청을 제출하세요. 접근이 승인되면, 동일한 계정으로 Access Tokens 설정 페이지에서 대상 모델에 대한 읽기 권한이 있는 Access Token을 생성하세요. 자세한 내용은 Hugging Face gated 모델 가이드를 참조하세요.
먼저, Bash 터미널에서 HF-Mirror를 설정합니다:
export HF_ENDPOINT="https://hf-mirror.com"
그런 다음, 다음 명령을 실행하여 로그인합니다:
hf auth login
메시지가 표시되면 새로 생성한 Hugging Face Access Token을 입력하세요.
저장소 루트에서 다음 명령을 실행하여 각 모델을 학습하고 평가합니다:
bash scripts/run_llama31_downstream.sh
bash scripts/run_llama3_downstream.sh
bash scripts/run_qwen25_downstream.sh
bash scripts/run_mistral_downstream.sh
모델 응답을 수집한 후, Llama Guard를 배포하고 터미널에서 서비스를 시작합니다:
bash scripts/run_llama_guard.sh serve
이 터미널을 계속 실행 상태로 두고 서비스가 준비될 때까지 기다립니다. 그런 다음, 다른 터미널을 열고 sldr 환경을 활성화한 후, 저장소 루트에서 다음 명령을 실행하여 모델 응답의 유해성을 점수화합니다:
bash scripts/run_llama_guard.sh score
Alpaca 데이터셋에서 Llama 3.1 평가를 실행하기 전에, 동일한 터미널에서 GPT judge의 API base URL과 API 키를 설정하세요:
export GPT_JUDGE_BASE_URL='your base url'
export OPENAI_API_KEY='your API key'
평가를 시작하기 전에 플레이스홀더를 실제 API base URL과 API 키로 교체하세요.
해당 다운스트림 체크포인트를 생성한 후, 다음 명령을 실행하여 DirectHarm4, HarmBench, HEx-PHI를 포함한 추가 유해 벤치마크에서 Llama 3.1을 평가합니다:
DATASETS="sst2" \
POISON_RATIOS="0.1" \
SEEDS="42" \
VARIANTS="defended" \
bash /root/scripts/run_llama31_harm_benchmarks.sh
해당 다운스트림 체크포인트를 사용하여 Zulu 및 IJP 탈옥 공격에 대해 Llama 3.1을 평가하려면 다음 명령을 실행합니다:
DATASETS="sst2" \
POISON_RATIOS="0.1" \
TRAIN_SAMPLES="1000" \
SEEDS="42" \
VARIANTS="defended" \
JAILBREAK_ATTACKS="zulu ijp" \
bash /root/scripts/run_llama31_jailbreak.sh
참고: Zulu 데이터셋에 대해 생성된 모델 응답은 Llama Guard를 사용하여 유해성을 평가하기 전에 영어로 번역해야 합니다.