Search
✍🏻

[2_1] 시범서비스 문서화

상태
In progress
담당
이장후
이장후
마감일
요약
선행 태스크
선행 태스크 상태
관련 마일스톤
3 more properties
Author @이장후

프로젝트 개요

배경

NHN 다이퀘스트 CTO와의 QnA 를 인용합니다. 데모서비스 관련 맥락이 아니라 Aihub OCR 프로젝트의 전체적인 맥락을 파악하기 위해서는 다른 문서를 참고하세요.
프로젝트의 기한은?
12월 23일 까지로 하고 있습니다.
완료보고서도 12월 23일 까지 작성하셔야 합니다. 완료보고서에 AI 모델과 시범서비스 개발 내용이 들어가야 되는데 화면컷을 넣어서 완료보고서를 작성하셔야 합니다.
이것을 만들어야 하는 목적은?
시범서비스는 서비스를 하는 것이 아니고 서비스 할 수 있는 모습을 보여 주는 알파버젼 수준이면 됩니다. 즉 서비스 상에서 발생할 수 있는 버그들을 모두 해결한 수준이 아니라, 기능이 돌아가는 모습 정도가 보여 주는 수준이면 되며 시연때는 시나리오 데모할 것입니다. 디자인과 들어간 기능이 중요하고 실제 서비스를 위한 안정성 등은 덜 중요합니다.
목적이 서비스 개발해서 사용하게 하는 것이 아니고 이런 서비스가 가능하다는 것을 잘보여주는 것입니다. 그리고 서비스를 개발해서 NIA 등에 제공하는 것이 아니고 돌아가는 모습만 보여 주면 됩니다. 시범서비스는 AI 모델의 유효성 검증 과 같은 AI 모델은 별로 중요하지 않고 이것이 실제 시장에서 이렇게 잘 활용될 수 있다고 보여 주는 것이 중요합니다. 전에 한부사장님께서 물류쪽 OCR 관련 프로젝트를 하고 계신다고 하셨는데 이 프로젝트의 산출물을 이용하시고 일부를 추가하셔도 됩니다.
데모 서비스에는 두 개의 후보 모델군 중 어떤 모델을 사용해야 하는지?
원하시는 것 어느 것이나 하나만 선택해 사용하시면 됩니다. AI 모델은 유효성 증빙으로 검증이 끝나고 데모 서비스는 AI 모델의 정확도 등을 보지 않습니다.
정확도가 조금 떨어지더라도 속도가 빠른 모델을 선택하여 서비스 데모시 너무 느리지 않게 보여 주는 게 좋을 듯 합니다.
URL로 접속이 가능하기만 하면 되는 것인지?
자체 서버에 유지하면서 웹서비스라면 유알엘로 접속이 가능하기만 하면 됩니다. 1월 말에서 3월 초사이에 최종 평가가 이루어 지고 보통 8월까지는 추가 요구 등이 나와서 내년 8-9월 까지는 서버에 유지 하시기 바랍니다.
소스코드도 이전에 제공받았던 S3에 업로드해야 하는지?
2022년 과제 부터는 시범서비스를 소스코드로 제공하지 않아도 됩니다.

프로젝트 구조

