TensorFlow 4

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%을 초과하는 걸 보실 수 있을 거에요. 그래서 병렬처리는 여러 쓰레드..

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..