개발자 블로그 83

vscode를 활용하여 원격 서버의 docker container에 접속하는 방법

최근에는 도커를 많이 사용하고 있습니다. Tensorflow도 사용하고 Pytorch도 사용하고 있는데, CUDA 버전도 달라야하고 하다보니 자연스럽게 도커를 사용하게 되었습니다. IDE는 vscode를 사용하고 있었는데, 찾아보니 vscode는 remote server에서 돌아가고 있는 docker container에도 접속해서 개발을 할 수 있는 환경을 제공하고 있더군요. 그래서 오늘은 vscode를 활용해서 remote server의 docker container에 접속해서 개발환경을 세팅하는 방법에 대해서 정리해보고자 합니다. 먼저 내 컴퓨터에 vscode와 docker가 설치되어 있어야하고, remote server에도 docker가 설치되어 있어야 합니다. 내 컴퓨터에는 왜 docker가 설치..

ETC/VScode 2020.05.24

nginx와 gunicorn을 활용한 multi gpu 환경에서의 딥러닝 서비스

https://seokhyun2.tistory.com/44 딥러닝 모델 서빙과 병렬처리 저도 회사에서 딥러닝 모델 서빙을 하고 있는데, 서빙을 하다보니까 제일 처음에 부딪히는 문제가 병렬처리였습니다. 그래서 이번 포스팅에서는 딥러닝 모델을 서빙할 때 어떻게 병렬처리를 해줘야 할 지 이야기를.. seokhyun2.tistory.com 위의 글에서, 파이썬에서의 병렬처리와 딥러닝 모델 서빙을 하는 방법에 대해서 다뤘습니다. flask와 gunicorn을 활용하면 쉽게 멀티프로세싱을 활용할 수 있다고 소개해드렸는데, 이번에는 nginx까지 같이 활용하여 multi gpu 환경에서 딥러닝 모델을 서비스하는 방법을 소개해드리겠습니다. nginx는 비동기 이벤트 기반의 웹서버로 reverse proxy 기능을 제공..

BERT 인퍼런스 속도 비교 pytorch vs tensorflow

최근에는 pytorch 사용자도 많이 늘고 소스코드도 많이 최적화되서 pytorch와 tensorflow를 비교해보면 좋을 듯 해서 pytorch와 tensorflow에서 BERT 인퍼런스 속도를 비교해보려고 합니다. 먼저 pytorch와 tensorflow는 둘 다 딥러닝 프레임워크로, tensorflow는 구글에서 pytorch는 페이스 북에서 개발하고 있습니다. 제가 처음 딥러닝 공부를 시작했던 2016년에는 tensorflow가 많이 압도적이였는데, 학계에서 많이 활용되면서 최근엔 pytorch 사용자가 많이 증가하고 있습니다. 자연어처리에서 BERT는 모르면 간첩이라고 할 수 있을 정도로 유명한 모델이죠. 구글에서 2018년 10월에 공개한 Transformer 기반의 거대한 언어모델입니다. T..

딥러닝 모델 서빙과 병렬처리

저도 회사에서 딥러닝 모델 서빙을 하고 있는데, 서빙을 하다보니까 제일 처음에 부딪히는 문제가 병렬처리였습니다. 그래서 이번 포스팅에서는 딥러닝 모델을 서빙할 때 어떻게 병렬처리를 해줘야 할 지 이야기를 해보려고 합니다. 먼저 저희는 쓰레드와 프로세스라는 개념을 살짝 정리하고 가야해요. 먼저 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램이라고 정의되고 쓰레드는 프로세스 내에서 실행되는 흐름의 단위로 정의가 됩니다. 그래서 쓰레드는 프로세스에 포함이 되게 되죠. 리눅스에서 top 명령어를 실행하면, 현재 실행 중인 프로세스의 리스트를 볼 수 있어요. 만약 해당 프로세스가 여러개의 쓰레드를 사용하고 있으면, cpu가 100%을 초과하는 걸 보실 수 있을 거에요. 그래서 병렬처리는 여러 쓰레드..

글또 다짐글

블로그를 좀 더 열심히 관리해보고자, 글또라는 모임을 시작하게 되었습니다. 글또 모임은 2주에 한번 블로그에 공부한 내용 혹은 업무하면서 생겼던 일을 작성하고 공유한 뒤에 서로의 글을 읽어보고 또 코멘트까지 필수로 하는 모임입니다. 블로그를 해보고자 했던건 오래되었는데, 열심히 관리를 잘 안해오다가 이런 모임을 통해서 다른 사람들과 소통하며 블로그를 써보면 피드백도 있고 더욱 동기부여가 될 것 같아서 참가하게 되었습니다. 글또 다짐글을 쓰면서, 2020년 개인적인 목표도 함께 써볼까 합니다. 사실, 얼마 전부터 깃헙계정에 1일 1커밋을 하고 있습니다. 알고리즘을 하루에 한 문제씩 풀어서 커밋을 하고 있는데, 2020년에는 매일 잔디를 심는 것을 목표로 하고있으며 1월 2월에 단 하루도 빠지지 않고 잔디를..

