개발자를 위한 LLM 엔지니어링- 1. LLM의 개념
최근에는 LLM이라는 게 개발자에게 핫하게 다가오고 있습니다.
ChatGPT 서비스의 탄생으로 개발자가 필요 없어졌다는 루머? 도 들리고 개발자들에게는 다가오는 미래에 대하여 대비가 필요합니다.
그런데 막상 하려고 하니 뭐부터 해야 할지 헷갈릴 수도 있고 어디까지 알아야 할지 막막할 수도 있습니다.
이런 분들을 위하여 제 블로그에 개발자를 위한 LLM 엔지니어링 스리즈를 작성하려고 합니다.
LLM을 하기 위해서는 간단한 머신러닝의 개념을 알면 도움이 됩니다. 예전에는 해당 영역이 개발자의 영역이기보다는 리서처 영역에 가까웠습니다. 지금은 리서처 영역 정도로 깊게 알고 진행할 필요는 없지만 기본 개념을 잘 알고 하는 것과 그렇지 못하는 건 차이가 큽니다.
이러한 이유로 LLM 개념을 간단하게 설명하는 것부터 이번 시리즈를 시작하려고 합니다.
LLM(Large Language Model)의 개념
LLM 이란 "대규모 언어모델"이라는 정의처럼 아주 큰 언어 모델입니다. LLM을 알기 위해서는 먼저 LM(Language Model)을 먼저 알아야 합니다.
LM(언어 모델) 이란 자연어 처리의 한 분야로서 음성이나 텍스트의 시퀸시를 생성하는 모델입니다. 좀 어려운 표현인데요 이걸 쉽게 풀어 작성하면 특정한 문자열을 일부를 주면 다음에 올 문자열을 생성하는 모델입니다.
LLM은 이런 LM이 아주 큰 것이라고 생각하면 됩니다.
위처럼 LLM의 정의를 알고 나면 "이걸로 뭘 하지?"라는 의문이 생길 수 있습니다.
LLM의 진정한 가치는 이런 언어의 시퀀스를 학습하는 과정에서 언어적인 특징을 학습한다는 것입니다.
언어적인 특성을 학습하기 때문에 "맛집을 찾아줘", "1+1은 뭐야?", "오목 게임 프로그램을 만들어줘"와 같은 자연어를 인지하고 어떤 function을 수행할 수 있다른 것입니다.
그렇다면 이것을 잘 이용하면 영화에서 봐왔던 자비스와 같은 AI를 유사하게 구현하는 것도 어쩌면 가까운 미래에 가능할 수도 있을 것입니다.
LLM에 대해서 자세히 알고 싶으면 자연어 처리 분야를 이해해야 합니다.
자연어 처리란 컴퓨터(기계)가 인간의 언어를 잘 이해할 수 있도록 연구하는 분야 입니다.
자연어 처리 분야는 크게 자연어의 의미를 컴퓨터가 잘 이해 할수 있는지 연구하는 NLU(Natural Language Understanding) 분야와 자연어를 생성하는 NLG(Natural Language Generation) 분야로 구분됩니다.
NLU는 주로 의미를 파악하는 것이기 때문에 해당 문장의 의도 분류, 감정분석, 키워드 분석 등의 분야가 해당합니다. NLG는 문장을 생성하는 것과 같은 문장 생성이나 번역 문장 생성등이 포함됩니다.
언어 모델인 GPT3의 등장 전에는 다른 딥러닝 모델들이나 통계적인 방법들을 주로 사용했습니다. 따라서 개발자들이 엔지니어링을 직접 할 수 있는 부분보다는 리서치 부분의 진행이 되었습니다.
GPT3 등장 이후로 딥러닝 모델에 대한 리서치 이외에도 프롬프트 엔지니어링이나 RAG와 같은 인프라 접근으로 개발자들도 LLM을 활용하여 여러 가지 애플리케이션을 작성할 수 있도록 접근성이 높아졌습니다.