상세 컨텐츠

본문 제목

AWS 의 AMI rebuild with CPU only EC2 instance

데이터 과학

by Taeyoon.Kim.DS 2023. 10. 31. 01:20

본문

Issue:

이전에는 

torch = {version = "==1.13.1+cpu", index = "downloadpytorch"}
torchvision = {version = "==0.14.1+cpu", index = "downloadpytorch"}

파이토치 버전을 2가지로 사용하였다. gpu가 가능한 버전보다 용량이 더 작았기 때문에 instance가 다운로드하는 속도가 빠르기 때문이다. AWS EC2 instance가 cpu만 사용하고 있기 때문에 version을 cpu로 사용하였다. 그러다가 EC2 instance의 GPU버전을 사용해보기 위해서 pipfile를 변경해주었었고

torch = ">=1.7.0"
torchvision = ">=0.8.1"

변경된 pipfile로 pipenv lock을 통해서 pipfile.lock을 업데이트 해주었다. 그리고 나서는 --system을 통해서 AWS instance를 업데이트 해주었기 때문에 testing과 staging 모두에서 잘 작동하였다. 로컬머신에서도 GPU가 사용가능한 library가 있었기 때문에 문제없이 돌아갈 수 있었다. 그러다가 AWS EC2 instance 에서 AMI를 통해서 environment 전체를 rebuild하는 과정이 시작되자, EC2 instance는 올바른 cuda값을 찾지 못했고, 그래서 어쩔 수 없이 pipfile을 다시 1.13.1+cpu로 다운그레이드 해주었다. 그 결과 내 로컬에서도 gpu를 사용하지 못했으나, Docker container자체가 gpu를 사용하는 것으로 되어 있었기 때문에, 에러를 냈고 

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

코드를 import keras이전에 추가해주고나서야 에러를 피할 수 있었다. 그러나 여전히 내 로컬머신에서 cpu는 사용이 불가능하여, deploy된 부분에서는 cpu를 사용하고 local 에서는 gpu를 사용할 수 있도록 할 수 있는 방법을 찾아내야한다.

아, 본래의 문제는 원래 VGG19의 summary.txt와 test_summary.txt가 맞지 않아서 이 부분을 고치는데에서 시작했다.

# Old
Total params: 45,718,595
Trainable params: 25,694,211
Non-trainable params: 20,024,384

# New
Total params: 45718595 (174.40 MB)
Trainable params: 25694211 (98.02 MB)
Non-trainable params: 20024384 (76.39 MB)

Old에서의 summary_text와 New에서의 summary_text는 달랐다. 그니까 pipfile에서 pipfile.lock을 한후에 container를 rebuild하게되면, tensorflow 및 keras의 버전까지도 업그레이드 및 다운그레이드 되기 때문에 그 버전이 내뱉는 output값이 다를 수 있어서 저렇게 test code를 바꿔서 작성해줬어야 하는 것이다. 

 

그리고 나서는 특정 브랜치에서 너무 많은 커밋을 작성하고 BitBucket에 올려놔버려서 repo자체의 크기가 또 커지게 되었다. commit자체의 횟수를 줄여야 하는 것인지, commit자체를 조심스럽게해야하는 것인지 잘 모르겠다.

 

Reference image를 Image.show를 할 때 RGBA (Alpha, 투명도)를 JPEG에서는 나타낼 수 없기 떄문에 RGBA를 RGB로 변경해주는 것도 코드에 포함되었다.

 

대표이미지는 Sumamry.text의 차이로 해야겠다.

 

'데이터 과학' 카테고리의 다른 글

pipenv install --deploy와 --dev  (0) 2023.10.31
PaddleOCR Result값의 변경  (1) 2023.10.31
Cosine Similarity  (0) 2023.10.18
MLOps를 위한 인프라와 도구  (0) 2023.09.17
Pytorch 컨테이너 생성 후 사용  (0) 2023.08.31

관련글 더보기