Profile image
Jinyoung
Dev

LLM을 어떻게 사용할 것인가?

LLM을 어떻게 사용할 것인가?
0 views
21 min read

이 포스트는 Andrej Karpathy가 2025년 2월 28일에 본인의 유튜브 채널에 공개한 How I use LLMs 라는 영상을 보고 정리한 것입니다. 각 챕터 별로 어떤 내용을 담고 있는지 간략하게 소개하고 말미에 제 나름의 생각을 덧붙였습니다.(Me)


Intro

영상의 초반부는 2025년 2월말 기준으로 가장 잘 알려진 LLM 서비스들을 소개. 가장 먼저 본인이 소속되어 있었던 OpenAI의 ChatGPT부터 Gemini, MetaAI, Copilot, Calude, Grok 등등

LLM의 매우 기초적인 작동 원리에 대해 설명. LLM을 거의 모든 인터넷 정보가 담긴 하나의 커다란 Zip 파일에 비유.

  • pre-training
    • 마치 인터넷 전체를 토큰으로 잘게 나누어 하나의 손실 압축 (lossy and probabilistic zip file) 형태로 압축
    • 매우 비용이 많이 드는 과정. 수천만 달러와 수개월의 시간이 소요
    • 이러한 이유로 pre-training은 자주 수행되지 않으며, 이로 인해 모델은 지식 컷오프(knowledge cut-off)를 가지게 됨
  • post-training
    • pre-trained된 모델에 "미소 짓는 얼굴"을 붙이는 것과 비유. 사용자 질문에 응답하는 비서(assistant)의 페르소나를 갖도록 학습
    • 사람이 만든 대화 데이터셋을 사용하여 모델을 학습. 이 과정을 통해 모델은 질문에 답변하는 비서의 스타일을 학습

Pre-training은 모델에게 광범위한 지식을 습득시키는 단계이며, Post-training은 모델이 습득한 지식을 바탕으로 사용자에게 유용한 방식으로 응답하도록 페르소나를 부여하는 단계

ChatGPT에게 간단한 질문을 하면서 시작. 아메리카노 one shot에 함유된 카페인은? 이것이 올바른 정답인지는 확신할 수 없지만 아마도 맞을 것 같다. 그리고 실제 인터넷에서 검색해서 ChatGPT의 답변이 얼추 정확하다는 것을 확인

그리고 본인이 실제로 해결하려고 하는 어떤 문제가 있는데 이것을 ChatGPT, Claude, Gemini, Grok, DeekSeek 등의 다른 모델에 물어보고 본인이 원하는 정답을 해줬는지 설명

Me: 거의 모든 LLM 서비스를 유료 구독하고 있다는 게 놀랍기도 하고 어떻게 보면 당연하게 느껴짐. AI 연구자이기 때문에 아마도 다양한 서비스를 직접 사용해보는 것 같다.


Thinking model

강화 학습을 통해 추가적으로 훈련된 "사고 모델"은 문제 해결 과정에서 인간의 사고 과정과 유사하게 다양한 아이디어를 시도하고, 백트래킹하며, 가정을 재검토하는 등의 "생각"을 수행할 수 있음

사고 모델은 특히 수학, 코딩 등 복잡한 문제에서 더 높은 정확도를 보일 수 있지만, 응답에 더 많은 시간이 소요될 수 있음.

문제의 난이도에 따라 사고 모델과 일반 모델을 선택적으로 사용하는 것이 효율적

Me: 현재는 일반 모델과 Thinking 모델이 구분되어 있지만 나중에는 이 구분이 사라지게 될 것임. (Claude 3.7 Sonnet은 하나의 모델을 사용하되 사용자의 선택에 따라서 사고 모드를 켜거나 끌 수 있음)

Me: LLM API를 사용하는 개발자 입장에서 언제 일반 모드를 사용하고 언제 사고 모드를 사용해야 할지 결정해야 함. 이것은 단순히 엔지니어링 레벨의 고민을 넘어서서 Product team 전체 구성원이 고민해야 할 지점이 되고 있음. 아직 이러한 고민을 깊게 할만한 서비스 개발을 해보지 않았지만 가까운 시일 내에 하게 될 것 같다는 생각.


