Jake Seo
제이크서 개발 블로그
Jake Seo
전체 방문자
오늘
어제
  • 분류 전체보기 (719)
    • AI 서비스 개발 일기 (3)
    • LLM 개발 일기 (1)
    • ------레거시 (2025.08.23 이전)--.. (0)
    • 백준 문제풀이 (1)
    • 릿코드 문제풀이 (2)
    • 알고리즘 이론 (10)
      • 기본 이론 (2)
      • 배열과 문자열 (8)
    • 데이터베이스 (15)
      • Planet Scale (1)
      • MSSQL (9)
      • 디비 기본 개념 (1)
      • SQLite 직접 만들어보기 (4)
    • 보안 (7)
    • 설계 (1)
    • 네트워크 (17)
      • HTTP (9)
      • OSI Layers (5)
    • 회고 (31)
      • 연간 회고 (2)
      • 주간 회고 (29)
    • 인프라 (52)
      • 도커 (12)
      • AWS (9)
      • 용어 (21)
      • 웹 성능 (1)
      • 대규모 서비스를 지탱하는 기술 (9)
    • 깃 (7)
    • 빌드 도구 (7)
      • 메이븐 (6)
      • 그레이들 (0)
    • Java (135)
      • 이펙티브 자바 (73)
      • 자바 API (4)
      • 자바 잡지식 (30)
      • 자바 디자인 패턴 (21)
      • 톰캣 (Tomcat) (7)
    • 프레임워크 (64)
      • next.js (14)
      • 스프링 프레임워크 (28)
      • 토비의 스프링 (6)
      • 스프링 부트 (3)
      • JPA (Java Persistence API) (5)
      • Nest.js (8)
    • 프론트엔드 (48)
      • 다크모드 (1)
      • 노드 패키지 관리 매니저 (3)
      • CSS (19)
      • Web API (11)
      • tailwind-css (1)
      • React (5)
      • React 새 공식문서 요약 (1)
      • HTML (Markup Language) (5)
    • 자바스크립트 (108)
      • 모던 자바스크립트 (31)
      • 개념 (31)
      • 정규표현식 (5)
      • 코드 스니펫 (1)
      • 라이브러리 (6)
      • 인터뷰 (24)
      • 웹개발자를 위한 자바스크립트의 모든 것 (6)
      • 팁 (2)
    • Typescript (49)
    • 리눅스와 유닉스 (10)
    • Computer Science (1)
      • Compiler (1)
    • IDE (3)
      • VSCODE (1)
      • IntelliJ (2)
    • 세미나 & 컨퍼런스 (1)
    • 용어 (개발용어) (16)
      • 함수형 프로그래밍 용어들 (1)
    • ORM (2)
      • Prisma (2)
    • NODEJS (2)
    • cypress (1)
    • 리액트 네이티브 (React Native) (31)
    • 러스트 (Rust) (15)
    • 코틀린 (Kotlin) (4)
      • 자바에서 코틀린으로 (4)
    • 정규표현식 (3)
    • 구글 애널리틱스 (GA) (1)
    • SEO (2)
    • UML (2)
    • 맛탐험 (2)
    • 리팩토링 (1)
    • 서평 (2)
    • 소프트웨어 공학 (18)
      • 테스팅 (16)
      • 개발 프로세스 (1)
    • 교육학 (1)
    • 삶의 지혜, 통찰 (1)
    • Chat GPT (2)
    • 쉘스크립트 (1)
    • 컴파일 (2)
    • Dart (12)
    • 코드팩토리의 플러터 프로그래밍 (4)
    • 플러터 (17)
    • 안드로이드 스튜디오 (1)
    • 윈도우즈 (1)
    • 잡다한 백엔드 지식 (1)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Next.js
  • 참조 해제
  • 자료구조
  • 프로그래머의 뇌
  • item7
  • rust
  • 자바
  • 자바 검증
  • 디자인패턴
  • 슬로우 쿼리
  • 싱글턴
  • 자바 디자인패턴
  • 싱글톤 패턴
  • 추상 팩터리 패턴
  • Javadoc 자바독 자바주석 주석 Comment
  • 이펙티브자바
  • 플라이웨이트패턴
  • 메이븐 라이프사이클
  • 러스트
  • Pre-rendering
  • serverless computing
  • next js app
  • 빈 검증
  • 서버리스 컴퓨팅
  • Java
  • 작업기억공간
  • 느린 쿼리
  • 팩터리 메서드 패턴
  • MSSQL
  • 이펙티브 자바
  • bean Validation
  • 자바스크립트
  • 싱글톤
  • 이펙티브 자바 item9
  • 객체복사
  • 메이븐 페이즈
  • 자바스크립트 인터뷰
  • item9
  • 토비의 스프링
  • try-with-resources
  • 자바스크립트 면접
  • prerendering
  • pnpm
  • 메이븐 골
  • 알고리즘
  • 스프링 검증
  • item8
  • NEXT JS
  • 도커공식문서
  • 외래키 제약조건

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jake Seo

