같은 “구조도”라도 무엇의 구조인지 먼저 정한다
질문을 보낸 뒤 답이 오는 서비스를 그리면 사용자 화면, API, 검색 도구, 데이터베이스, 모델 서버가 나온다. 모델 구조도는 범위가 다르다. 토큰 ID가 벡터로 바뀌고, 여러 계산 층을 지나며, 다음 토큰 점수로 변하는 경로를 그린다. 서버 수나 승인 담당자는 이 그림의 대상이 아니다.
이번 글은 특정 상용 모델의 비공개 내부를 관찰한 보고서가 아니다. 공개 논문과 공식 문서에서 확인할 수 있는 Transformer 계열의 공통 계산 블록을 설명용으로 단순화한다. 실제 모델은 디코더 전용, 인코더 전용, 인코더–디코더, 혼합 전문가 등 구현 차이가 있으므로 구조 이름과 자료 버전을 그림에 함께 적는다.
디코더 전용 모델은 이전 토큰에서 다음 토큰을 계산한다
문장 생성에서는 이미 주어진 토큰과 앞서 생성한 토큰을 입력으로 넣는다. 각 위치의 토큰은 임베딩 벡터가 되고 위치 정보와 결합된다. 여러 디코더 층은 가려진 자기주의와 위치별 피드포워드 계산을 반복한다. 마지막 표현은 어휘 크기의 점수로 투영되고 소프트맥스를 거쳐 다음 토큰 확률이 된다.
“가려진”이라는 말은 현재 위치가 미래 토큰을 미리 읽지 못하도록 연결을 제한한다는 뜻이다. 이 구조도는 모델이 문장을 한 번에 완성한다고 그리지 않는다. 한 시점의 다음 토큰 분포를 계산하고, 선택된 토큰을 입력 끝에 붙여 같은 과정을 반복하는 생성 절차와 모델 한 번의 계산을 구분한다.
블록 하나를 읽을 때 입력과 출력 모양을 붙인다
구조도의 상자에는 이름만 적기보다 값의 모양을 표시한다. 예를 들어 입력 표현 X가 [토큰 수, 특징 수]라면 자기주의와 피드포워드 뒤에도 잔차 연결을 더할 수 있도록 같은 마지막 특징 크기를 유지한다. 원 논문의 기본 Transformer는 d_model=512를 사용했지만, 이 수치를 모든 LLM의 고정값처럼 쓰면 안 된다.
배치 축을 포함하면 [배치, 토큰, 특징]이 된다. 구조도에서 축 순서는 구현마다 다를 수 있으므로 범례에 적는다. 상자 양쪽의 모양이 맞지 않으면 투영, 펼치기, 축 교환 같은 중간 연산이 빠졌을 가능성이 있다. 도형 이름보다 입출력 모양의 연속성이 오류를 더 잘 드러낸다.
한 층 안에는 서로 다른 두 계산이 이어진다
원 Transformer의 인코더 층은 다중 머리 자기주의와 위치별 피드포워드 네트워크를 이어 놓고, 각 부분에 잔차 연결과 층 정규화를 사용했다. 디코더에는 미래 위치를 가리는 자기주의가 들어가며 인코더–디코더 모델은 인코더 출력도 함께 읽는 교차주의를 둔다. 논문 그림의 한 상자를 “생각 단계”라고 부르면 계산 의미가 흐려진다.
자기주의는 위치 사이 정보를 섞고, 피드포워드는 각 위치의 벡터에 같은 두 선형 변환과 비선형 함수를 적용한다. 잔차 연결은 부분 계산의 입력을 출력에 더한다. 정규화의 정확한 배치는 모델 계열에 따라 달라질 수 있다. 구조도에는 공통 기능과 구현별 차이를 색이나 주석으로 분리한다.
| 구성 | 주된 역할 | 모양 확인 |
|---|---|---|
| 자기주의 | 토큰 위치 사이 정보 결합 | [B,T,D] → [B,T,D] |
| 피드포워드 | 각 위치의 특징 변환 | D → Dff → D |
| 잔차 연결 | 부분 입력과 출력 합산 | 더하는 두 모양 동일 |
| 층 정규화 | 특징값 규모 조정 | 정규화 축 확인 |
세 모델 계열은 입력과 출력 목적이 다르다
인코더 전용 구조는 문장 전체의 양쪽 문맥을 함께 읽고 분류나 토큰별 판정에 사용할 표현을 만든다. 디코더 전용 구조는 앞 토큰만 이용해 다음 토큰을 생성한다. 인코더–디코더 구조는 원문을 인코더로 읽고, 디코더가 원문 표현과 이전 출력을 함께 사용해 번역이나 변환 결과를 만든다.
이 구분은 제품 이름을 보고 추측하지 않는다. 공개 모델 카드와 구성 파일에서 실제 아키텍처를 확인한다. 같은 Transformer라는 이름 아래에서도 마스크, 정규화 위치, 위치 표현, 피드포워드 종류, 전문가 라우팅이 다를 수 있다. 한 구조도를 모든 모델에 덮어씌우지 않는다.
| 계열 | 주 입력 관계 | 대표 출력 |
|---|---|---|
| 인코더 전용 | 문장 안의 양쪽 문맥 | 분류·토큰 표현 |
| 디코더 전용 | 현재보다 앞선 토큰 | 다음 토큰 점수 |
| 인코더–디코더 | 원문 표현+이전 출력 | 번역·요약 토큰 |
LLM 요청문에는 범위와 근거 수준을 먼저 적는다
모델 이름만 주고 내부 구조도를 요구하면 공개되지 않은 층 수나 차원을 그럴듯하게 채울 수 있다. 공개 구성 파일, 논문 표, 공식 모델 카드에서 확인한 항목만 확정값으로 쓰게 한다. 확인되지 않은 값은 물음표나 “자료 없음”으로 남기고 일반 Transformer 예시와 대상 모델 정보를 구분한다.
노드에는 계산 이름, 입력 모양, 출력 모양, 반복 횟수의 출처를 넣는다. 화살표에는 전달되는 값의 이름을 적는다. “이해한다”, “생각한다” 같은 행위 표현 대신 임베딩 조회, 선형 투영, 가중합, 정규화처럼 확인 가능한 계산을 쓴다. 결과에는 출처 대응표도 함께 요구한다.
잘못된 구조도는 한 화살표에 너무 많은 뜻을 넣는다
수정 전 그림은 “질문→AI가 생각함→정답” 세 상자만 두었다. 토큰화, 반복 층, 출력 점수, 토큰 선택이 보이지 않고 서비스 요청과 모델 계산이 섞였다. 또한 화살표가 정보 이동, 시간 순서, 인과를 동시에 뜻해 독자가 무엇을 읽어야 할지 알 수 없었다.
수정 후에는 한 번의 순전파 범위를 정하고, 각 화살표를 텐서 전달로 통일했다. 토큰 선택과 반복 생성은 구조도 아래 별도 순환으로 표시했다. 실제 모델마다 다른 값은 점선 테두리와 “구성 확인” 주석을 붙였다. 구조를 단순화하되 핵심 계산 경로와 불확실성은 보존했다.
구조도만으로 모델의 답변 이유를 단정하지 않는다
구조도는 계산 부품과 값의 이동을 보여 준다. 특정 답변이 나온 이유, 한 층이 담당하는 개념, 모델이 가진 지식의 위치까지 직접 증명하지 않는다. 이런 질문은 활성값·기여도·인과 개입 같은 별도 분석과 반복 검증이 필요하며 13부에서 해석 한계를 함께 다룬다.
또 공개 논문의 구조와 실제 서비스 모델은 버전이 다를 수 있다. 제공사가 세부 구조를 공개하지 않았다면 일반적인 예시라고 적는다. 구조도는 공개된 계산 명세를 관계 중심으로 다시 그린 설명 도구이며, 모델 내부를 직접 촬영한 자료가 아니다.
| 구조도로 확인 | 추가 분석이 필요 |
|---|---|
| 계산 블록의 순서 | 특정 답변의 원인 |
| 입출력 텐서 모양 | 개념이 저장된 정확한 위치 |
| 반복 층과 연결 | 개별 뉴런의 의미 |
| 공개 설정값 | 비공개 모델의 실제 구현 |
완료 기준은 경로·모양·근거가 서로 맞는가다
최종 검수에서는 그림 범위, 모델 계열, 자료 버전, 입력과 출력, 반복 횟수, 각 블록의 텐서 모양을 확인한다. 잔차 연결의 두 값이 같은 모양인지, 디코더 마스크가 미래 위치를 제한하는지, 최종 출력이 확률인지 점수인지 표현도 점검한다.
그림의 상자 수가 많다고 정확한 구조도가 되는 것은 아니다. 독자가 입력 하나를 골라 출력까지 선을 따라갈 수 있고, 각 숫자를 원자료에서 다시 찾을 수 있어야 한다. 확인되지 않은 값은 남겨 두고, 모델 서비스 운영 흐름은 별도 시스템 구성도로 분리한다.
| 검사 | 통과 기준 | 미통과 행동 |
|---|---|---|
| 범위 | 모델 계산과 서비스 운영 분리 | 그림 분할 |
| 모양 | 블록 전후 축·크기 일치 | 중간 연산 추가 |
| 계열 | 인코더·디코더 유형 명시 | 모델 자료 확인 |
| 근거 | 숫자마다 자료 위치 있음 | 미확인 표기 |
| 해석 | 계산 구조 이상의 주장을 제한 | 캡션 보완 |
복사해서 쓸 수 있는 LLM 요청문
아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.
다음 공개 자료를 바탕으로 LLM 모델 구조도를 작성해 줘. 1. 서비스 화면·API·검색 도구는 제외하고 모델 계산 범위만 그린다. 2. 모델 계열을 인코더 전용, 디코더 전용, 인코더–디코더 중에서 근거와 함께 판정한다. 3. 토큰 ID, 임베딩, 반복 층, 출력 점수와 확률을 서로 다른 노드로 둔다. 4. 각 노드에 입력·출력 텐서 모양과 축 뜻을 적고, 반복 횟수와 차원은 출처가 있을 때만 확정한다. 5. 확인하지 못한 값은 추정하지 말고 “자료 없음”으로 남긴다. 6. 자기주의, 피드포워드, 잔차 연결, 정규화의 기능을 한 문장씩 설명한다. 7. 화살표는 텐서 전달만 뜻하게 하고, 생성 반복은 별도 순환으로 표시한다. 8. 구조도 아래에 ‘확정값 / 일반 Transformer 예시 / 미확인’ 출처 대응표를 붙인다. [공개 논문·모델 카드·구성 파일] …
직접 실습하고 결과를 읽기
이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.
자료와 출처
아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.