brunch

You can make anything
by writing

C.S.Lewis

by 최재철 May 13. 2024

LLM 개발관련 개념정리

LLM 정의부터  LLM 전용 프레임워크까지

최근 PoC나 LLM 관련 서비스 개발을 하고 있습니다. 그동안 최근의 대규모 언어 모델(LLM) 관련 내용과 프롬프트 개발 방법에 대해서 주요사항을 정리했습니다. 제가 생각하기에 중요한 내용 위주로 작성했는데, 그러다보니, 다소 내용이 어렵다라는 피드백 있었고, 최대한 흔한 LLM 정의부터 랭체인 같은 LLM 전용 프레임워크까지, 개요위주로 쉽게 정리해주었으면 하는 바램이 있어서 이 글을 작성하게 되었습니다. 

비 엔지니어 분들, 일반인들도 개요를 잡을 수 있도록 최대한 쉽게 썼습니다! 자 그럼 따라오시죠. 


LLM이란 무엇인가?

대규모 언어 모델(LLM) 이라고 불리는 것은 여러 딥러닝 모델 중에 하나의 결과물입니다. 이 모델이 하는 기능은, 자연어 지시문장 (프롬프트)를  전달하면, 이 모델을 통해서 질문에 대한 관련 답변을 생성하게 됩니다. 

LLM은 아래그림 처럼 우후죽순 있습니다. (마치 코인시장에 코인들이 많듯이 말이죠)

2024년 주요 모델들(출처:https://lifearchitect.ai/models-table)

대표적인 것은 OpenAI의 ChatGPT 이고, 최근에 출시된 Meta의 오픈 소스 라마3 등이 있습니다. 

이들은 공통적으로 API가 제공하고 있어서, API 를 통해서 프롬프트로 질문하고, 답변을 리턴받게 됩니다. 


LLM 어플리케이션이란?

LLM 에서 제공하는 API를 통해 프롬프트를 전달하고, 답변을 받으며, 그 과정에서 특정한 여러가지 처리를 수행하는 LLM 전용 어플리케이션을 말합니다.  대화의 내용을 기억한다거나, LLM 자체가 데이터를 가지고 있지 않은 경우 외부에서 가지고 오는 처리 (평션사용 또는 RAG방식) 하는 등. 이러한 일련의 프로세스를 할 수 있도록 파이프라인형태로 만들어 놓은 것이 LLM 어플리케이션입니다.


대표적인 LLM 어플리케이션의 종류는 다음과 같습니다. 

챗봇 

대량 데이터 요약

문장 작성

데이터 생성

검색 or 추천 (RAG)

등이 있습니다.


LLM 애플리케이션은 내부적으로 무엇을 하고 있는가?

첫번째로, LLM 상에서 역할(페르소나)을 설정하고, 각각이 수행하는 지시 프롬프트를 실행시킵니다. 

System(역할정의), Human(사용자), Assistant(아웃풋의 관리를 하는 역할) 의 세 가지 역할을 분담할 수 있습니다.

예를 들어 소프트웨어 개발 절차를 정리하는 챗봇을 만드는 경우,

- System: 당신은 소프트웨어 개발자입니다. 사용자 입력에 따른 구체적인 절차를 제공해주세요.
- Human: {사용자 입력}
- Assistant: 이전에 진행된 대화 내용을 유지하겠습니다. 

이런 식으로 됩니다.


LLM으로 개발할 수 있는 것

위에서 LLM 어플리케이션의 종류에서 언급했던 것들중에서 가장 대표적인 챗봇과 요약을 예로 들어보겠습니다.

1. 챗봇

요즈음에는 LLM 를 가지고 쉽게 개발하기 위해서, 랭체인(LnagChain) 이라는 프레임워크를 많이 사용합니다. 프레임워크를 쓰면 좀 더 체계적으로 쉽개 개발할 수 있는 장점이 있습니다. 

다음은, LangChain + LLM(openAI 의 챗GPT 3.5) 를 활용한 간단한 챗봇 개발 소스입니다. 

 

간단한 챗봇소스

2. 요약

이번에는 요약하는 샘플코드입니다. 

15줄 정도되는 내용을 ChatGPT가 알아서 3~4줄정도로 요약해주었습니다. 

살짝 어색한 부분도 있지만, 나름 사람처럼 요약을 잘 해 줍니다. 


* 좀 더 구체적인 것은 아래 링크를 참고하세요. 

LLM(대규모 언어 모델)이 할 수 있는 것 (brunch.co.kr)


개발 도구

프레임워크

LLM 애플리케이션을 개발하는데 있어서 현재 다양한 프레임워크나 툴이 등장하고 있습니다. 현재 가장 많이 이용되고 있는 것은 앞서 사용해보았던, 랭체인과 라마인덱스입니다. 


https://www.langchain.com/


https://docs.llamaindex.ai/en/latest/


그 중에서 사용자가 가장 많은 랭체인만 살펴보면, 특징으로는

외부 데이터 연계나 RAG/ReAct/Parser 등의 모듈이 다 존재.

다양한 LLM에 대응

Python/TypeScript 지원

모니터링의 langsmith나 LangGraph 등 부수되는 tool 이 많음 


프레임워크 선택기준은, 

코딩 초보자나 프로젝트 방향을 모르는 경우 Langchain을 시작하는 것이 권장하고,  llama Index는 고급 사용자나 LLM 으로 llama2 or llama3 계열을 쓰는 경우에 적합해 보입니다. 


이상으로, 개념위주로 퀵하게 살펴보았습니다 .개념을 정리하는 데 많은 도움이 되시길 바랍니다. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari