제43회 · LLM과 함께 배우는 생각그림

배치·토큰·특징 축을 텐서로 펼쳐 보기

숫자 덩어리의 각 축이 무엇을 세는지 붙이고, 자르기·축 교환·모양 바꾸기에서 값의 대응이 보존되는지 확인합니다.

축차원데이터 형태

행렬에 배치 축을 더하면 세 축 텐서가 된다

문장 하나의 토큰 표현이 [토큰, 특징] 행렬이라면 여러 문장을 함께 처리할 때 [배치, 토큰, 특징] 배열로 쌓을 수 있다. 텐서는 이런 다차원 수치 배열을 가리킨다. 2×3×4 텐서는 문장 2개, 문장당 토큰 자리 3개, 자리당 특징 4개인 교육용 예시로 읽을 수 있다.

축 수를 텐서의 랭크라고 부르기도 한다. 이 랭크는 행렬의 선형대수학적 랭크와 다른 뜻이다. 혼동을 피하려면 “축 수 3”과 “모양 [2,3,4]”를 함께 쓴다. PyTorch 공식 안내도 텐서의 핵심 속성으로 shape, dtype, device를 제시한다.

생각그림 1 · 세 축을 겹친 텐서도표를 좌우로 움직여 전체 내용을 확인하세요.
배치 0배치 1배치 축특징 축 →토큰 축 ↓
겹친 판은 배치, 각 판의 행은 토큰, 열은 특징을 나타냅니다. 이 배치는 설명용 모형입니다.

모양은 축 이름과 한 쌍으로 기록한다

[2,3,4]만 보면 각 숫자가 무엇을 뜻하는지 알 수 없다. axis0=배치, axis1=토큰, axis2=특징이라고 적는다. 어떤 라이브러리나 함수는 [토큰, 배치, 특징] 순서를 받을 수 있으므로 코드와 그림의 축 순서를 맞춘다. 차원 이름을 생략하면 transpose 뒤에 잘못된 축을 더하거나 평균낼 수 있다.

데이터형도 값 해석에 영향을 준다. 토큰 ID는 정수, 활성값과 가중치는 부동소수점, 마스크는 불 값이나 특별한 수치로 표현할 수 있다. 그림마다 dtype과 device를 모두 크게 표시할 필요는 없지만, 실제 계산을 재현할 기록에는 남긴다.

생각그림 2 · 모양 숫자에 축 이름을 붙인다
축크기이 예시의 뜻대표 인덱스
02배치의 문장 수b
13문장 안 토큰 자리t
24토큰별 특징 수d
전체24저장된 원소 수2×3×4
축 이름을 붙이면 X[b,t,d]가 어느 문장의 어느 토큰 특징인지 찾을 수 있습니다.

슬라이스는 한 축을 고정해 단면을 꺼낸다

X[0,:,:]는 첫 번째 문장의 모든 토큰과 특징을 꺼내 3×4 행렬로 만든다. X[:,1,:]는 모든 문장의 두 번째 토큰 자리를 꺼내 2×4 행렬로 만든다. X[:,:,2]는 세 번째 특징만 골라 2×3 행렬로 볼 수 있다. 어떤 축을 고정했는지 캡션에 적는다.

단면을 여러 개 나란히 그리면 큰 텐서를 작은 배수로 읽을 수 있다. 배치마다 같은 색 범위를 써야 값 비교가 가능하다. 패딩된 토큰 자리나 마스크된 위치는 실제 토큰과 다른 무늬로 표시한다. 값이 0이라는 사실과 계산에서 제외된다는 규칙을 구분한다.

생각그림 3 · 세 가지 단면의 모양
선택고정한 축결과 모양읽는 질문
X[0,:,:]배치 0[3,4]첫 문장의 전체 표현
X[:,1,:]토큰 1[2,4]두 문장의 같은 자리
X[:,:,2]특징 2[2,3]한 특징의 전체 분포
슬라이스 표기는 어떤 축이 사라지고 어떤 축이 남는지 정확히 보여 줍니다.

reshape는 값 개수는 보존하지만 이웃 관계를 바꿀 수 있다

2×3×4 텐서에는 원소가 24개 있다. [6,4]로 reshape하면 배치와 토큰 축을 합쳐 6개 위치로 볼 수 있다. 원소 수 24는 보존되지만 “같은 문장” 경계가 평면에서 사라진다. [4,6]도 원소 수는 같지만 축 뜻과 값 순서는 달라질 수 있다.

