Deep Learning

Deep Learning

Deep Learning Model Inference time 정확히 측정하는 방법

Deep learning model inference time을 정확히 측정하는 법 요즘 ChatGPT, DALL-E 등 딥러닝 모델들이 많은 주목을 받고, 이에 따라 사용량 또한 급증하면서 모델을 사용할 때의 적은 inference time이 더욱 중요해지고 있다. 사용자 경험을 조금이라도 향상시키기 위해서는 밀리초 단위를 줄이는 것도 매우 중요할 것이다. 그렇기 때문에 model의 inference time을 잘 측정해야 하는데, 이를 측정하기 위해서는 비동기 처리에 대한 이해가 필요하다. 동기 처리(Synchronous execution) vs 비동기 처리(Asynchronous execution) 동기와 비동기의 차이점을 간단히 설명하면 동기는 직렬적으로 작동하는 방식이고, 비동기는 병렬적으로 작..

Deep Learning

nn.CrossEntropyLoss() 파헤치기

손실 함수(loss function)는 데이터를 토대로 산출한 모델의 예측 값과 실제 값의 차이를 표현하는 지표이다. 다시 말하면, 손실 함수는 모델 성능의 '나쁨'을 나타내는 지표인 것이다. (하지만, loss가 낮다고 해서 무조건적으로 더 '좋은' 모델인 것은 아니다.) 머신러닝 모델은 일반적으로 크게 회귀(regression)와 분류(classification)로 나누어볼 수 있다. 손실 함수도 이에 따라 두 가지로 나뉜다. 회귀에서 사용하는 대표적인 loss function은 MAE, MSE, RMSE 가 있다. 분류에서 사용하는 대표적인 loss function은 BCE(Binary Cross-Entropy), CE(Cross-Entropy)가 있다. 본 포스팅에서는 분류에서 사용하는 대표적인 ..

Deep Learning

트랜스포머(Transformer)의 토큰 임베딩(Token Embedding) 파헤치기(feat. Tensor)

GPT-1 논문 리뷰를 하던 중 문득 "multi-layer transformer decoder를 사용할 때 input으로 사용할 $h_0$는 어떻게 만들어질까?"라는 궁금증이 들었다. GPT에서 multi-layer transformer decoder를 사용해서 Maksed self-attention을 하기 전에 token들의 context vector(U)와 token embedding matrix($W_e$)를 곱한 후 positional embedding matrix($W_p$)를 더해서 input으로 사용할 $h_0$를 만든다. 이때 각 matrix들의 차원은 어떤 식으로 구성될까? 이를 알기 위해서는 텐서(Tensor)의 개념을 짚고 넘어가야 한다. 딥 러닝을 하게 되면 다루게 되는 가장 기본..

Deep Learning

BERT의 [CLS]토큰은 어떻게 sentence의 정보를 담고 있을까?

BERT와 이로부터 파생된 다양한 언어 모델에서는 가장 첫 위치에 문장 공통 토큰인 [CLS]를 두어 해당 위치의 임베딩 결과를 대표 임베딩으로 사용한다. 예컨대, BERT-base 모델은 토큰의 길이가 512이고 각 토큰 위치에서의 임베딩 output은 768차원 벡터이므로 sentence input 하나에 대한 output 텐서의 shape은 512*768이다. 이 중 가장 앞에 위치한 [CLS] 토큰의 768차원 벡터를 해당 sentence의 대표 임베딩 결과로 사용한다. batch 내 각 문장에 대한 768 차원의 대표 임베딩 결과가 추출된 것이므로 최종 shape은 batch_size * 768 이 된다. 모든 sentence의 첫 번째 token은 언제나 [CLS](special classif..

Deep Learning

Transformer의 Multi-head Attention 파헤치기

*본 포스팅은 자연어처리 스터디를 진행하던 중 생겼던 궁금증을 해결한 후 내용 정리를 하고자 작성하였습니다. 1. Multi-head Attention이란? 트랜스포머 원 논문(Attention is all you need)에서는 한 번의 어텐션을 하는 것보다 여러 번의 어텐션을 병렬로 사용하는 것이 더 효과적이라고 한다. 그래서 d_model의 차원을 num_heads개로 나누어 d_model/num_heads의 차원을 가지는 Q, K, V에 대해서 num_heads개의 병렬 어텐션을 수행한다. 논문에서는 하이퍼파라미터인 num_heads의 값을 8로 지정하였고, 8개의 병렬 어텐션이 이루어지게 된다. 다시 말해 위에서 설명한 어텐션이 8개로 병렬로 이루어지게 되는데, 이때 각각의 어텐션 값 행렬을 어..

Deep Learning

Pytorch의 nn.Linear() 파헤치기

Pytorch를 이용해 짠 대부분의 소스코드들에는 nn.Linear() 함수가 거의 꼭 들어가 있는 것을 알 수 있을 것이다. 그만큼 자주 많이 사용되고 크게 어려운 개념은 아니지만, 그렇다고 대충 넘어가면 추후 코드를 이해함에 있어서 문제가 생길 수 있다. 따라서 nn.Linear()에 대해 차근차근 파헤쳐보자. nn.Linear()란? Pytorch에서 선형회귀 모델은 nn.Linear() 함수에 구현되어 있다. Pytorch 공식 문서에서 설명하는 nn.Linear() 함수는 다음과 같다. 입력 인자로 in_features와 out_features를 받고 이에 맞춰 반환한다. 예를 들어 내가 768차원 짜리를 64차원으로 만들고 싶으면 nn.Linear(768,64) 위와 같은 형태로 작성하면 된다..

Deep Learning

[트랜스포머를 활용한 자연어처리] Chapter1 - 트랜스포머 소개

이전 포스팅 : https://seungseop.tistory.com/20 [트랜스포머를 활용한 자연어처리] - Intro 본 포스팅은 아마존 자연어 처리 분야 베스트 셀러인 [트랜스포머를 활용한 자연어처리]를 기반으로 스터디를 진행하며 매 챕터마다 공부한 내용을 복습하기 위해 작성한다. 이 책의 구성을 하 seungseop.tistory.com 구글의 연구원들은 2017년 논문에서 시퀀스 모델링(sequence modeling)을 위한 새로운 신경망(neural network) 아키텍처를 제안했다. 트랜스포머(Transformer)란 이름의 이 아키텍처는 기계 번역 작업의 품질과 훈련 비용 면에서 RNN(Recurrent neural network)를 능가했다. 트랜스포머는 2023년 현재 가장 유명한..

Deep Learning

[트랜스포머를 활용한 자연어처리] - Intro

본 포스팅은 아마존 자연어 처리 분야 베스트 셀러인 [트랜스포머를 활용한 자연어처리]를 기반으로 스터디를 진행하며 매 챕터마다 공부한 내용을 복습하기 위해 작성한다. 이 책의 구성을 하나로 정리하자면 다음과 같다. 이 책은 최근 대세인 허깅 페이스(Hugging Face) 라이브러리를 활용하여 다양한 NLP 작업을 해결하는 방법을 소개한다. 허깅 페이스의 머신러닝 엔지니어들이 직접 쓴 책으로도 유명하고 의 저자 오렐리앙 제롱이 직접 추천사를 쓰고 크게 칭찬한 책이라고 한다. 자연어처리에 대해 아직 심도있는 학습이 부족한 상태라 이 책을 통해 자연어처리에 대한 견문을 많이 넓힐 것으로 기대한다. Reference http://www.yes24.com/Product/Goods/115633781 트랜스포머를 ..

seungseop
'Deep Learning' 카테고리의 글 목록