Tool use

그 다음으로는 Tool use에 대해 설명한다. 앞서 설명했던 pre-training으로 인해 LLM은 특정 시점을 기준으로 그 이후의 데이터는 학습하지 못했기 때문에 지식의 단절이 발생한다. 이 단절을 극복하기 위한 방안으로서 Tool을 사용하는 것이다.

  • Internet search
  • Python interpreter
    • 30 x 9 라는 질문에 대해서 LLM은 곧바로 270이라는 답을 하지만 이것은 숫자 계산에 의한 결과값이 아니라 원래 LLM이 하던 next token prediction에 의한 결과값임
    • 하지만 예측으로는 맞출 수 없는 계산을 물어보는 경우 ChatGPT는 Python interpreter tool을 사용함
      It's an image
    • LLM이 직접 바로 답변을 하는 것이 아니라 LLM에게 파이썬 코드를 작성하게 하고 해당 코드를 실행한 후에 결과값을 다시 LLM에게 돌려줌
    • OpenAI는 ChatGPT를 훈련시켜 이러한 상황에서는 Tool을 사용하도록 하게 함 (ex: 이러이러한 상황에서는 직접 바로 답을 내지 말고 Tool 사용을 통해 답을 구해라)

LLM 서비스 별로 사용 가능한 Tool의 종류와 지원범위가 다름. ChatGPT는 Python interpreter를 지원하지만 Grok과 Gemini는 그렇지 않고 Claude는 Javascript를 통해 코드를 작성하고 실행하는 듯 보임

그리고 2개 이상의 Tool을 묶어서 사용하는 것도 가능함. Inernet에서 어떤 데이터를 검색하여 가져온 후에 해당 데이터를 대상으로 Data 분석을 요청하는 경우는 파이썬 코드를 작성하여 해당 코드를 실행함으로써 사용자 요청에 응답함

하지만 이렇게 툴을 묶어서 사용함에도 최종 응답이 잘못된 값에 기반하는 경우가 있음. 그렇기 때문에 여전히 최종 결과물은 사람이 확인해야 함

Me: interpreter(Tool)로써 ChatGPT가 파이썬을 사용하는데 반해 Claude는 자바스크립트를 사용한다는 것이 흥미로움. Claude의 Artifacts를 통하면 React 앱을 아주 근사하게 만든다는 것과 어쩌면 이것이 연관되어 있지 않을까 하는 생각이 듦. 학습 단계에서 어떤 프로그래밍 언어에 치중하는지에 따라서 이렇게 다른 언어를 사용하게 되었는지 달라질 수 있을까도 궁금함.

Me: Tool use는 지금보다 훨씬 더 발전/개선될 여지가 많이 있음. Claude MCP(Model Context Protocol)와 같은 기술이 LLM 벤더와 무관하게 공통 프로토콜로 만들어져서 사용되면 더 좋겠다는 생각을 함.


Claude artifacts & diagram

Claude 만의 기능 중에 하나로 Artifacts가 있음. Claude에 자연어로 앱 생성을 요청하면 주로 리액트 코드를 통해 해당 앱을 실시간으로 만들고 화면 오른쪽에 앱을 바로 사용해볼 수 있도록 하는 기능임

그리고 Mermaid 문법 기반으로 다이어그램 생성도 가능함. 사용자의 자연어 요청에 맞게 다이어그램을 생성해서 이것 역시 화면 오른쪽에서 바로 확인할 수 있음

Me: Artifacts는 아주 간단한 개념 증명 단계의 앱을 만드는 데 효과적임. 나도 종종 사용하고 있고 점점 앱의 정확도가 올라가고 에러 발생율이 내려가는 것을 느끼고 있음.


Cursor: Composer, writing code

일 할 때 코드 작성을 주로 하는 경우, ChatGPT에 접속해서 코드 작성 요청을 하는 경우는 많이 없음. ChatGPT는 Context가 없기 때문에 일일이 나의 문맥을 여기에 넣고 코드 작성 요청을 하는 것은 매우 느리기 때문임

Cursor라는 툴을 사용중. Cursor는 IDE로서 작업중인 모듈을 열고 전체 코드에 접근할 수 있음. 즉, LLM에게 적절한 Context를 사람의 개입 없이 할당할 수 있는 것임

