728x90
반응형
2.3 언어 모델 만들기
2.3.1 라이브러리 설명
- torch : 텐서 연산과 자동 미분기능 등을 제공해 딥러닝 모델 구현에 필수적인 기능 제공
- torch.nn : 신경망 구축에 필요한 다양한 레이어와 매개변수 관리 기능 제공
- 이를 통해 모델 아키텍처를 정의하고 매개변수를 초기화하며, 순전파(forward pass)를 구현할 수 있다
2.3.2 __init__ 함수
- __init__
- 클래스 인스턴스가생성될 때 자동으로 호출되는 메서드
- 신경망 모델에서는 모델 구조와 필요한 초기설정을 정의함 - super().__init__()
- 부모 클래스의 __init__ 메서드를 호출 → nn.Module의 생성자 호출 - super()
- 여러 클래스를 동시에 상속받을 때 생길 수 있는 복잡한 상황을 관리하기 위함 - num_embedding
- 임베딩할 단어의 총 수 → 임베딩 테이블에 있는 고유한 토큰들의 총 수
→ 임베딩을 수행할 수 있는 최대 인덱스 값
- 인덱스는 0 ~ (num_embeddings - 1) 값을 가질 수 있음 - embedding
- 각 단어를 표현할 벡터의 차원
- 각 토큰의 임베딩 벡터 차원을 나타냄
- 각 토큰은 설정한 차원 수 만큼의 요소를 가진 벡터로 표현됨
2.3.3 forward 메서드
- 모델에 데이터가 전달될 때 호출되어 실제 계산 과정을 담당함
- __init__에서 설정한 레이어와 연산을 사용해 입력 데이터를 출력 데이터로 변환함
- 모델의 실행부분을 정의하며, 모델 객체가 함수처럼 호출될 때 자동으로 실행됨
2.3.4 generate 메서드
- 모델이 학습한 패턴을 바탕으로 새로운 텍스트를 생성
- 입력된 시작 문자열에 기반해 연속으로 다음 글자를 예측하고 텍스트를 생성함
2.4 Optimizer 추가하기
- 모델 훈련 시, 손실 함수를 이용해 모델의 예측값과 실제 정답 데이터 사이의 차이(손실) 계산
- 손실을 최소화 하기 위해 모델의 매개변수 조정
2.4.1 데이터 GPU로 전달하기
- device = "cuda" if torch.cuda.is_available() else "cpu"
2.4.2 Loss 함수 만들기
- def compute_loss:
- 모델이 제대로 학습하고 있는지 확인
2.4.3 전체 코드 복습
- max_iteration
- 모델이 수행할 최대 반복 횟수 - eval_interval
- 평가를 수행할 간격
2.5 셀프 어텐션 추가하기
- 문자나 단어 사이의 관계를 파악하고, 특정 정보의 중요성을 인식하는 메커니즘
2.5.1 문자들 간에 정보를 주고받는 방식(평균 방식)
2.5.2 행렬곱 연산으로 더 빠르게 정보를 주고받기
https://github.com/wikibook/llm-finetuning/blob/main/chapter2/chapter2_GPT.ipynb
2.5.3 셀프 어텐션이란?
- 입력 시퀀스(문장)내 모든 단어간의 관계를 직접 분석하고 처리
- 각 단어가 다른 모든 단어와 어떻게 상호작용 하는지 계산
- 단어들 간의 유사도를 측정해 연관성이 높은 단어 쌍을 파악
- 문단 내 단어들 사이의 복잡한 연관성을 포착하고 이해
2.5.4 왜 (d_k)^(1/2)로 나눠야 하는가?
- 소프트맥스 함수는 언어 모델이 다음에 올 단어를 결정 데 사용
- (d_k)^(1/2)로 나눠서 스케일링하면 소프트맥스 함수가 여러 위치의 정보를골고루 반영할 수 있게됨
728x90
반응형
'프로그래밍 > LLM' 카테고리의 다른 글
[Day1] 한 권으로 LLM 온라인 스터디 1기 - NLP 이해와 런팟 설치 (0) | 2025.01.24 |
---|---|
[Day0] 한 권으로 LLM 온라인 스터디 1기 - 준비 (0) | 2025.01.24 |