2021 오픈소스 도전(Backend.AI)

uchan·2021년 7월 23일
1

서론

작년에 오픈소스 컨트리뷰션에 떨어지고 이번에 다시 도전한다.
필자는 컴퓨터 비전, 딥러닝 분야에 관심이 많지만, 회사들이 원하는 개발자가 세상에 뒤쳐지지 않는 개발자가 되기 위해서 다양한 커리어를 쌓아보고자 한다.

최근 flask, pytorch를 이용하여 모델서빙하는 개인프로젝트를 해봤는데 백엔드의 기초적인 요청 및 반환하는 부분에서 막힘이 있었다. 그러나 flask document를 참고하면서 구현해 나갔고, 공부용 개인프로젝트였지만 이미지 분류 모델 서빙 웹페이지는 개발하며 벡엔드에 흥미를 붙였다.

이번 오픈소스 컨트리뷰션에서 Backend.AI 오픈소스 멘티들을 모집하는 공고를 보았다. 딥러닝을 처음 도전하는 사람에게 GPU환경을 설정하는 것은 매우 어렵다(필자도 anaconda, GPU 버전 텐서플로우, pytorch를 설치하는데 하루종일 걸렸었다). 개발자가 오직 딥러닝 구현에만 집중할 수 있도록 최적화 된 환경을 제공해준다는 점에 놀랐고, 현재 나에게 필요한 부분과 배워나갈 점이 많은 오픈소스라고 생각했다.

그럼 backend.ai 멘티를 신청하기에 앞서 코스3(Backend.AI 개발환경 설정하기)를 진행해보도록 하겠다.

개발환경 설정하기

step 1 : virtual environment 설정

우선 나는 벡엔드에 관심을 가졌기에 backend.ai-webserver 설정을 해보았다.
해당 소스는 https://github.com/lablup/backend.ai-webserver 를 참고했다.


우선 설치를 위해서 python3.9 이상과 Redis server 6.2 이상을 설치해야 된다고 한다
이를 위해 docker에 python3 가상환경 image(python:3.9.5-buster)을 이용해 컨테이너를 생성한다.
그리고 해당 컨테이너를 실행하여 기본적인 설치를 위해 apt-get update 해주고 redis-server를 install해준다.
그전에 redis-server가 뭐지??..

인터넷에 조사해보니 데이터베이스 + 캐시의 느낌인 것 같다. 과거 톰캣 + MYSQL를 통해 웹서버를 구현하였을 때 항상 DB에 접근하며 데이터를 요청,반환 했는데 redis-server는 캐시를 도입하여 서버로부터 DB가 아닌 중간에 캐시를 방문하여 있으면 바로 가져옴으로써 빠르게 read, write를 해주는거같다.

이제 모든 가상환경 설정이 끝났으므로 installation에 나온 명령어를 쳐주자
git clone부터 cp(복사) 까지...

step 2 : mode

그 다음 service mode에 대하여 설명을 하고 있다. 의미를 해석하자면 웹 UI에 대한 설정인거 같은데 필자는 option 2를 선택하여 설정을 하였다.

step 3 : configuration 설정

마지막으로 webserver.conf를 통해 configuration을 작성하면 되는 것 같다.

과거 톰캣을 사용하여 웹서버를 제작했을 때 기억을 더듬어 configuration을 작성해보겠다.
일단 IP와 port를 설정해주는 부분이 나온다. 기본값인 0.0.0.0과 port는 임의로 5000을 넣어주었다.
그후 redis server와 연결하는 부분이 존재하였다. 혹시 몰라 /etc/redis/redis.conf 파일을 참고하여 포트번호를 맞춰주었다.
이제 해당 서버를 python -m ai.backend.web.server를 통해 실행해보도록 하겠다.

error...

에러가 났다...
에러를 보면 주소를 배정할 수 없다는데...
에러 스택을 차근차근 쫓아가보니 redis부분에서 오류가 난 것을 확인하였다.
그래서 redis-server를 실행시켰더니...

정상적으로 redis-server가 작동되는 것을 확인했으니 이제 백그라운드로 redis-server를 실행시키고 backend.ai를 실행시켜보도록 하겠다.

success!

정상적으로 작동되는 것을 확인할 수 있었다.
그리고 webserver.conf파일에 저장된 속성들을 확인할 수 있었다(개인적으로 딥러닝에 관심을 가진 필자기에 resources 부분이 눈에 뛴다)

backend.ai-webserver를 설치하면서 과거 톰캣, flask 등을 사용했던 경험이 있었기 때문에 크게 어려움은 없었으나 redis-server를 공부하면서 아직 배워야 될 점이 많다고 생각했다.

또한 번외 코스 2. 머신러닝 모델 구현/동작 테스트/유저 테스트에 참여하기를 하며 내가 만든 모델을 직접 backend.ai 환경에서 학습시키고 추론하는 과정도 참여해보고 싶다.

+ 210730 결과


wow ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

작년에 떨어지고 엄청 좌절했었는데, 1년 동안 열심히 노력한 보람이 있다. 이번 Backend.ai 오픈소스의 컨트리뷰션 아카데미 멘티로서 배우는 과정에서는 체득할 때까지 공부하고, 적극적으로 참여하며, 모르고 어렵다고 해서 포기하지말자!

0개의 댓글