Composer를 통해 사용자의 자연어 요청에 대해 Cursor가 필요한 코드 파일을 열고 직접 수정까지 함. 사용자의 승인이 필요한 경우(ex: 디렉토리 생성)는 사용자가 직접 Confirm을 해야 하며, 승인 하게 되면 곧바로 Composer가 자동으로 그 뒤의 작업을 진행함. 다시 말해 Composer와 사람이 나란히 컴퓨터 책상에 앉아서 키보드 하나를 두고 서로 번갈아가면서 코드를 읽고 쓰는 방식임.

Me: 대략 1년 전에 Cursor를 써보고 실망했던 경험이 있어서 지금까지 쓰고 있지는 않았음. 이번에 이 글을 작성하면서 다시 설치해서 써보고 있는데 사용성 측면에서 완전히 달라졌고 어쩌면 2주 간의 무료 체험 기간이 끝나면 구독할 것 같음.
원래는 IntelliJ+Github copilot 또는 VSCode + Cline + Github copilot 조합으로 LLM을 코딩과 결합하여 사용중이었음. Cursor를 2주 동안 열심히 사용해보고 이 3개 서비스 조합을 비교 해보고 하나를 고를 수 있을 것 같다는 생각을 함.


Audio (speech) I/O

데스크탑과 모바일 디바이스에서 LLM에 자연어 질의를 할 때, 대부분 음성으로 함. 특히 모바일 디바이스에서는 80% 정도의 질의는 음성으로 하고 있음

2가지 음성 모드에 대해 알아볼 예정

1. 채팅 인터페이스에서 타이핑 대신에 음성 사용

  • 모바일 앱 채팅 인터페이스에서 '마이크' 아이콘을 터치
    • 데스크탑 앱에는 이 기능이 없기 때문에 다른 음성 ➡️ 텍스트 변환 앱을 사용 (ex: SuperWhisper)
  • LLM이 음성을 인식해서 그것을 텍스트로 변환. 변환된 텍스트가 그대로 LLM의 input이 됨
  • 2가지 작업이 순차적으로 진행.
    1. 음성 ➡️ 텍스트 변환,
    2. 텍스트 ➡️ LLM 입력
  • Andrej Karpathy는 이것을 Fake audio라고 부름

2. Advanced voice mode

  • 음성(오디오) 자체를 LLM input으로 사용
    • 모델이 오디오 청크를 이해하고 다음 오디오 청크를 predict 하는 것 (Andrej Karpathy는 이것을 True audio라고 부름)
  • ChatGPT에서는 Advanced voice mode 라는 이름으로 서비스 중

Me: 개인적으로 UX 관점에서 음성이 타이핑을 완전히 대체할 것인가에 대해 회의적임. 음성으로는 할 수 없는 세밀한 텍스트 지정은 오로지 타이핑만으로 가능하기 때문임. 전체 문장 중에 특정 문자에 강조 표시를 한다거나 아니면 문장의 구조를 편집한다거나 하는 것은 음성으로는 하기 힘든 작업임. 하지만 좀 더 기술이 발전되면 이러한 강조 표시나 문장 구조의 중요도가 지금보다는 떨어지게 되고 어쩌면 언젠가는 음성이 타이핑을 대체할 수도 있게 될 것 같다는 생각을 함. 그리고 어쩌면 음성과 타이핑이 영원히 공존할 수도 있을 것 같음.


NotebookLM, podcast generation

Web link, Youtube, PDF, Markdown 등의 문서를 업로드 하고 이러한 소스 기반으로 Q&A를 할 수 있음

또한 주요 기능 중의 하나로 팟캐스트 오디오를 생성할 수 있음. 업로드 소스를 기반하여 2명의 팟캐스트 진행자가 대담을 진행하는 형식.

Me: 개인적으로 자주 사용하는 서비스. 시간이 지남에따라 점점 서비스 품질이 향상되는 것이 체감됨. 특히 긴 문서를 업로드 해놓고 궁금한 것을 바로 자연어로 질의할 수 있어서 매우 편리함

