분류 전체보기 29

[모델 경량화] [1] Quantization 이란?

1. 모델 경량화와 Quantization: 심층 신경망 최적화를 위한 전략  최근 인공지능(AI)과 딥러닝 기술이 폭발적으로 발전하면서, 높은 정확도를 자랑하는 대규모 신경망 모델들이(ChatGPT, DeepSeek 등) 각광받고 있습니다. 그러나 이러한 모델들은 높은 메모리 사용량, 전력 소모 그리고 긴 추론 지연(latency) 등의 문제점을 내포하고 있습니다. 이에 대한 해결책으로 모델 경량화 기술이 연구되고 있으며, 그 중 Quantization(양자화)는 대표적인 기법으로 주목받고 있습니다.  2022년 ChatGPT의 등장은 인공지능 기술이 실제로 상용화되어 사람들에게 널리 알려지게 된 전환점 되었으며, 이후 대중의 일상에도 인공지능 기술이 더욱 가까워지고 있습니다. 하지만 인공지능이 우리 ..

[Transformer] Transformer 코드 리뷰

Positional Encodingclass PositionalEncoding(nn.Module): """ Transformer는 입력 토큰의 순서를 고려하기 위해 위치 정보를 부가한다. 이를 위해 논문에서는 사인/코사인 함수를 이용한 Positional Encoding을 사용. PE(pos, 2i) = sin( pos / (10000^(2i/d_model)) ) PE(pos, 2i+1) = cos( pos / (10000^(2i/d_model)) ) """ def __init__(self, d_model, max_len=5000): super(PositionalEncoding, self).__init__() # pos : 0부터 max_..

[선형대수] 제2장: 선형결합, 생성, 기저 벡터

수학은 천재가 아닌, 적은 양의 상상의 자유를 필요로 한다. 덧붙여, 더 많은 양에서의 그것을 우린 광기라 부른다.- 수학자 앵거스 K. 로저스 -    1. 좌표를 스칼라로 보는 새로운 관점벡터를 (예를 들어) (3, –2)라는 숫자 쌍으로 표현할 때, 보통은 단순히 x축 방향으로 3, y축 방향으로 –2만큼 이동하는 점이라고 해석함. 그런데 여기서는 각 숫자를 스칼라로서 바라봄.î (아이햇): 오른쪽을 향하고 길이가 1인 특별한 벡터ĵ (제이햇): 위쪽을 향하고 길이가 1인 특별한 벡터이제 (3, –2)는3이라는 스칼라가 î를 늘려 3배로 만들고,–2라는 스칼라가 ĵ를 뒤집고 2배로 만들며,두 벡터를 더한 결과임을 알 수 있음.즉, (3, –2)는 3·î + (–2)·ĵ로 표현됨.이러한 해..

[선형대수] 제1장: 벡터란 무엇인가?

숫자를 좌표로써 도입한 것은 기존의 틀을 깬 혁명이었다.- 수학자 헤르만 바일 -    1. 벡터의 근본적 개념선형대수의 모든 것의 뿌리이자 기본 주춧돌은 벡터임. 벡터는 여러 분야에서 서로 다른 관점으로 해석되는데, 대표적으로 세 가지 관점이 있음:물리학적 관점:벡터는 공간에서 특정한 방향과 크기를 가진 화살표로 이해됨.화살표의 길이는 크기를 나타내며, 방향은 그 화살표가 가리키는 방향을 나타냄.중요한 점은, 같은 크기와 방향을 가지면 화살표의 위치(평행 이동)는 달라도 동일한 벡터로 봄.컴퓨터 과학적 관점:벡터는 순서가 정해진 숫자들의 나열임.예를 들어, 집의 데이터를 분석할 때 집의 평수와 가격이라는 두 가지 특성만 고려한다면, 각 집은 [평수, 가격]이라는 2차원 벡터로 표현됨.여기서 순서가 중요..

[Transformer] Transformer의 다양한 Attention