제이크서 개발 블로그

LLM 개발 일기

#1, LLM 이란?

2025. 10. 19. 13:44

LLM이란?

picture 5

  • 대규모 언어 모델 (Large Language Model)
  • 심층 신경망 모델 (Deep Neural Network)
    • 여러개의 층으로 복잡한 관계까지 학습 가능한 모델
      • 얕은 모델은 단순 규칙만 학습 가능
    • 입력 -> 특징 추출 -> 출력으로 변환하는 구조
  • 대용량의 텍스트 데이터로 훈련
    • 인터넷에 공개된 전체 텍스트의 상당 부분
  • 사람의 텍스트를
    • 이해
    • 생성
    • 응답

대규모란 어떤 뜻인가?

  • 모델 파라미터의 크기와 대량의 훈련 데이터셋을 의미
  • 수백 또는 수천억 개의 파라미터
  • 모델 파라미터는 시퀀스의 다음 단어를 예측하도록 훈련하는 과정에서 조정되는 신경망의 가중치 (weight)

학습에서 머신러닝과 딥러닝의 차이

  • 머신러닝: 사람이 직접 특성을 추출
  • 딥러닝: 모델이 자동으로 학습

머신러닝에서는 사람이 직접 특성을 설계(feature engineering) 해야 하고, 딥러닝에서는 신경망이 데이터로부터 유용한 특성을 자동으로 학습(representation learning) 한다.

오해하면 안되는 부분

  • 모델이 특성을 자동으로 학습하긴 하지만, 사람이 여전히 모델 구조, 데이터 전처리, 하이퍼파라미터를 설계해야 함
  • 즉, "수동 특성(feature engineering)"은 줄었지만 "모델 설계(model engineering)"는 여전히 인간의 몫

LLM 애플리케이션의 쓸모

  • 텍스트 분석과 생성에 관련된 거의 모든 작업을 자동화하는데 매우 유용함

LLM 구축 단계

picture 6

  • 사전 훈련과 미세 튜닝으로 구성됨
    • 사전 훈련: LLM 모델을 대규모 데이터셋에서 훈련시켜 언어에 대한 폭넓은 이해를 쌓는 초기 단계
    • 미세 튜닝: 사전 훈련된 파운데이션 모델을 개선

1단계: 사전 훈련

  • 원시 텍스트인 대규모 텍스트 말뭉치(corpus)에서 훈련
    • '원시'란 데이터에 레이블 정보가 없는 일반적인 텍스트
    • ML의 지도 학습에선 정답(레이블)이 필요하지만, LLM은 입력 데이터로부터 레이블을 생성하는 자기 지도 학습(self-supervised learning)을 사용
  • 첫번째 훈련 단계를 사전 훈련(pretraining) 이라 부름
  • 이렇게 훈련된 모델을 베이스 모델(base model) 혹은 파운데이션 모델(foundation model) 이라 부름

사전 훈련만 끝나도, 입력 데이터를 기반으로 다양한 작업을 해결 가능.
ex. 텍스트 훈련, 제로-샷, 퓨-샷

2단계: 미세 튜닝

  • 이번엔 원시 텍스트가 아닌 레이블이 있는 데이터를 이용해 LLM을 추가적으로 훈련 가능
    • 이것을 미세 튜닝이라고 함
  • 인기 있는 미세 튜닝의 종류
    • 지시 미세 튜닝 (instruction fine-tuning)
      • 지시와 정답 쌍 (ex. 번역하기 위한 쿼리와 번역된 텍스트)
    • 분류 미세 튜닝 (classification fine-tuning)
      • ex. 스팸인 메일 / 스팸이 아닌 메일

