AI

[AI] 레시피 추천 모델 만들기 12 - Colab Migration

alsruds 2024. 11. 6. 04:25

colab.. 이걸 왜 무료로 쓰게 해주지?

하.. 내 미래 계획에 google 입사도 추가해야겠다..

 

colab 도 migration 이란 표현이 맞는 건가?

암튼 내가 migration 했으니 맞는 거겠지 뭐 *.*

 

모델에게 추천받는 시스템을 어떻게 배포하지? 고민하다 colab 에 정착

잠깐 빌려쓸게요 ~ 🌸

 

1. GPU 설정하기

런타임 - 런타임 유형 변경 - T4 GPU

 

2. import module

import os
import subprocess

 

3. GitHub Clone

# 클론할 디렉토리 설정
repo_dir = "/content/Babal-Server"

# 레포지토리가 이미 클론되어 있는지 확인
if not os.path.exists(repo_dir):
    # 클론 명령어 실행
    os.system("git clone -b feat/32-recbole https://github.com/Bab-Al/Babal-Server.git")
else:
    # 클론된 디렉토리로 이동하고 업데이트
    os.chdir(repo_dir)  # 클론된 디렉토리로 이동
    os.system("git pull origin feat/32-recbole")  # 업데이트 명령어 실행

 

4. Requirement 설치

# requirements.txt 설치
result = subprocess.run(["pip", "install", "-r", "/content/Babal-Server/requirements.txt"], capture_output=True, text=True)
print("stdout:", result.stdout)
print("stderr:", result.stderr)
print("Return code:", result.returncode)

# install.py 실행
result2 = subprocess.run(["python", "/content/Babal-Server/install.py"], capture_output=True, text=True)
print("stdout:", result2.stdout)
print("stderr:", result2.stderr)
print("Return code:", result2.returncode)

# recbole 설치
result3 = subprocess.run(["pip", "install", "recbole"], capture_output=True, text=True)
print("stdout:", result3.stdout)
print("stderr:", result3.stderr)
print("Return code:", result3.returncode)

 

잘 되는지 확인하기 위해 표준 출력도 같이 해주었다

 

5. 추천 코드 실행

# 실행 경로 설정
working_directory = "/content/Babal-Server"

# 추천 코드 실행
result = subprocess.run(
    ["python", "/content/Babal-Server/RecBole_Sys/RecBole-GNN/run_inference.py", "--model_path=/content/Babal-Server/RecBole_Sys/saved/NGCF-Oct-16-2024_19-14-27.pth"],
    cwd=working_directory,  # 실행 경로 지정
    capture_output=True,
    text=True
)

print("stdout:", result.stdout)
print("stderr:", result.stderr)
print("Return code:", result.returncode)

 

6. 결과

 

잘 나왔다 💓

 

Colab 에서 너무 .. 빨리 할 수 있었던 것 같아서 약간 현타가 오지만

그래도 SpringBoot 에서 삽질하며 해결한 덕분에 빨리 빨리 오류를 해결할 수 있었던 것 같다

 

이제 백엔드에서 URL 로 접속할 수 있도록 ngrok auth 로 설정하는 걸 해야겠다 !

코드도 좀 바꿔야겠지? ㅎ

ㄱㅏ봅시다