Transformer는 자연어 처리(NLP)에서 놀라운 성능을 보여주는 대표적인 모델 구조로, 이 안에는 여러 종류의 Attention 메커니즘이 내재되어 있음. 특히 Multi-Head Attention을 중심으로 Encoder와 Decoder 각각의 역할에 맞춰 세분화된 Attention을 사용함. 그렇다면 왜 Transformer에는 이렇게 다양한 Attention이 필요하며, 각각의 Attention은 어떤 방식으로 작동하는 걸까? 그리고 어떤 점에서 미래 단어를 마스킹해야만 할까? 이 글에서는 이러한 질문들에 대해 깊이 있는 설명을 해보도록 하겠음. 왜 Transformer에는 다양한 Attention이 쓰여야만 했을까?  Transformer 이전의 전통적인 RNN(Recurrent Neura..

[Transformer] Attention이 뭐임?

Attention1. Attention 그게 뭐임?Attention은 네트워크 아키텍처의 하나의 컴포넌트임. 그리고 이건 이키텍처에서 관계성, 유사도를 가중치를 부여하여 관리하는 역할을 함.옛날엔 번역기 같은 NLP 모델에서 RNN을 썼음. 근데 RNN은 문장이 길어질수록 기울기 소실 + 장기 의존성 문제같은 기억력이 안좋은 문제점이 생김. 그래서 "중요한 단어에 집중해서 학습하면 어떨까?" 라는 아이디어가 나옴 → 이게 Attention의 시작임.그래서 Attention이 뭐냐? 문장 안에서 어떤 단어가 중요한지를 판단해서, 그 단어에 가중치(weight)를 줌. 그 결과, 긴 문장도 정보 손실 없이 학습 가능하고, 병렬처리까지 가능해짐.2. 기존 RNN의 문제점: 왜 Attention이 필요했음?(1..

카테고리 없음 2025.01.31

[Transformer] Transformer 왜 개발함?

Motivation of TransformerTransformer는 왜 개발됨?기존 LM(Language Model)에서 발생하는 문제점을 해결하기 위해서 고안.기존 RNN 기반 모델에서는 인코더에서 계산한 결과가 고정된 길이의 Context Vector로 압축되어 정보를 담아내다보니 정호가한 정보를 담아내지 못함. 이러한 문제를 해결하기 위해서 Transformer 개발함.또한 RNN 기반의 LLM(Large Language Model)은 Long term dependency 문제가 있음. Long term dependency는 긴 문장에서의 각 토큰 간의 상호 의존성에 문제가 있음. 문장이 길 경우 앞쪽의 단어들은 잊어버리는 문제점이 있었음.즉, RNN 기반의 언어 모델에는 두 가지 한계가 있음. 1..

[Transformer] Sinusoidal Positional Encoding

한 번 할 때 제대로 이해해놓기 위한 정리. 다음에 가물가물할 때 다시 볼 수 있도록.   class PositionalEncoding(nn.Module): def __init__(self, d_model, max_len=5000): super(PositionalEncoding, self).__init__() pe = torch.zeros(max_len, d_model) position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1) div_term = torch.exp( torch.arange(0, d_model, 2).float() * (-math.log(10000.0) / d_model)..

Git, Github 연결 및 사용법

지역 저장소(local)와 원격 저장소(remote) 연결하기 $ git remote add origin [원격저장소 주소] 원격 저장소에 orgin을 추가, 즉 local과 remote를 연결 $ git remote -v local과 remote가 잘 연결되었는지 확인 원격 저장소 Push & Pull $ git push -u origin master 지역 저장소의 브랜치를 origin(원격 저장소의 master 브랜치)로 푸시하라는 명령어 이 명령어는 초기에 한 번만 진행해 주면 된다 $ git commit -am "커밋메세지" -a : add 명령어를 쓰지 않아도, 한 번에 commit 한다 -m : commit 메세지를 작성 $ git push 위에서 $ git push -u origin mast..

etc 2022.07.14

Git & Branch

$ git branch 현재 branch list 보기 $ git branch [브랜치 이름] 새로운 branch 생성 * : 현재 작업중인 브랜치를 의미 log를 보면 HEAD가 master를 가리키고 있음 (현재 작업중인 디렉터리는 master) master, apple 두 개의 branch가 있는 것을 볼 수 있음 google, apple 브랜치는 현재 'message3'의 commit에서 만들어 졌다 따라서 master, google, apple 브랜치들은, 모두 최신 commit이 'message3'이다 $ git log --oneline 한 줄에 한 commit log만 보여줌 $ git checkout apple 현재 branch에서 다른 branch로 이동할 때 'checkout' 명령어를..

etc 2022.07.04