전체 글 50

Large Language Model (5) : RAG

RAG (Retrieval Augmented Generation, 검색 증강 생성)오늘은 요즘 LLM 관련 기술 중 많이 언급되는 RAG에 대해서 이야기해보려고 합니다. RAG(영어권 사람들은 '랙'이라고 읽더라고요)은 Retrieval Augmented Generation의 약자입니다. 우리 말로는 검색 증강 생성이라고 부릅니다. Retrieval을 검색이라고 번역한 것인데요. 보통 검색하면 Retrieval보다는 Search가 떠오르지 않으시나요?Search와 Retrieval의 차이는 무엇일까요? 좀 뜬금없어 보이지만 오늘 논의와 관련이 있기 때문에 잠시 이야기하고 넘어가겠습니다.먼저 사전적인 의미부터 살펴보면 Search는 말 그대로 검색을 의미합니다. 수많은 후보 중에 내가 원하는 특정 대상을 ..

Deep Learning 2024.04.28

Large Language Model (4) : Fine Tuning & LoRA

들어가며 LLM 이야기를 접하다보면 필수적으로 따라오는 용어 중에 Fine Tuning이라는 것이 있습니다. 우리 말로는 미세조정이라고 번역합니다. 오늘은 Fine Tuning이 무엇이고, 왜 LLM 이야기에 빠지지 않고 등장하는지에 대해 이야기해보려고 합니다. Pre-trained Model Fine Tuning에 대해서 이해하려면 Pre-trained Model을 먼저 이야기해야합니다. https://jins-sw.tistory.com/48 에서 Foundation Model이라는 측면의 LLM 이야기를 한 적이 있는데 참고하셔도 좋을 듯 합니다. 예를 들어 어떤 이메일이 스팸인지 아닌지 판단하다는 자연어처리 기능을 만든다고 생각해보겠습니다. 전통적으로 하던 방법은 다음과 같습니다. 이메일 데이터를 ..

Deep Learning 2023.11.12

Cross Entropy 이야기

소개 가장 흔하게 사용하는 loss fuction 중 하나가 Cross Entropy Loss가 아닐까합니다. 대부분의 Deep Learning 프레임워크에서 기본적으로 제공해주기도 하고요. 자주 쓰기는 하지만 Cross Entropy가 실제로 무엇인지 궁금하신 분들도 있을 것 같습니다. 오늘은 Cross Entropy에 대해서 소개를 해보고자 합니다. 스포일러 Cross Entropy는 Information Theory라는 학문에서 나온 개념입니다. 오늘 글에서는 Information Theroy 이야기를 여기저기에서 하게 될 것입니다. 그런데 Machine Learning에서 Cross Entropy를 사용하는 목적은 원래 Information Theory에서 Cross Entorpy를 만든 목적과 ..

Deep Learning 2023.05.21

Large Language Model (3) : In-Context Learning, 남은 이야기들

그래서 LLM이 Foundation Model이야? Large Language Model을 다시 요약하면 이렇습니다. Text 데이터를 엄청나게 모은다. 이 데이터를 Language Model에게 보여준다. Language Model이 주어진 텍스트의 다음 단어를 예측하도록 훈련시킨다. Language Model의 결과(Decoder의 예측)를 다시 Language Model의 입력으로 넣으면 (auto-regressive) 긴 길을 지을 수 있다. 결국 Language Model 하는 일은 다음 단어 예측, 그리고 더 길게 하면 글쓰기입니다. 이런 Language Model이 Large Language Model 됐다고 NLP Foundation Model의 역할을 할 수 있을까요? Yes, No로 대..

Deep Learning 2023.04.12

Large Language Model (2) : LLM을 가능케한 삼박자