나의 이야기 2020.03.01

pytorch와 flask를 활용한 딥러닝 모델 서빙하기

tensorflow 2.0을 활용해서 어떻게 서빙하는지 다뤄봤었는데, 요즘엔 pytorch를 사용하시는 분들도 많으니까 이번엔 pytorch를 서빙하는 방법에 대해서 설명드리려고 합니다! 이전 글들과 똑같이 mnist를 준비했고, 학습은 pytorch 공식 예제 참조하여 학습을 수행하였습니다. 아래 링크 참조하셔서 학습 진행해보시길 추천드려요! https://github.com/pytorch/examples/tree/master/mnist pytorch/examples A set of examples around pytorch in Vision, Text, Reinforcement Learning, etc. - pytorch/examples github.com 이전 포스팅에서 tensorflow 예제를 ..

vscode를 활용하여 원격 서버에 연결하기

회사에서 서버를 사용할 때, putty를 활용하는데 IDE를 사용하고 싶다는 생각이 문득 들어서 찾아보니 vscode는 community 버전을 활용해도 서버랑 원격 접속을 할 수 있더군요! 그래서 오늘은 윈도우에서 리눅스 서버로 접속할 때, vscode를 활용해서 IDE를 활용하여 서버에서 코딩을 할 수 있는 환경을 구성해보도록 하겠습니다. vscode는 아래의 주소에서 클릭하여 설치하시면 됩니다. https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and available on your favorite platform - Linux, macOS, ..

ETC/VScode 2020.01.30

Tensorflow 2.0과 flask를 활용한 딥러닝 모델 서빙하기

이전 포스팅에선 Tensorflow에서 제공하는 tensorflow-serving 모듈을 활용하여 딥러닝 모델을 서빙해보았습니다. 오늘은 flask를 활용하여 서빙을 해보도록 하겠습니다. 지난 포스팅이 궁금하시면 아래를 참조하시기 바랍니다. https://seokhyun2.tistory.com/39 그 전에, 어떤 차이 점이 있는지 알고 넘어가면 좋겠죠? tensorflow-serving 모듈을 활용할 경우에는 전처리가 불가능하다는 것이 제일 큰 문제점입니다. mnist 데이터를 학습할 때, 불러온 픽셀 데이터를 0~1사이의 값으로 변환하기 위하여 255로 나눠서 학습하죠. 그래서 서버에 요청하기 전에 255를 나눠주어야만 합니다. 특히, 자연어 처리의 경우에는 텍스트 문장이 들어오면 해당 문장을 형태소..

Tensorflow 2.0을 활용한 딥러닝 모델 서빙하기

Tensorflow 2.0에서는 케라스와 통합하고 eager execution (즉시실행)을 지원하게 되면서 훨씬 쉬워졌습니다. 딥러닝을 서비스에 실제로 적용하는 사례가 점점 많아짐에 따라, 서빙을 잘하는 방법에 대해서도 많은 시도를 하고 있습니다. 그래서 딥러닝 모델 서빙에 대하여 제일 쉬운 방법부터 시작해서 하나하나 소개해보려고 합니다. 오늘 소개드리는 방법은 텐서플로우에서 제공하는 텐서플로우 서빙과 도커를 활용하는 방법입니다. 서빙을 하려면 모델부터 있어야겠죠? 아래의 소스코드를 활용해서 간단한 모델을 한번 만들어보도록 하겠습니다. """ example of train mnist dataset with Tensorflow 2.0 """ import tensorflow as tf """ load mn..

[Python] 소스코드 정적 분석, pylint, flake8

소스코드의 정적 분석은 실행하지 않고 소스코드에 대해서 분석을 하는 것을 뜻합니다. 정적 분석의 반대는 동적 분석이며, 동적 분석은 실행 결과 디버깅부터 테스트 소스 커버리지 확인 등등이 다 포함이 됩니다. 정적 분석은 툴을 이용하거나 소스코드 리뷰를 하는 방식이 있는데요. Python 소스 코드를 정적 분석을 해주는 툴은 pylint와 flake8이 많이 사용됩니다. 이 두가지의 툴은 둘 다 pip를 활용하여 쉽게 설치할 수 있습니다. pip install pylint pip install flake8 이렇게 설치하고 사용하는 방법 또한 매우 쉽습니다. python -m pylint hello_world.py python -m flake8 hello_world.py pylint를 실행하면 아래와 같이 ..

python 2020.01.13