생각해봤는데, 기존 백엔드 서버가 올라가 있던 aws ec2 에 같이 배포를 하게 된다면
1. requirements.txt 파일이 필요하다
2. RecBole 폴더 내에서가 아니라 배포했을 때 위치 기준에서 코드를 짜야 한다
3. deploy.yml 파일을 수정해서 파이썬 환경을 설정해야 할까? (ex. python3.9, venv)
🐧 일단 하나씩 해보자
1️⃣ requirements.txt 파일 만들기
파일 만드는 것 자체는 쉽다
pip freeze > requirements.txt
근데 나의 환경에 맞으려면 (cuda, nvidia driver, pytorch)
torch 가 정확히 2.4.0+cu121 이어야 한다
그런데 requirements.txt 에서의 '+' 를 pip 가 인식하지 못한다고 한다
사실 오류나서 알았다
ERROR: Could not find a version that satisfies the requirement torch==2.4.0+cu121 (from versions: 1.7.1, 1.8.0, 1.8.1, 1.9.0, 1.9.1, 1.10.0, 1.10.1, 1.10.2, 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.4.0, 2.4.1, 2.5.0, 2.5.1) ERROR: No matching distribution found for torch==2.4.0+cu121 |
💡 그래서 torch 와 친구들은 설치 스크립트를 따로 만들어주었다
import os
# PyTorch와 관련 패키지 설치
os.system('pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu121')
os.system('pip install torch_scatter -f https://pytorch-geometric.com/whl/torch-2.4.0+cu121.html')
os.system('pip install torch_sparse -f https://pytorch-geometric.com/whl/torch-2.4.0+cu121.html')
os.system('pip install torch_cluster -f https://pytorch-geometric.com/whl/torch-2.4.0+cu121.html')
os.system('pip install torch_spline_conv -f https://pytorch-geometric.com/whl/torch-2.4.0+cu121.html')
os.system('pip install torch-geometric -f https://pytorch-geometric.com/whl/torch-2.4.0+cu121.html')
requirements.txt 설치해주면서 같이 실행해주면 되겠지 ! 🌿
2️⃣ 배포 위치 기준에서 모델 돌리기
다른 건 코드를 실행하는 폴더 기준으로 경로를 바꿔주니까 잘 됐는데,
RecBole 폴더에서 나와서 모델에게 추천을 받으려니까 이런 오류가 났다
ValueError: Neither [dataset/Food] exists in the device nor [Food] a known dataset name. |
너 왜... 데이터셋을 못찾니? Food 가 떡하니 내 프로젝트에 존재하는데 ..
분명 경로 문제인데 .. 돌아가는 코드도 다 찾아보고 삽질하다가 코드를 실행하는 루트 경로에 dataset/Food 로 존재해야 한다는 사실을 알았다 🙏
코드를 실행하는 폴더 기준 최상위에 있어야 하나보다 !! 다들 꼭 .. 헤매지 말길 ..
3️⃣ Colab 으로 옮기기
다시 생각해보니까, 백엔드 서버에는 GPU 설정이 없다. 🤯
CUDA 나 Nvidia Driver 설정은 어찌저찌 해줄 수 있지 않을까 싶었는데 aws ec2 에서는 gpu 를 포함하는 인스턴스로 써야한다나.. 너무 복잡하다
같이 프로젝트 하는 다른 친구한테 어떻게 했냐고 물어봤다
프로젝트 크기가 크지 않기도 하고, 계속 운영할 서비스가 아니기도 해서 간단하게 코랩 배포 환경을 빌리기로 했다
근데 나 AI 모델 실습 다 코랩에서 했는데 왜 이때까지 로컬에서 돌린거지 .. ? ;;
괜히 했나 싶었는데, 어차피 다 짜야할 코드기도 했고 .. 내 깃허브의 recbole 브랜치를 클론해서 쓰기로 결정
recbole 브랜치를 메인에 머지했다가 괜히 배포에 오류 생길까봐 걱정했는데 오히려 다행이다
Colab Migration 은.. 다음 글로 찾아오겠다 🌼
'AI' 카테고리의 다른 글
[AI] 레시피 추천 모델 만들기 12 - Colab Migration (5) | 2024.11.06 |
---|---|
[AI/Git] 레시피 추천 모델 만들기 10 - clone 한 레포 git push 부터 대용량 파일 push 까지 (4) | 2024.11.04 |
[AI] 레시피 추천 모델 만들기 9 - Inference (3) 정리 (2) | 2024.10.31 |
[AI] 레시피 추천 모델 만들기 8 - Inference (2) user 기반, item 기반 추천 받기 (3) | 2024.10.30 |
[AI] 레시피 추천 모델 만들기 7 - Inference (1) 계획 수정.. (또획 또정) (5) | 2024.10.29 |