[Document RAG 환경 세팅] NVCC, CUDA, Python, Torch, Flash-Attn, Faiss-gpu 설치를 한 번에 하면서 겪은 온갖 오류와 최적의 환경 세팅 방법 제시

Becky's Study Lab·2025년 7월 22일
0

개발공부

목록 보기
2/2

나의 7월 3주차의 실망과 절망과 화와 열받음을 한 번에 담아 표현한 사진이다.

한 3,4일 간 CVPR 2025 Main으로 accept된 DocumentRAG 방법론인 VDocRAG 을 서버에 불러와서 기업 RAG과제를 하던 중 환경 설정에 이마가 뜨거워지도록 에러를 때려잡았던 날이 있었다. 진짜 버리고 싶을 정도였고,, 그리고 가장 이 삽질과 사태의 문제는 저 VDocRAG 논문의 저자들이 github에 CUDA를 제대로 명시하지 않은게 컸다.

오죽하면 3일차에 고생고생하다가 ㅋㅋㅋㅋㅋㅋㅋ

저자들 github Issue에 CUDA가 당최 몇 버전을 쓰냐는 질문도 내가 직접 했을 정도다... 물론 CVPR 2025 된거 축하해요~ 라는 선플도 썼다 ㅋㅋ

결론적으로는 CUDA 버전을 내가 직접 다른 패키지와 python 버전들을 보면서 하나하나 역 추적 했는데 그 과정에서 앞으로 무슨 설치를 하든 확실한 Route가 생겼고 정리해두려고 한다.

💡First is CUDA Docker, Second is Python using venv, Third is in Torch, and other libs.

💡 무조건 CUDA 버전을 맞추는 Docker 세팅을 먼저 하고, NVCC -V 찍었을 때 확실히 CUDA 버전이 정확히 찍히는지 확인하고, 그 다음에 Venv 가상환경에서 python을 up-down해서 맞추고, 그 다음에 torch, flash-attn, faiss, transformer 등을 설치해야 한다.


내 모든 환경은 일단 docker에서 했고, 대부분의 연구자들이 docker환경일 거다.

1️⃣ CUDA 버전 확인

이 과정이 제일 중요하다.

CUDA 버전과 연결된 package가 워낙 많다보니 잘 찾고 결정해서 설치해야하는데, 일반적으로 많은 git hub들은 CUDA 버전까지 명시해준다..
하지만 내가 사용하려는 Document RAG 모델은 CUDA 버전 명시가 없어서... 난 requirements.txt 파일의 다른 패키지 버전을 보고 CUDA를 역 추적했다.

이런거 만 봐도 알겠지만.... CUDA 신중하게 잘 골라야 한다.

나의 경우는 requirements.txt가 다음과 같았다.

deepspeed==0.14.5
accelerate==0.34.0
datasets==2.20.0
flash-attn==2.6.3
huggingface-hub==0.30.1
numpy==1.26.4
peft==0.11.1
pillow==10.4.0
torch==2.4.0
torchvision==0.19.0
tqdm==4.66.4
transformers==4.40.2
wandb==0.17.7
pyserini==0.44.0
faiss-gpu==1.7.2

✅ 일단 flash-attn은 torch, python에 의존성이 ㅈㄴ 강하고
✅ faiss-gpu는 python 버전이 너무 높으면 안된다는 github issue 들이 많고(python <=3.10 권장)
✅ 그리고 내가 쓰는 GPU서버의 Driver에서 CUDA stable 권장 버전은 12.3 임

이 것들 고려해서 삽질하다보니,,
CUDA 12.1이 내 환경에 맞다는 걸 이 사이트에서 따져보게 되었다. 그럼 12.1 CUDA가 설정된 docker 컨테이너를 파주면 된다.

2️⃣ Docker Image Pull 및 Docker 컨테이너 생성

CUDA 버전도 맞으면서 python 버전도 맞고 torch 버전까지 다 맞는 도커를 찾을 수도 있겠지만 생각보다 docker hub에 가면 괜찮은것도 있고, 실제로 pull해서 docker run하면 제대로 안되는 것도 많다. 그래서 CUDA 버전 정도만 일단 딱 맞는지 보고 그걸 까는걸 추천한다. python이나 torch는 버전이 맞으니까라는 생각으로 CUDA가 안 맞는게 굳이 그 도커이미지를 받아서 CUDA toolkit 버전을 추가로 올리려고 하는 행위는 하지 않는게 좋다. 내가 2일 정도 그 짓을 하다가 시간 다 보냈는데 CUDA를 toolkit만 따로 올리고 하는 걸 이 포스팅 보고 했는데 분명 CUDA toolkit를 올렸는데 flash-attn 설치를 하는데 온갖 CUDA관련 오류가 다 뜬다. 그냥 CUDA는 재조정이 답이 없다...