서버 이름
ceberus
서버 주소
192.168.114.58
사용자 계정
jhlee
계정 비밀번호
zhrmsptskdls)(*&
작업 디렉토리
~/dev/aihub/demo/
이 애플리케이션은 다음 원칙을 지켰습니다.
1.
MMOCR 개발 환경에서 최소한의 코드 변경만으로도 데모서비스를 제공할 수 있도록 설계
2.
추후에 소스코드 및 컨테이너를 재활용하기 용이하도록 직관적으로 설계

빠른 실행

cd ~/dev/aihub/demo ./run.bash
Bash
복사

시스템 이해

NVIDIA-CUDA 레이어를 사용하지만, 실질적으로 GPU 를 사용해 추론하지는 않습니다. CPU 로 구동해도 충분히 빠릅니다. NVIDIA-CUDA 레이어를 사용하는 이유는 앞서 언급한 (1) MMOCR 개발 환경에서 최소한의 코드 변경만으로도 데모서비스를 제공하기 위함이며 (2) 많은 오픈소스 머신러닝 도구들이 GPU 환경에서 사용할 때 (실제로 GPU 를 사용하지 않더라도) 훨씬 안정적이기 때문입니다.

재현 스크립트

아무리 도커파일을 잘 준비해 놓는다고 하더라도 다양한 의존 패키지들의 버전이(심지어는 pip 패키지 관리자를 이용해 설치 가능한 버전까지도) 지속적으로 업데이트되기 때문에 Dockerfile을 이용해 다시 빌드되는 결과물도 시간이 지남에 따라 변화합니다. 혹자는 버전 피닝을 통해 해결할 수 있다고 보지만, Python 에서 버전 피닝은 좋은 생각이 아닙니다. pip 패키지 관리자에 등록되어 있는 오픈소스의 버전은 유동적입니다. 예를 들어, 오늘 pytorch 1.8 을 pip 제공자를 통해 다운로드받을 수 있다고 하더라도, 내일 해당 버전이 pip 패키지 관리자를 통해 다운가능함이 보장되지 않습니다. 또한, Ubuntu18.04 에서 다운로드받을 수 있는 패키지와 Windows 에서 다운로드받을 수 있는 패키지가 다르며, CPU 아키텍처에 따라서도 다운로드받을 수 있는 패키지가 다릅니다. 따라서 뚜렷한 목적성 없이 아래 내용대로 다시 Dockerfile 들을 빌드 하는 것은 권장하지 않습니다. 이미 만들어진 컨테이너를 사용하는 실행 스크립트만을 사용하기를 권장합니다. 아래 내용은 소스코드를 입맛에 맞게 바꿀 필요가 있을 때 전체적인 시스템 구성 이해를 돕기 위해 작성되었습니다.
1.
작업 디렉토리 생성
mkdir demo cd demo
Bash
복사
2.
백엔드 준비
mkdir engine/finance-model cd engine/finance-model git clone http://192.168.200.20/ailab/ocr/aihub-ocr-demo-backend-template.git . git checkout aihub-demo cd ../.. mkdir engine/transit-model cd engine/transit-model git clone http://192.168.200.20/ailab/ocr/aihub-ocr-demo-backend-template.git . git checkout aihub-demo cd ../..
Bash
복사
3.
백엔드 소스코드 수정
# 프로젝트 import inferencer DOMAIN = 'Finance' app = Flask(__name__) inferencer.load_model(DOMAIN)
Python
복사
finance-model/dockerfiles/publish/app.py
# 프로젝트 import inferencer DOMAIN = 'Transit' app = Flask(__name__) inferencer.load_model(DOMAIN)
Python
복사
transit-model/dockerfiles/publish/app.py
DEVELOP_SSH_PORT=11112 BACKEND_IMAGE_NAME=cognet9-aihub-ocr-demo-finance BACKEND_CONTAINER_NAME=cognet9-aihub-ocr-demo-finance
Bash
복사
finance-model/.env
DEVELOP_SSH_PORT=11113 BACKEND_IMAGE_NAME=cognet9-aihub-ocr-demo-transit BACKEND_CONTAINER_NAME=cognet9-aihub-ocr-demo-transit
Bash
복사
transit-model/.env
4.
백엔드 가중치파일 준비
a.
디렉토리 생성
mkdir -p engine/finance-model/dockerfiles/publish/pretrained mkdir -p engine/transit-model/dockerfiles/publish/pretrained
Bash
복사
b.
생성된 디렉토리에 pytorch weight 파일 추가
engine/finance-model/dockerfiles/publish/pretrained
engine/transit-model/dockerfiles/publish/pretrained
detection model 파일명
dbnet_resnet18_fpnc_20e_aihubfinance10of100_sparkling-cloud-104.pth
satrn_shallow_5e_aihubfinance10of100_pretrained_lrtune_peachy-sun-152.pth
recognition model 파일명
dbnet_resnet18_fpnc_2e_aihubtransit100of100_hopeful-leaf-117.pth
satrn_shallow_5e_aihubtransit1of100_pretrained_lrtune_desert-sunset-150.pth
sparkling-cloud-104, hopeful-leaf-117, peachy-sun-152, desert-sunset-150 은 실험 관리 도구 wandb (Weight and Bias) 실험의 이름입니다. https://wandb.ai/ai-solution-lab/mmocr 에서 확인할 수 있습니다. 필요하면 권한을 열어드릴 수 있습니다. dlwkdgn1@naver.com 으로 문의를 부탁드립니다. 아래 메일에 나타나 있는 것과 같이 wandb 팀 오픈은 개인 계정으로 이루어지며 사내용 라이선스가 별도로 없습니다.
이 값을 변경하고자 한다면 MMOCR 소스코드를 수정해야 합니다. Dockerfile 을 확인해보면 어떤 저장소를 clone 하고 어떤 브랜치를 사용하는지 확인할 수 있습니다. 해당 소스코드를 수정하세요.
5.
백엔드 구동
docker network create aihub-ocr-demo
Bash
복사
백엔드가 구동될 네트워크 추가
cd engine/finance-model docker-compose build && docker-compose up cd ../.. cd engine/transit-model docker-compose build && docker-compose up cd ../..
Bash
복사
백엔드 컨테이너 실행
6.
프론트엔드 준비
mkdir front-end cd front-end git clone http://192.168.200.20/ailab/ocr/aihub-ocr-demo-frontend.git . docker-compose build && docker-compose up
Bash
복사
프론트엔드 컨테이너 실행

프로젝트 스캐폴드

관련 기술문서