지난번에 언급한 NVIDIA prompt engineering 자격증을 획득하기 위한 과정에서 배웠던 개념들을 나열합니다.


1. LLM 전반

1.1. LLM 의 원리

  • LLM은 다음 단어를 예측하도록 작동함
  • 이 과정에서 LLM이 단어를 이해도록 임베딩하는 과정을 거침
  • 임베딩은 단어간의 유사성을 계산할 수 있도록 만들어 추론하기 위한 준비

    출처: 오늘의 코드 Youtube - 토큰화, 벡터화, 임베딩 무슨 차이일까?

    1.2. one-hot encoding과 vectorization의 차이

    • 전자는 단어간의 관계를 전혀 나타내지 못하고 후자는 단어간의 의미적 유사성의 관계를 나태내는 것
    • one-hot: 희소 벡터의 특징, 고차원임 (단어의 갯수 만큼)
    • vecotr: 단어 임베딩은 의미를 압축한 밀집벡터로 표현하는 기술

    1.3. Transformer

    • LLM의 각 층은 Transfomer로 구성됨
    • 어텐션: 각 단어는 문장 내의 다른 단어들을 살펴보고 자신의 의미를 명확히하게 함, 자신의 정보(키벡터)와 자신이 찾고 있는 정보(쿼리 벡터)를 비교.
    • 피드 포워드: 어텐션 단계에서 수집된 정보를 바탕으로 각 단어 벡터를 개별적으로 분석 다음 단어를 예측하려고 시도.

     1.4. 온도와 소프트 맥스 활성함수의관계

    • 소프트 맥스 활성함수는 신경망의 마지막 계층에서 출력 함수로 로지스틱 함수의 일반화
    • 실수 벡터를 입력으로 받아 확률 분포로 정규화
    • 출력은 입력과 같은 차원이며 각 원소의 범위는 0과1, 모든 합은 1
      • 소프트: 함수가 하드 최대 함수보다 더 부드로운 확률 분포를 생성
      • 맥스: 입력 벡터에서 가장 가능성이 높은 값을 소프트 하고 확률적인 방식으로 선택함
      • 온도 매개변수는 출력 확률 분포의 부드러움, 피크성을 제어어
        • T = 1 표준 소프트 맥스 출력과 동일
        • chatgpt는 무작위성과 창의성을 제어하기위해서 0과 2사이의 값을 가지고 있음. 기본값 1
    • 다음 단어를 예측하는 과정에서 소프트맥스 활성화 함수를 사용. 이때 온도라는 매개변수를 도입할 수 있는데 온도가 높으면 분포가 평탄해져 어떤 결과는 나올 수 있는 창의성이 발현되고, 낮으면 분포가 뾰죡해져 대답이 일관되게 나옴

    출처: What Is and Why Use Temperature in Softmax?

    https://www.baeldung.com/cs/softmax-temperature

    1.5. Fine tunning과 RAG

    출처: Fine-Tuning LLMs: A Guide With Examples

    • Fine tunning 의 함정
      • 과적합: 에포크를 과도하게 늘리면 학습데이터셋에서는 높은 정확도를 보이지만 새로운 데이터셋에서 일반화 되지 못할 수 있음
      • Catastophic Forgetting: 특정한 작업을 위한 미세조정 과정에서 처음에 습득한 광범위한 지식을 잃을 위험
      • 데이터 유출: 훈련 및 검증 데이터 세트가 중복됨
    • RAG
      • 정의: 검색기반 모델과 생성 모델의 장점을 결합, 입력 쿼리를 기반으로 대규모 데이터베이스 또는 지식 기반을 검색하여 관련 정보를 검색
      • 동적 지식 통합: 외부 소스의 실시간 정보를 통합하여 최신 지식이나 특정 지식이 필요한 작업에 적합
      • 문맥적 연관성: 검색된 문서에서 추가적인 맥락을 제공하여 생성 모델의 응답을 향상
      • 다재다능: 더 광범위한 쿼리를 처리할 수 있음

     

    2. Langchain

    LLM 기반 어플리케이션 개발을 간소화하고 유연하게 만드는 핵심적인 역할

    2.1 Runnable

    • Chain을 구성하는 모든 구성요소를 연결하고 실행하기 위한 표준 인터페이스
    • 표준화된 메소드: invoke, batch, stream 표준 호출 메소드를 제공
    • 모든 구성요소가 공통된 메서드를 가지게 하는 것

    2.2 LCEL

    • LangChainExpressionLanguage Runnable을 체인으로 구성하여 유닉스 파이프 연산자처럼 선언적인 방식 제공
    • Prompt | model | output_parser 형식으로 구성
    • 프롬프트 엔지니어링 기법 지원
      • 역할 기반 메시지: ChatPromptTemplate.from_messages 메소드를 사용하여 Human, AI, System 와 같은 역할 기반 메시지를 명시적으로 정의
      • 퓨삿 프롬프팅: FewShotChatMessagePromptTemplate 모델 동작에 영향에 미치는 예시를 사전에 제공할 수 있음

    출처: Prompt Engineering vs. RAG vs. Finetuning: What’s the Difference?

    •  StringOutputParser
      • 언어모델의 출력값을 다루기 쉬운 문자열로 변환하기 위해 사용함
      • LLM이나 챗봇 모델은 단순히 텍스트만 변환하는 것이 아니라 AIMessage, ChatMessage와 같은 복잡한 객체 형태로 출력하기 때문에 순수한 텍스트 내용을 추출하기 위한 방법

    3. 기타

    3.1. Pydantic 사용하는 이유

    • 파이썬은 동적언어여서 자료형이 사전에 선언되지 않음
    • 타입 힌트는 힌트일 뿐이며 데이터 유효성 검사를 위해 Pydantic를 사용하여 출력 자료형을 구체하하는것

    3.2. RAG을 사용해야하는 이유

    • 지식의 단절, 특정 시점까지만 LLM이 학습하기 때문
    • context window의 한계, 기억 메모리가 무한하지 않음
    • 벡터 DB는 기존 DB가 정확히 요청한 단어만 찾는것과 달리, 유사한 단어를 찾아 응답결과를 좀더 풍성하게 해줌
    • 벡터(색인)과 원본데이터(원자료)를 모두 저장하여 유사한 색인을 찾아 결과를 반환하는 형태로 구현됨

    3.3. 메모리를 기억하기 위한 방법

    이 부분 확실하지 않음. 애초에 LLM은 stateless 하기 떄문에 정보를 저장하는게 중요.chat_message 메소드에 이전 대화 기록을 AI message, Human Message등을 저장하고 멀티턴으로 구현하는 방법도 있으나 context limt 때문에 적절하지 않을 수 있음. 검색한 결과 다음 메서드가 있는 것을 확인

    https://wikidocs.net/235581

     

    08. RunnableWithMessageHistory

    .custom { background-color: #008d8d; color: white; padding: 0.25em 0.5…

    wikidocs.net

    3.4. 서로 다른 api를 Langchain에 통합하기 위한 방법

    RunnableParallel

    3.5. Langchain과 LangGraph의 차이

    • Langchain은 단방향(프롬프트 → 모델 → 파서)
    • LangGraph: 순환가능하고 복잡하고 예측 불가능한 상황에 대응하는데 특화, 결과를 평가한뒤 다음 행동을 스스로 결정해야할때 유용함

    https://wikidocs.net/261585

     

    1-1-2. LangGraph와 LangChain의 차이점

    ## LangGraph와 LangChain의 차이점 LangGraph와 LangChain은 둘 다 LLM(대규모 언어 모델) 애플리케이션 개발을 위한 강력한 도구이지만, 각각의…

    wikidocs.net

     

    5. 종합적인 느낌

    • state-of-art의 정보보다는 핵심 개념을 질의하는 자격증
    • 장문의 대답보다는 핵심적으로 요구하는 단어, 용어, 클래스, 함수를 중심으로 설명하는게 좋음
    • 기본적인 LLM에 대한 작동 기전에 더하여 prompt engineering에 사용할 수 있는 Langchain 메서드를 공부 
    • 기출예시
      • 토큰 vs 벡터, Langchain, LCEL, Temperature(범위, 창의적 vs 일관성 있는 결과에 대한 스케일 범위), chatgpt api의 temperature 범위, Pydantic, LLM의 memory 기억 방법, LangGraph 등

    6. 출처

    + Recent posts