스포일러! 2편은 다른 편에 비해 다소 기술적인 내용이 많습니다. Large Language Model Language Model이 커지면 뭘까요? 바로 Large Language Model입니다. 하지만 무작정 크게 만들 수는 없습니다. 아래 세가지 문제 때문입니다. 훈련 데이터 : 엄청 많은 데이터가 필요합니다. 알고리즘 : 기존보다 엄청 강력한 알고리즘이 필요합니다. 컴퓨팅 파워 : 엄청 많은 그리고 좋은 컴퓨터가 필요합니다. 우리가 LLM을 만들고 있다는 것은 이 문제들이 어느 정도 해결이 됐다는 뜻이겠지요? (이 세가지는 전통적인 Machine Learning에서 Deep Learning으로 넘어갈 수 있었던 요인이기도 합니다. 앞으로 더 강력한 Machine Learning 기법이 나오더라도 ..

Deep Learning 2023.04.12

Large Language Model (1) : Foundation Model

시작 시작하기 전에 글을 마무리하고 처음으로 돌아와보니 처음 계획보다 매우 긴 글이 됐습니다. 그래서 몇 편으로 나누어서 올려보려고 합니다. ChatGPT를 시작으로 Generative AI, Large Language Model(LLM)에 대한 열기가 엄청납니다. 수개월 전까지만해도 Generative, Language Model 같은 표현은 AI 계에 몸담고 있는 사람들만이 쓰는 것 같았는데 말이죠. 이제는 주위에서 이런 표현을 듣는 일이 어렵지만은 않습니다. 더 놀라운 사실은 이런 표현들이 말에서 그치지 않고 일상 생활에서 직접 쓰는 단계가 시작됐다는 점입니다. 몇달 전만 해도 개인 컴퓨터에서 Image-to-Text 모델을 돌려본다거나, LLaMA 같은 Language Model을 직접 돌려본다는..

Deep Learning 2023.04.12

itertools: iterator를 위한 도구 모음

iterator? iterable? itertools는 iterator를 잘 다루기 위한 기능들을 모아둔 모듈입니다. iterator에 대한 설명은 Iterator, Generator 라는 글을 참조하시면 좋습니다. 왜 iterator가 필요한지, 어떻게 쓰는지, generator와 관계는 무엇인지가 설명되어 있습니다. iterator를 언제 쓰는지 간단히 요약해 보면 다음과 같습니다. element 수가 너무 많아서 한 번에 메모리에 올릴 수 없다. 또는 element 수가 몇 개인지 미리 알 수 없다. element 하나하나를 만드는데 시간이 오래 걸리거나 리소스를 많이 쓴다. 그래서 필요할 때 만들어 쓰고 싶다. 특정 index의 element를 꺼내올 수 없거나 매우 어렵다. 하지만 다음 elem..

Python 2023.02.19

if __name__ == '__main__': 이 뭔가요?

파이썬 코드들을 보다보면 아래와 같은 코드를 종종 볼 수 있습니다. if __name__ == '__main__': # something here 이 코드가 하는 일은 무엇일까요? 오늘은 이 코드의 작동 원리와 언제 사용하는지 알아보겠습니다. __name__ 은 무엇일까요? 먼저 첫번째 퍼즐 조각인 __name__이 무엇인지부터 알아보겠습니다. Python에는 미리 정의된 특수한 함수나 변수들이 있습니다. 함수는 __do()__ 같은 형태이고, 변수는 __val__ 같은 형태입니다. 이런 특수한 함수와 변수는 보통 Python 내부적으로 사용하기 위한 것들이라서 코딩 때 직접 사용할 일은 그다지 많지 않습니다. 그런데 __name__은 아주 유용한 특성이 있어서 일반 코딩 때도 곧잘 사용되곤 합니다. 좋..

Python 2023.01.15

Python GIL(Global Interpreter Lock)이 무엇일까요?

오늘은 Python을 좋아하지 않는 분들이 자주 Python(정확히는 CPython)을 공격하는 이유 중 하나인 GIL에 대해서 이야기해보려고 합니다. GIL을 이해하기 위해서는 먼저 thread, process와 같은 병렬처리에 대한 기본적인 이해가 필요합니다. 이번 포스트에서는 thread와 process가 무엇인지는 알고 계신다고 가정하고 이야기를 진행해 보겠습니다. ※ GIL은 CPython 만이 가지는 특징입니다. Jython, IronPython, PyPy 같은 다른 Python 구현은 GIL을 사용하지 않습니다. GIL이 풀려고 하는 문제는 무엇일까? 먼저 GIL이 풀려고 하는 문제부터 살펴보겠습니다. GIL이 풀려고 하는 것은 Multi-thread 프로그래밍에서 아주 골치 아픈 문제인 r..

Python 2023.01.13

Python Callable

callable은 무엇이지? Python에서 callable은 함수를 호출하듯이 호출할 수 있는 객체를 의미합니다. 프로그래밍 언어 용어에 대한 설명답게 뭔가 미묘하면서 깔끔하지 않은 느낌이 드는 문장이죠? "함수를 호출하듯이 호출한다"는 부분이 눈에 걸리지 않을까 합니다. 일반적인 프로그래밍 언어에서는 호출할 수 있는 것은 함수(또는 메소드) 뿐이기 때문입니다. 변수 a를 호출하세요. 클래스 Cat을 호출하세요. 이상하죠? 그럼 Python에는 함수 외에도 호출할 수 있는 무언가가 있다는 뜻일까요? 짧은 답은 "그렇다"입니다. 긴 답은 아래에서 차근차근 이야기해보겠습니다. callable() 함수 먼저 Python이 built-in으로 제공하는 callable() 함수를 살펴보겠습니다. callable..

Python 2022.07.11