reshape 전에 어떤 축을 합치거나 나눌지 쓰고, 이후 인덱스가 원래 X[b,t,d]의 어디에서 왔는지 예를 든다. 메모리 배치가 연속인지와 라이브러리 동작도 확인한다. 모양만 같다고 의미가 같아지는 것은 아니다.

생각그림 4 · 모양 바꾸기에서 보존되는 것과 달라지는 것
보존전체 원소 수 24
바뀔 수 있음축 이름과 이웃 관계
검사새 인덱스→원 인덱스 대응
위험모양만 맞춰 의미를 추정
reshape는 원소 수를 보존하지만 축의 의미를 자동으로 보존하지 않습니다.

transpose는 축 순서를 바꾸며 숫자 내용은 그대로 옮긴다

X의 축이 [배치, 토큰, 특징]일 때 transpose(0,1)는 [토큰, 배치, 특징] 순서로 바꾼다. 같은 값 X[b,t,d]가 새 배열에서는 X′[t,b,d] 위치에 놓인다. 축 순서를 바꾼 뒤 그림 라벨도 함께 바꿔야 한다.

행렬 곱이나 다중 머리 주의 계산에서는 원하는 축을 인접하게 만들기 위해 축을 교환한다. 예를 들어 [B,T,H,Dh]를 [B,H,T,Dh]로 바꿔 머리별 계산을 할 수 있다. H×Dh=D인지는 모델 설정에서 확인한다. 이 네 축 구조는 특정 값 관찰이 아니라 공개 계산 형태를 설명하는 모형이다.

생각그림 5 · 축 교환 전후 대응
X [B,T,D]
transpose(0,1)
X′ [T,B,D]
X[b,t,d]=X′[t,b,d]
축 순서가 바뀌어도 대응 인덱스를 추적하면 같은 값이 어디로 이동했는지 확인할 수 있습니다.

패딩과 마스크는 값 그림과 계산 규칙을 함께 요구한다

길이가 다른 문장을 한 배치에 넣으려면 짧은 문장 뒤에 패딩 토큰 자리를 둘 수 있다. 텐서 모양은 같아지지만 패딩 위치가 실제 문맥처럼 주의 계산에 참여하면 결과가 달라진다. 마스크는 어느 위치를 계산에서 제외하거나 점수를 매우 작게 만들지 나타낸다.

텐서 그림에서 패딩을 값 0으로만 칠하면 실제 토큰의 0과 구분되지 않는다. 빗금, 테두리, “PAD” 라벨을 사용하고 마스크 배열을 별도 작은 그림으로 둔다. 마스크 모양이 입력과 어떻게 방송되는지도 확인한다. NumPy의 브로드캐스팅 규칙은 끝쪽 축부터 크기가 같거나 한쪽이 1인지 비교한다.

생각그림 6 · 문장 길이와 패딩 마스크
배치토큰 자리유효 길이마스크
문장 AA1 A2 A3 A441 1 1 1
문장 BB1 B2 PAD PAD21 1 0 0
그림 규칙PAD는 빗금0값과 구분
같은 직사각형 배치를 만들더라도 유효 토큰과 패딩 위치를 별도 마스크로 표시합니다.

LLM 요청문에는 축 사전과 변환 이력을 준다

텐서 모양만 주고 그림을 요구하면 모델이 축 이름을 임의로 붙일 수 있다. 축 사전, dtype, 패딩 규칙, 현재 연산, 변환 전후 모양을 제공한다. 각 그림은 전체 텐서, 선택한 단면, 축 교환 전후 중 하나의 질문만 담당하게 한다.

값이 너무 많으면 일부를 임의로 고르지 말고 표본 규칙을 적는다. 예를 들어 첫 배치, 첫 여덟 토큰, 특징 네 개를 선택했다고 밝힌다. 실제 모델 값이면 체크포인트, 층, 입력 문장, 토크나이저 버전, 추출 코드를 기록한다. 준비된 수치라면 캡션에 교육용이라고 쓴다.

생각그림 7 · 텐서 시각화 요청의 필수 입력
모양·축 사전
dtype·마스크
변환 이력
단면 선택 규칙
원 인덱스 대응표
축과 변환 이력이 있어야 그림의 한 셀을 원래 텐서 인덱스로 되돌릴 수 있습니다.

잘못된 텐서 그림은 원근감으로 값을 가린다

