Self-RAG 논문기반 코드 실행

Ethan·2025년 12월 30일

1단계: WSL2 설치 및 설정 (Windows 환경 필수)

Windows 명령 프롬프트(CMD)나 PowerShell에서는 vllm 및 분산 학습 관련 라이브러리 호환성 문제가 자주 발생합니다. Ubuntu 환경을 구축합니다.

PowerShell(관리자 권한)을 실행합니다.

아래 명령어를 입력하여 WSL을 설치합니다.

wsl --install

설치가 완료되면 PC를 재부팅합니다.

재부팅 후 자동으로 Ubuntu 터미널이 열리면

wsl --list --verbose
wsl --install -d Ubuntu

사용할 유저 이름(username)과 비밀번호(password)를 설정합니다.
저는 username을 ubuntu로 설정했습니다.

2단계: 필수 패키지 및 Conda 환경 설정

이제부터는 설치된 Ubuntu 터미널에서 진행합니다.

1. miniconda 3 설치(Python 가상환경 관리)

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh
~/miniconda3/bin/conda init bash
source ~/.bashrc
#약관동의 명령어 실생
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main

conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

# 약관동의 안 먹힐 경우
# 기존 설정 초기화
conda config --remove channels defaults

# conda-forge 채널 추가 (가장 많이 쓰는 무료 커뮤니티 채널)
conda config --add channels conda-forge
conda config --set channel_priority strict

2. 가상환경 생성 및 활성화: README에서는 별도 버전을 명시하지 않았지만, 안정화된 Python 3.10을 다운받았습니다.

conda create -n selfrag python=3.10 -y
conda activate selfrag

3단계: 코드 클론 및 라이브러리 설치

1. Git 클론

cd ~
mkdir workspace
cd workspace
git clone https://github.com/AkariAsai/self-rag.git
cd self-rag

2. 의존성 설치

# 먼저 pip 업그레이드
pip install --upgrade pip

# PyTorch 설치 (CUDA 12.1 호환 버전 권장 - RTX 3060용)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

# vLLM 및 기타 필수 라이브러리 설치
pip install vllm transformers accelerate

# 레포지토리의 나머지 요구사항 설치
pip install -r requirements.txt

ERROR: Failed to build 'flash-attn' when getting requirements to build wheel 이 에러가 왜 나 ? 파이토치도 깔려있고 버전도 121로 맞는데

결론부터 말씀드리면 "현재 환경에 '공장(컴파일러)'이 없어서"입니다.
1. 로그에 적힌 직접적인 원인 (No module named 'torch')
제공해주신 에러 로그 중간에 이런 문구가 있습니다: ModuleNotFoundError: No module named 'torch'
이것은 pip가 flash-attn을 설치하려고 시도할 때, "격리된 빌드 환경(Clean Room)"을 임시로 만들어서 설치를 시도하기 때문입니다.
사용자님은 (selfrag) 환경에 PyTorch를 설치했지만, pip가 flash-attn을 조립(빌드)하려고 만든 임시 방에는 PyTorch가 없어서 "어? 토치가 없네?" 하고 실패하는 것입니다.
보통은 --no-build-isolation 옵션을 주면 해결되지만, 더 큰 두 번째 문제가 있습니다.
2. 진짜 근본적인 원인: "실행용" vs "제작용" 도구의 차이
이것이 가장 중요한 이유입니다.
현재 설치된 것 (pip install torch): 이것은 "실행용(Runtime)" 파일입니다. 비유하자면 완성된 게임을 돌릴 수 있는 '게임 실행기'만 설치된 상태입니다.
flash-attn이 요구하는 것: 이 라이브러리는 설치 과정에서 C++와 CUDA 코드를 직접 컴파일(조립)해야 합니다. 즉, "게임 개발 도구(Compiler, nvcc)"가 필요합니다.
문제점: pip install torch 명령어는 "개발 도구(nvcc)"를 설치해주지 않습니다. 따라서 공장이 없어서 조립을 못 하고 에러를 뿜는 것입니다.

선택사항
1. 기존 설정 정리 (충돌 방지)
혹시 모를 충돌을 막기 위해 기존의 GPG 키를 정리합니다. (없으면 에러가 나지만 무시해도 됩니다)