그러니 CUDA 버전을 확실히 Docker Image로 맞추자!!!

Docker Hub에서 Docker 이미지 찾기

Docker Hub 에서 CUDA 버전을 검색해서 찾으면 된다. 여기서 팁은 CUDA 12.1이면 검색어로 cuda121 이렇게 검색해야한다. 그 여러 도커 이미지를 pull, 그리고 이상해서 remove를 하다가 괜찮은 거 하나 발견했다.

도커 이미지 괜찮은거 같다.

뱌로 docker pull isseyice/boltz-cuda121-torch231 해서 도커 이미지 다운을 했다. 이게 bash, python, cuda 등등 제대로 세팅이 된 친구들을 크기도 좀 크고 설치가 좀 걸리는게 당연하다. 아래 그림처러 설치가 쫘라락 된다.

도커 이미지가 다운 되면, 아래처러 docker 컨테이너를 rag_becky로 하나 만들어주었다. 저 이미지로 컨테이너 만든거다.

제대로 만들어지면 이렇게 컨테이너가 이미지가 보일거다.

헤딩 컨테이너를 실행해서 새창에서 열어본다.

그리고 CUDA 버전이 내가 그렇게 바라던 12.1 이 맞는지 아래처럼 확인해보면, 정확히 12.1 의 CUDA가 깔끔하게 세팅된게 확인된다.

3️⃣ Python version Up/down (가상환경)

주로 요즘에 CUDA를 맞춰서 도커 이미지를 받으면 적절한 python 이 이미 들어가 있다. 그래서 내가 설치한 친구는 python이 몇인가 찍어보니 3.11.17 이었다...

웬만하면 그냥 넘어갈거 같은데,,, RAG 모델들의 많은 모델들이 faiss-gpu 라이브러리를 쓴다. 이 라이브러리가 python 3.10이 이하가 권장이고 3.11부터 error reporting이 많았다... 그래서 가상환경을 만들면서 이 python버전을 좀 잡아주고자 하였다.

다행이도 내가 다운 받은 도커 이미지에 conda가 설치되어있어서 가상환경을 쉽게 conda 명령어로 만들 수 있었다. 위에처럼 myenv 라는 가상환경을 만들었고, 바로 뒤에 파이썬 버전을 3.10으로 확실히 잡아주었다.

그러면 가상환경이 파지면서 온갖 관련 라이브러리가 설치되고, 위 화면처럼 마지막에 가상환경을 activate하라는 명령어가 보이면 제대로 가상환경이 파진거다.

그럼 가상환경을 activate 해보겠다.

제대로 활성화가되사 (base)(myenv)로 바뀐게 보일거다. 내 가상환경으로 들어왔다는 거다. 그리고 그 안에서 조정해준 python 버전을 다시 찍어보면

이렇게 가상환경으로 설정한 python 3.10 버전이 맞게 깔렸다.

4️⃣ 적절한 Torch 설치

지금까지 일단 상황은 여기까지 온거다.

✅ CUDA 12.1
✅ Python 3.10
❌ Torch 등 라이브러리

pip list로 설치된 라이브러리를 보면 뭐가 없다... 걍 이건 기둥만 있는데,, 여기에 이제 여러 패키지를 설치해줘야 한다.

우선적으로 만든 가상환경에 적절한 torch를 설치해야한다. torch의 경우 내가 가져오려는 논문 저자들이 requirement.txt에서 torch==2.4.0 torchvision==0.19.0 라고 명시를 했기에 pytorch 공식 홈에서 torch install 코드를 찾으면 된다.

저 공식홈에서 conda안에서 설치하는 코드를 해주면 되고, 내 CUDA0-12.1torch-2.4.0 에 해당하는 명령어를 찾아서 bash 터미널에 실행하면 된다.

그 결과 Torch와 torch 관련 라이브러리가 한참 설치된다.

원하는 버전이 정확히 설치되었다.

5️⃣ 최종 requirements.txt 설치

이제 거의 다왔다 여기까지 온거다.

✅ CUDA 12.1
✅ Python 3.10
✅ Torch 2.4.0
❌ Project 요구 추가 패키지 설치 (flash-attn, transformer 등 등 )

CUDA, Python, Torch 정도 맞춰 놨으면 기타 파일은 무리 없이 쭉 install 될거다.
내 프로젝트 디렉토리로 와서 git에서 반든 프로젝트 파일에 있는 requirements를 설치해줄건데, pip install -r requirements.txt 해서 쫙 설치해주면 된다.


4-5일정도 여러 삽질하느라 힘들었는데 내가 이 세팅을 내 로컬, 연구실 서버 다 해봤지만, 이 route가 가장 베스트다.

profile
배우고 공부하고 기록하는 것을 멈추지 않는다.

0개의 댓글