본문 바로가기

반응형

전체 글

트랜스포머의 핵심, 어텐션 연산의 기본을 배워보자 어텐션을 구성하는 6가지 매트릭스우리가 트랜스포머 블록을 구성하거나, 어탠션을 이론적으로 공부할 때 가장 먼저 만나게 되는 것은 Q, K, V라는 알파벳이다. 각각 Query, Key, Value이다. 실제론 W_q, W_k, W_v라는 학습되는 가중치와, 실시간으로 사용되는 Q, K, V 이렇게 6개가 어탠션을 구성한다. 학습되는 가중치에 대한 설명 없이 Q, K, V 만 가지고 설명을 하면 이해를 못하는 사람이 태반이다. 사실 어탠션이 획기적이고 잘 동작하는, 이미 '정립'이 된 개념이지만, 의외로 매커니즘이 대단히 추상적이기 때문이다. 나는 맛있는 사과를 이라는 문장이 입력으로 들어왔다고 하자. 그리고 공백을 기준으로 각 단어가 토큰이 된다고 하자. 그럼 "나는" "맛있는" "사과를"이 각각의 임베.. 더보기
대표적인 CNN 모델들을 정리해보자 (LeNet, ResNet 등 CNN의 계보) LeNet (1990/1998)LeNet은 최초의 합성곱 신경망(CNN) 중 하나이다. 합성곱 신경망 자체는 이전에도 이론적으로 제시된 바가 있으나 실제로 완성된 모델로 구현된 것은 이것이 최초라고 본다. 그래서 그냥 개념적인 제시가 아니라 입력 사이즈, 층의 개수, 층마다의 채널, 층 사이의 풀링 등 세부적인 구조를 제시하였다. 즉 그냥 합성곱 신경망, 필터의 이론적 개념 등은 1960~1980년대 동안 꾸준히 발표가 되어 왔으나 이를 모두 조합하여 너무나 잘 동작하는 모델을 만들어낸 것이 LeNet이라는 것이다. 이로써 얀 르쿤이라는 컴퓨터 과학자는 레전드로 발돋움 한다. 마치 스마트폰에 사용되는 여러가지 기술은 분산적으로 존재하였으나 이를 모두 예쁘게 조립하여 아이폰이라는 혁신을 만들어낸 스티브.. 더보기
인공지능 효율화 기법. 계산량이 얼마나 줄어들까? 이번에는 실제 인공지능 효율화 기법을 적용했을때 수학적으로 계산량이 얼마나 줄어들지를 확인하고 비교해보겠다. Q1.인풋 이미지의 크기가 W x H이고 채널이 C개인 합성곱 신경망(CNN)이 있다고 하자. 필터는 M개가 있고 크기는 3 x 3이다. 계산의 편의를 위해 padding size와 stride는 1이라고 하겠다. 배치는 3이다. 이 경우 기본 계산량은 어떻게 될까? 우선 CNN 합성곱에서 필터 연산 수(MACs)는 출력 피쳐의 크기 x 필터의 크기다. 왜냐하면 출력 피쳐라는 것 자체가 인풋 이미지에 필터를 합성곱하여 나온 결과이기 때문이다. 위 그림을 보면 3x3의 필터가 5x5의 이미지를 움직이며 피쳐 맵을 만드는 과정을 확인할 수 있다. 너비가 3인 필터는 너비가 5인 이미지를 3번 움직일.. 더보기
인공지능(특히 신경망)의 계산 단위 FLOP과 MAC 인공지능의 계산량을 어떻게 수치화할 것인가? 이는 인공지능 모델에 입력하는 데이터의 크기나 모델 내에서 계산되는 방식에 따라 다를 것이다. 정확한 수치로 나타내긴 어렵겠지만 그래도 상대적인 계산량을 가늠하기 위한 표현법들이 있다. 마치 전통적인 컴퓨팅 알고리즘에서 사용되던 빅오나 세타 등의 노테이션처럼 말이다. (개념은 전혀 다르다!) 대표적으론 FLOP과 MAC이 있다. FLOPFLOP은 FLoating-point OPerations (부동소수점 연산)의 약자이다. 인공지능의 가중치들은 대부분 부동소수점(대표적으로 FP32)으로 되어있다. 그리고 인공지능이라는 게 결국엔 숫자 입력받아, 모델 안에 있는 숫자들에 곱하고 더해서 숫자를 결과로 주는 연산이기 때문에 부동소수점 곱, 덧셈 등의 횟수로 표현이 .. 더보기
대형 신경망 모델의 연산량에 대하여 (feat. 인공지능 효율화) 최근 인공지능 업계의 화두는 단연 "에이전트 AI"이다. 즉 기존의 말만 할 줄 아는 인공지능을 넘어서 직접 행동을 할 줄 아는 인공지능으로의 진보가 소위 "강 인공지능"으로의 한발자국 더 나아간다는 측면에서 크게 주목을 받는 것이다. 그러면서도 항상 같이 언급되는 건 AI의 무지막지한 에너지 사용량이다. 주식으로 보면 펀터멘털 모델을 가진 인공지능 테마주도 뜨겁고 그들을 등에 업고 있는 원자력 등 에너지 테마주도 뜨겁다. 진짜 이대로 괜찮을까? 라는 생각이 든다. 하지만 아직까지는 무지막지하게 전기를 먹고 엄청나게 무거운 계산을 할지언정 성능상의 한단계 진보가 더 급하지 연산 효율에 관해서는 되돌아보기 힘든 바쁜 레이스이다. 사실 이면엔 성능상의 진보다 급하다는 이유 말고도, 이 펀더멘털한 거대 모델.. 더보기
웹브라우저에서 언어 모델을 학습시켜 보자 지난번 정말 작은 언어 모델을 Python으로 만드는 과정을 포스팅한 적이 있다. 사실 히든 레이어조차 없는, LLM은 커녕 그냥 최소한의 다음 단어 예측 프로그램을 만든 것이다. 최신 상용 LLM에 쓰이는 트랜스포머 구조까진 아니라도 최소한 수치적으로 언어가 학습되고 단어가 예측되어 나오는 과정을 보는 데에는 그런 간단한 소스코드가 큰 도움이 된다. 사실 내 코드는 그냥 집에 파이썬만 깔려 있으면 돌려볼 수 있고 이래저래 로그도 찍어볼 수 있으니 그냥 실행을 시켜보는게 가장 좋다. 하지만 귀찮아서 코드만 보신 분들께서 실제 돌아가는 모습을 볼 수 있는, javascript로 거의 동일하게 개발된 웹 페이지를 찾아서 소개하고자 한다. https://seb.kr/web_llm/ 개발자 도구 - Tiny .. 더보기
numpy만으로 가장 간단한 LLM을 만들어보자 #2 (파이썬 초보 가능) 아래 소스코드는 내가 정말 할 수 있는한 가장 짧고 간단하게만 만들어본 LLM 기본 코드이다. 물론 사이즈가 작으니 LLM(대형 언어 모델)이 아니라 SLM이나 Tiny LM이라고 불러야 할 것 이다. 학습 데이터는 첨부해두었다. 그냥 맛뵈기이므로 테일러 스위프트의 노래 가사 하나를 넣었다. 정제코드 작성을 생략하기 위해 특수문자나 눌나눔 등이 모두 정제된, 정말 처리하기 쉬운 텍스트를 사용하겠다. import numpy as npwith open("lyrics.txt", "r", encoding="utf-8") as f: text = f.read()words = text.strip().split()vocab = sorted(set(words))vocab_size = len(vocab)block_.. 더보기
LLM을 직접 만들고 개선해보자 #1 - 언어 모델의 본질 이해하기 LLM은 특별한가?우리가 아주 즐겨 사용하는 ChatGPT, Gemini, DeepSeek 등 대형 인공지능 모델은 인공지능의 혁신으로 여겨진다. 머신러닝, 딥러닝이 대중에게 알려진 지 오래 되었고, 우리 일상 속에서도 정말 많은 인공지능 서비스들이 녹아들어 있지만 이런 대형 인공지능 모델(이하 LLM이라고 하겠다)은 기존 AI와 다른 혁신으로 주목받는 것 같다. 많은 사람들이 "강 인공지능"을 기대하기도 하니깐 말이다. 왜 기존의 다른 유용한 딥 러닝 서비스들에 비해 이것이 그토록 특별한가? 사실 알파고가 이세돌을 이긴 그 순간 즈음에 인공지능의 혁명은 일어났다고 볼 수 있다. 의외로 인공지능들은 유사한 패턴으로 만들어진다. 우리에게 뭐든 알려주는 척척 박사 ChatGPT나 개와 고양이를 구분하는 이미.. 더보기

반응형