검산
어레이가 내놓은 값이 손으로 곱한 값과 같은지 본다. 칸의 작은 글자는 왼쪽 위가 PE에 앉은 가중치 w, 오른쪽 위가 지금 지나가는 활성화 x, 가운데가 그 PE를 지난 부분합이다.
본문과 대조 ()
세 보기 모두에서 어레이 출력이 손으로 곱한 X·W 와 같은지, 처음 상태(넷째 박자)의 활성 PE·누적 MAC과 TPU v1 크기의 이용률이 2회차 4절 본문·그림과 같은지 본다.
| 항목 | 계산 | 기대 | |
TPU v1 크기로 옮기면
| 토큰 수 M | 박자 수 M+K+N−2 | 곱셈누산 | 이용률 |
M = 1(배치 1 디코딩)이면 박자 대부분이 채우고 비우는 데 쓰인다. 토큰이 수천 개인 프리필에서는 그 비용이 묻혀 90% 가까이 오른다. 본문 4절이 「배치가 작거나 행렬이 가늘고 길면(디코딩!) 활용률이 크게 떨어진다」고 한 것을 박자 수로 센 것이다.
이 장난감이 단순화한 것
- 타일 하나만 흘린다. 실제 칩은 다음 타일을 바로 뒤에 이어 넣어 채움·비움 시간을 겹친다. 그래도 M이 작으면 가중치 한 개를 겨우 M번 쓰고 버리므로 이득이 작다.
- 가중치를 PE에 싣는 시간은 세지 않았다.
- 데이터 흐름은 가중치 고정(weight-stationary) 한 가지만 보였다. 출력 고정 등 다른 흐름도 있다.
- 값은 검산하기 쉽게 작은 정수로 골랐다. 실제 TPU v1은 8비트 정수 곱셈누산을 한다.