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 |