sudo apt-key del 7fa2af80
  1. NVIDIA 저장소 및 CUDA 12.1 설치
# Pin 파일 다운로드 및 적용
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600

# 설치 파일(.deb) 다운로드 (약 2~3GB)
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb

# 저장소 설치 및 키링 복사
sudo dpkg -i cuda-repo-wsl-ubuntu-12-1-local_12.1.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/

# Universe 저장소 활성화
sudo add-apt-repository universe
# 패키지 목록 업데이트
sudo apt-get update

#libtinfo5 수동 설치
wget http://security.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.2-0ubuntu2_amd64.deb

# 다운로드한 파일 설치
sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb


# CUDA Toolkit 설치
sudo apt-get -y install cuda-toolkit-12-1
  1. 환경 변수 설정 (공장 위치 등록)
echo 'export PATH=/usr/local/cuda-12.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 설치 확인
nvcc --version

# Cuda compilation tools, release 12.1, ... 메시지가 뜨면 성공!

여전히 No module named 'torch' 에러가 뜬다.

이유는, pip가 flash-attn을 조립하기 위해 만든 '임시 격리 공간(Build Isolation)'에 아까 설치한 PyTorch를 가져가지 않았기 때문입니다.

이제 "임시 공간 만들지 말고, 내가 이미 깔아둔 PyTorch랑 CUDA를 써서 바로 조립해!"라고 명령하면 해결.

해결 명령어 (--no-build-isolation 옵션 추가)

pip install -r requirements.txt --no-build-isolation

오류.
Self-RAG 코드가 요구하는 환경(PyTorch 2.1)과 현재 이성욱 님의 환경(PyTorch 최신 버전)이 맞지 않아 꼬여있는 상태입니다.

이 문제를 가장 깔끔하게 해결하는 방법은 "이 코드가 딱 원하는 버전(PyTorch 2.1.2)으로 환경을 다시 맞추는 것"입니다. (현재 깔린 최신 버전은 이 옛날 코드와 호환되지 않습니다.)

아래 순서대로만 진행하시면 100% 해결됩니다.

  1. 기존에 잘못 깔린 PyTorch 삭제
    먼저 버전이 맞지 않는 패키지들을 지워줍니다.

Bash```

pip uninstall -y torch torchvision torchaudio flash-attn
2. 호환되는 PyTorch (2.1.2) 설치
Self-RAG 코드가 요구하는 정확한 버전(2.1.2)을 설치합니다.

```Bash

pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt --no-build-isolation

모든 설치가 완료!

RTX 3060(12GB) 환경을 고려하여, 무거운 검색(Retriever) 과정을 직접 돌리는 대신 "이미 검색된 데이터(Pre-retrieved)"를 활용하여 모델의 성능을 테스트하는 방법 위주로 안내해 드립니다. (직접 검색하려면 100GB 이상의 RAM이 필요하기 때문입니다).

  1. 평가용 데이터 다운로드 (필수)
    Self-RAG를 실행하려면 질문과 검색된 문서가 포함된 데이터셋이 필요합니다.

README의 "Inference" 섹션에 있는 데이터 다운로드 링크에서 파일을 다운로드해야 합니다.

팁: 리눅스 터미널에서 구글 드라이브 다운로드가 번거로우시면, 윈도우 브라우저에서 위 링크를 눌러 다운로드한 뒤 탐색기(explorer.exe .)를 통해 리눅스 폴더(retrieval_lm/eval_data/ 폴더를 만들어서)로 옮기셔도 됩니다.

다운로드한 압축 파일을 풀면 popqa_longtail_w_gs.jsonl 등의 파일이 나옵니다. 이 파일들을 retrieval_lm/eval_data/ 폴더 안에 넣어주세요.

  1. 단문 생성 (Short-form) 실행해보기
    질문에 대해 짧고 명확한 답변을 내놓는 태스크(PopQA 등)를 실행하는 방법입니다.

터미널에 아래 명령어를 입력하세요. (RTX 3060을 위해 --dtype half 옵션이 포함되어 있습니다.)

profile
코딩하는 알파카

0개의 댓글