AI

[AI] 레시피 추천 모델 만들기 11 - 배포 준비하기

alsruds 2024. 11. 5. 02:53

생각해봤는데, 기존 백엔드 서버가 올라가 있던 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 은.. 다음 글로 찾아오겠다 🌼