Search

[2] 시연이 가능한 데모를 제작한다.

상태
In progress
담당
마감일
2022/12/05 → 2022/12/08
요약
선행 태스크
선행 태스크 상태
후행 태스크
관련 마일스톤
2 more properties
뼈대 구축 완료
모델만 바꾸면 됨
작은 데스크톱 있음. GPU 1080 *2 임. IP 와 비밀번호 여쭤볼 것.
구성
화면 → 1개 도커 컨테이너
모델
금융 모델 → 1개 도커 컨테이너
물류 모델 → 1개 도커 컨테이너
컴퓨팅 리소스의 분배 이슈
하나의 GPU 를 여러 컨테이너가 나눠서 사용하는 것은 불가능하다.
CPU 를 사용하거나, 두 개의 GPU 각각에 모델을 업로드해야할 것 같다.
도커 컨테이너 사이의 통신 이슈
화면을 통해 생성된 이미지파일을 어떻게 모델에 전달할 것인가. 또한, 모델의 추론 결과를 어떻게 다시 화면에 그려줄 것인가.
컨테이너 사이의 통신 방법
REST API
파일을 주고받도록 하기
이것이 훨씬 더 쉬운 방법일 수 있다. 왜냐하면 API 로 이미지를 주고받으면 인코딩과 디코딩 이슈들이 있기 때문이다.
flask 는 간단한데 로우레벨임.
fastapi 는 조금 더 복잡한데 정교함.
포트포워딩 및 네트워크 이슈
현호 선임님께 포트포워딩 관련 문의드리기

@12/14/2022, 6:11:00 PM → nvidia-driver 과 cuda 관련 이슈

overload 서버에서 nvidia-smi 가 잡히지 않음.
Failed to initialize NVML: Driver/library version mismatch
Plain Text
복사
그런데 또 이상하게 개발 컨테이너에 접속하면 nvidia-smi 를 명령어가 정상적으로 실행됨.
cerberus 서버에서 nvidia-smi 가 잡히지 않음.
원래 잡혔었는데, overload 서버에서 개발된 MMOCR 런타임이 CUDA 11.x 를 사용함. 하지만 nvidia-driver 의 버전이 CUDA 11.x 를 실행할 수 없는 버전이었기 때문에 업데이트를 시도함.
이 문제를 해결하기 위해 다음 명령어를 수행함
overload
sudo apt-get remove --purge nvidia-* sudo apt-get autoremove sudo apt-get update sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-driver-470 sudo apt update sudo apt upgrade
Bash
복사
이 과정을 마쳤음에도 nvidia-smi 가 잡히지 않는 상황. 물론 컨테이너에서는 잡힘. 재부팅을 안해서 그런가… 하지만 재부팅하기 두렵다. 되던것도 안될까봐.
재부팅이 해결함
cerberus
sudo apt-get remove --purge nvidia-* sudo apt-get autoremove sudo apt-get update
Bash
복사
sudo apt-get update 에서 오류가 발생함. 관련 문서도 찾아보고 따라해보고 했으나 여전히 안되는 상황.
재부팅이 해결함

@12/15/2022 → 네트워크 관련 이슈

wget 192.168.114.58:5101/api/inference/image
Plain Text
복사
--2022-12-15 10:48:50-- http://192.168.114.58:5101/api/inference/image Connecting to 192.168.114.58:5101... connected. HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers. Retrying. --2022-12-15 10:48:51-- (try: 2) http://192.168.114.58:5101/api/inference/image Connecting to 192.168.114.58:5101... connected. HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers. Retrying.
Plain Text
복사
wget 192.168.114.58:5001/api/inference/image
Plain Text
복사
--2022-12-15 10:49:06-- http://192.168.114.58:5001/api/inference/image Connecting to 192.168.114.58:5001... failed: Connection refused.
Plain Text
복사
wget cognet9-aihub-ocr-demo-finance:5001/api/inference/image
Plain Text
복사
--2022-12-15 10:49:25-- http://cognet9-aihub-ocr-demo-finance:5001/api/inference/image Resolving cognet9-aihub-ocr-demo-finance (cognet9-aihub-ocr-demo-finance)... failed: Temporary failure in name resolution. wget: unable to resolve host address ‘cognet9-aihub-ocr-demo-finance’
Plain Text
복사
wget cognet9-aihub-ocr-demo-finance:5101/api/inference/image
Plain Text
복사
--2022-12-15 10:49:42-- http://cognet9-aihub-ocr-demo-finance:5101/api/inference/image Resolving cognet9-aihub-ocr-demo-finance (cognet9-aihub-ocr-demo-finance)... failed: Temporary failure in name resolution. wget: unable to resolve host address ‘cognet9-aihub-ocr-demo-finance’
Plain Text
복사
플라스크의 고질적 이슈 중 하나로, 0.0.0.0 을 args 로 직접적으로 꽂아 주어야 한다고 한다. 이거 개선하니까 바로 돼버렸다.
동일한 머신 내 도커 컨테이너간 통신을 위해 컨테이너 이름을 도메인네임으로 사용할 수 있다.

@12/16/2022, 4:29:00 PM → 한글 이슈

response.text 가 가지고 있는 내용은 다음과 같음.
'\ufeff{\n "rec_texts": [\n "ARTS",\n "LIBERAL",\n "1500",\n "EMNINOLOGY",\n "no"\n ],\n "rec_scores": [\n 0.9999407082796097,\n 0.9986346704619271,\n 0.9999999701976776,\n 0.8275723248720169,\n 0.8801688849925995\n ],\n "det_polygons": [\n [\n 448.959381263773,\n 216.01643996465774,\n 453.49763313631144,\n 191.92315499441966,\n 504.45881642529775,\n 201.52676595052085,\n 499.92056455275934,\n 225.62005092075893\n ],\n [\n 333.9916030643403,\n 187.83999488467262,\n 339.02328640021335,\n 165.99015299479169,\n 445.1251335172661,\n 190.43497721354169,\n 440.09345018139305,\n 212.28481910342262\n ],\n [\n 422.6208450305936,\n 169.3807838076637,\n 426.82474329519886,\n 154.66380324590773,\n 449.843345235723,\n 161.24206077938987,\n 445.6394469711178,\n 175.95904134114585\n ],\n [\n 369.07652022869,\n 142.23646763392858,\n 488.5169729932484,\n 86.4471435546875,\n 497.94523704168233,\n 106.64168294270834,\n 378.504784277124,\n 162.4310070219494\n ],\n [\n 430.01506419085246,\n 92.3619123186384,\n 433.7284925479417,\n 88.64762660435268,\n 436.4516733431405,\n 91.3714361281622,\n 432.73824498605126,\n 95.08572184244792\n ]\n ],\n "det_scores": [\n 0.9012408256530762,\n 0.9231875538825989,\n 0.791820764541626,\n 0.7743006944656372,\n 0.39850297570228577\n ]\n}'
Bash
복사
다음과 같은 response 를 encoding 해야함.
이것을 json 포맷으로 바꿔야 함. 하지만 다음 api 를 사용 불가능함.
response.json()
Bash
복사

오케이 @12/16/2022, 10:07:00 PM