파이썬으로 처음부터 LLM용 디코더 전용 트랜스포머 작성하기
Google/DeepMind
OpenAI
Meta
일련의 기사 저자는 PyTorch 프레임워크를 사용하여 소규모 디코더 전용 LLM(대규모 언어 모델)을 위한 트랜스포머 블록의 구현을 상세히 설명합니다. 포함된 구성 요소: 마스크된 멀티 헤드 어텐션, GELU를 사용한 피드 포워드 네트워크, 정규화 레이어, 잔차 연결. 이 기사는 원래 아키텍처와의 차이점을 설명합니다: 학습 안정성을 위해 사후 정규화 대신 사전 정규화(Pre-LN)가 사용됩니다.
작성자 Vladimir는 라이선스 텍스트에 대한 워터마킹 작업의 예시를 들어, 디코더 전용 LLM을 위한 트랜스포머 블록을 구현합니다. 그는 트랜스포머가 Google 논문 "Attention Is All You Need"의 아키텍처로, 어텐션 메커니즘을 사용하여 시퀀스를 병렬로 처리한다고 설명합니다. 멀티 헤드 어텐션은 Q, K, V 세 개의 투영 행렬을 기반으로 합니다. 첫 번째 단계에서는 토큰 유사도(어텐션 행렬)가 계산되고, 두 번째 단계에서는 발견된 가중치에 따라 토큰 콘텐츠가 혼합됩니다. 효율성을 위해 모든 어텐션 헤드는 단일 대규모 선형 투영을 통해 구현됩니다. 어텐션 후에는 GELU 활성화 함수와 드롭아웃을 적용한 피드포워드 네트워크가 적용됩니다. 트랜스포머 구축에는 정규화(Pre-LN)와 잔차 연결이 포함됩니다. 또한 디코더에는 인과적 마스크가 사용됩니다. 전반적으로 이 블록은 LLM 조립, 학습 및 텍스트 생성에 사용될 준비가 되었습니다.
출처: Habr — хаб NLP —
원문