트랜스포머 구조

picture 7

  • 대부분의 최신 LLM은 Attention is All You Need 에서 소개된 심층 신경망 구조인 트랜스포머(transformer)를 기반으로 함
  • 트랜스포머는 크게 인코더(encoder)와 디코더(decoder)로 구성됨
    • 인코더(encoder): 입력 문장의 각 토큰을 임베딩(숫자 벡터)로 바꾼 뒤, 위치 정보를 더해서 여러 층(layer)을 통과시키며 문장 전체의 표현을 만듦
    • 디코더(decoder): 이전에 생성한 단어들을 입력으로 받아 다음 단어를 하나씩 예측. 단, 미래 단어는 못보게 막아둠

셀프 어텐션이란?

  • 인코더와 디코더는 셀프 어텐션(Self-Attention) 매커니즘으로 연결된 많은 층으로 구성되어 있음
    • 모델이 시퀀스에 있는 서로 다른 단어 또는 토큰(token)에 상대적인 가중치를 부여할 수 있음
    • 모델이 입력데이터에서 긴 범위에 걸친 의존성과 맥락관계를 포착하여 일관성 있고 맥락에 맞는 출력을 생성할 수 있음

셀프 어텐션의 동작 방식

  • 각 단어가 모든 단어를 훑어보고, 지금은 이 단어에 얼마나 주목해야 하는지 가중치(중요도)를 계산
  • 가중치로 다른 단어들의 정보를 모아서(가중 합) 그 단어의 새로운 표현을 만듦
  • 장점
    • 모든 단어가 서로 직접 소통하므로, 멀리 떨어진 관계(장거리 의존성)을 바로 포착 가능
    • 계산을 병렬화 할 수 있어서 GPU 에서 훨씬 빠르게 학습 가능
  • Multi-Head Attention 이란?
    • 여러명의 팀원이 다양한 관점으로 동시에 문장을 검토하는 것
    • 문법, 의미, 관계 같은 다양한 관점으로 바라보고 그 결과를 모아서 더 풍부한 표현을 만듦

BERT와 GPT

  • BERT: 인코더 모듈을 기반으로 함
    • 주어진 문장에서 마스킹 되거나 가려진 단어를 예측하는 마스킹 단어 예측에 특화
    • 감성 분석과 문서 분류를 포함해 텍스트 분류 작업에 강점을 가짐
  • GPT: 디코더 모듈을 기반으로 함
    • 텍스트 생성 특화

트랜스포머가 나온 맥락

  • 기존 RNN의 한계 극복
    • 병럴 처리: 한 문장을 순차적으로 훑지 않고, 한번에 모든 단어의 관계를 계산하므로 학습 속도가 빠름
    • 장거리 의존성 처리: 멀리 있는 단어끼리도 직접 연결되므로 복잡한 문장 구조를 더 잘 포착
    • 확장성 문제: 문장이 매우 길어지면 모든 단어 쌍을 계산하므로 비용이 커지는 단점(그러나 이후 연구들이 이를 개선)

GPT 구조

  • Improving Language Understanding by Generative Pre-Training 에서 소개
  • Training language models to follow instructiosn with human feedback

자기지도 학습

picture 8

  • 방대한 텍스트 데이터에서 다음 단어를 모델이 예측해야 할 레이블로 사용 가능 (Autoregressive model)
  • 이전 출력을 입력으로 사용해 미래를 예측함
  • 이전 시퀀스를 기반으로 다음 단어를 선택하는 식으로 출력 텍스트의 일관성을 향상

GPT 구현 단계

picture 9

저작자표시 비영리 (새창열림)
    Jake Seo
    Jake Seo
    ✔ 댓글로 틀린 부분을 지적해주시면 기분 나빠하지 않고 수정합니다. ✔ 많은 퇴고를 거친 글이 좋은 글이 된다고 생각합니다. ✔ 간결하고 명료하게 사람들을 이해 시키는 것을 목표로 합니다.

    티스토리툴바