수정 전 그림은 3차원 상자를 기울여 그리면서 뒤쪽 판의 글자와 값이 앞 판에 가렸다. 독자는 깊이 축의 순서도 알 수 없었다. 전체 구조는 축 설명용 선 그림으로 남기고 실제 값은 배치별 2차원 단면 세 장으로 분리했다.

또 [B,T,D]와 [B,H,T,Dh]를 모두 “3차원 텐서”라고 적은 오류가 있었다. 뒤 배열은 축이 네 개다. 축 수, 모양, 축 이름을 함께 고치고 H×Dh=D 관계를 주석에 넣었다. 시각적인 입체감보다 정확한 인덱스 대응을 우선했다.

생각그림 8 · 텐서 시각화의 수정 전후
수정 전입체 상자 뒤쪽 값이 가림
수정전체 축 그림+배치별 단면
수정 전네 축 배열을 3차원으로 표기
수정축 수 4·[B,H,T,Dh] 명시
값을 비교할 때는 겹친 입체 상자보다 같은 크기의 2차원 단면이 더 정확합니다.

완료 기준은 모든 축과 인덱스가 왕복되는가다

최종 검수에서는 축 수와 모양, 축 이름, 원소 수, dtype, 패딩과 마스크, 슬라이스, reshape, transpose를 확인한다. 변환 전 인덱스 하나를 골라 변환 후 위치를 찾고 값이 같은지 시험한다. 방송 연산은 맞춰지는 축과 복제되는 축을 표시한다.

텐서 시각화는 큰 숫자 배열을 이해할 수 있는 단면으로 나눈다. 화려한 입체 모형이 목적은 아니다. 독자가 그림의 셀에서 원래 X[b,t,d]와 변환 기록으로 돌아갈 수 있고, 패딩과 실제 0을 구분할 수 있을 때 검수가 끝난다.

생각그림 9 · 텐서 시각화 공개 전 검수표
검사통과 기준미통과 행동
축수·이름·순서 일치축 사전 수정
원소reshape 전후 개수 동일모양 계산 재검토
인덱스전후 위치와 값 추적 가능대응표 추가
마스크PAD·실제 0 구분무늬·라벨 추가
단면선택 규칙·공통 범위 명시캡션 보완
축 이름과 인덱스가 변환 전후를 왕복하면 텐서 그림의 의미를 재현할 수 있습니다.

복사해서 쓸 수 있는 LLM 요청문

아래 요청문은 교육용 예시다. 원문을 함께 제공하고, 모델이 빈칸을 추측하지 않도록 금지 조건을 넣었다. 결과를 받으면 원문 문장과 노드·선의 대응을 사람이 다시 확인한다.

다음 텐서를 읽기 위한 시각화 명세를 만들어 줘.
1. 텐서의 축 수, 모양, axis별 이름과 크기, dtype, device를 표로 적는다.
2. X[b,t,d]처럼 각 인덱스가 가리키는 대상을 정의한다.
3. 전체 구조 그림과 실제 값 단면을 분리하고, 단면 선택 규칙을 명시한다.
4. slice·reshape·transpose 전후 모양과 원 인덱스→새 인덱스 대응 예시를 적는다.
5. reshape는 원소 수 보존을 계산하고, transpose는 축 라벨을 함께 바꾼다.
6. 패딩·마스크·결측·실제 0을 서로 다른 표기로 구분한다.
7. broadcasting은 끝쪽 축부터 크기가 같거나 1인지 검사한다.
8. 실제 모델에서 추출하지 않은 값은 교육용 예시라고 표시하고 제공하지 않은 축 의미를 추정하지 않는다.

[텐서 모양·값·변환 코드] …
생각그림 10 · 요청문에서 결과와 검토까지
원문 붙이기
도표 목적 명시
추정 금지
문장별 대조
요청문은 도표를 자동으로 진실로 만들지 않습니다. 원문과 결과를 왕복해 확인하는 절차가 핵심입니다.

직접 실습하고 결과를 읽기

이 실습은 브라우저 안에 준비한 교육용 자료만 사용한다. 외부 LLM을 호출하거나 실제 기관 자료를 조회하지 않는다. 입력을 바꾸어 결과가 어떻게 달라지는지 보고, 설명과 맞지 않는 결과가 나오면 어떤 정보가 빠졌는지 적어 본다.

세 축 크기를 바꾸어 원소 수와 단면 모양을 확인하세요.

자료와 출처

아래 자료는 이번 글의 정의와 표기법을 확인하는 데 사용했다. 생각그림과 사례 문장은 원자료를 복제하지 않고 이 글의 교육 목적에 맞게 새로 구성했다.