Me: 어떤 문서에 대해 깊게 이해하고 싶을 때도 사용함. 문서를 업로드 하고 팟캐스트를 생성한 후에 해당 팟캐스트를 듣는 방식. 문서를 읽기 전에 팟캐스트를 듣는 경우도 있고 문서를 읽고 나서 팟캐스트를 듣는 경우도 있음. 둘 다 효과적임.


Image: See, OCR, DALL-E

이미지를 토큰으로 표현하여 LLM이 이해하고 처리할 수 있는 방법을 설명 LLM, transformer neural network 자체는 input token이 텍스트인지 이미지인지 오디오인지에 대한 구별이 없음.

  1. 인코더 단계에서 각 modality의 데이터를 토큰 ID의 시퀀스로 변환.
  2. LLM은 이 시퀀스를 입력 받아 다음 토큰 ID 시퀀스를 예측.
  3. 디코더는 이 예측된 토큰 ID 시퀀스를 해당 modality의 데이터 (텍스트, 이미지, 오디오)로 복원

Use case - Image input

  • LLM에 이미지를 업로드. 정확히는 ChatGPT 같은 서비스 내의 채팅 인터페이스에 이미지를 업로드
  • 이미지와 관련된 자연어 질의를 하고 답변을 받는 방식

Use case - Image output

자연어 질의 기반으로 이미지를 생성하는 기술.

Me: 이미지 input use case는 개인적으로 가장 많이 사용하는 LLM 사용 방식 중의 하나임. 다이어그램이나 구조도를 내가 직접 그리고 나서 이것의 스크린샷을 기반으로 잘 작성되었는지 사실에 부합한지 검증하는 용도로 사용.

Me: 이미지 output은 최근 들어서 사용하게 됨. 블로그 글 작성 시 커버 이미지를 무엇으로 해야 할지 고민인데, 이 때 ChatGPT 또는 ImageFX 같은 툴을 통해 만들고 있음.


ChatGPT memory & Custom instruction

Memory

기본적으로 대화(Conversation)은 빈 토큰인 상태로 시작함. 새 대화를 시작할 때마다 이전 대화의 모든 Context가 지워진 상태.이것은 LLM의 기본 동작 방식으로 인해 발생하는 것임.

ChatGPT는 대화 내용 기반으로 사용자 개인 메모리 관리를 할 수 있는 기능을 제공함. 사용자가 직접 특정 대화 내용에 대해 기억해달라고 하거나 아니면 ChatGPT 스스로의 판단에 의해 필요한 정보를 메모리에 저장함

그 이후에 새로운 대화를 시작해도 해당 메모리 기반으로 개인화된 대화를 할 수 있음

Custom instruction

ChatGPT의 응답 스타일, 성격, 특정 선호도 등을 설정

Me: ChatGPT 이외의 다른 LLM 서비스도 Memory 기능을 도입하면 좋을 것 같음

Me: Custom instruction은 ChatGPT 뿐만 아니라 Claude - Projects에서도 사용 가능. 다만 ChatGPT가 좀 더 풍부하게 설정 가능하다는 느낌.


Custom GPTs

대화를 시작하기 전에 상당한 양의 Context를 LLM에게 주어야 할 때가 있음. 이 대화를 시작하는 목적, 응답할 때의 구체적인 응답 포맷, 대화의 주제 등등.

다만 이 Context가 개인적인 것이라면 Custom insturction을 사용할 수 있지만 그렇지 않고 특정 대화에서만 이 Context를 사용하고 싶은 경우 Custom GPT를 만들 수 있음

Custom GPT를 내가 원하는 Context로 설정하여 만든 후에 해당 주제로 대화를 하고 싶으면 그냥 생성된 Custom GPT를 선택하여 대화를 시작하면 됨

Me: 다른 LLM 서비스들 중에 Custom GPTs와 유사한 것이 뭐가 있을지 생각해봤는데, Claude의 Projects가 어느 정도는 비슷한 것 같음. Projects도 Custom하게 프롬프트를 지정할 수 있고 사용자가 해당 Projects로부터 대화를 시작하면 Context가 지정되기 때문임. 다만 ChatGPT의 Custom GPTs가 좀 더 유용하게 쓸 수 있을 것 같다.

Comments (0)

Checking login status...

No comments yet. Be the first to comment!