์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
Tensor Processing Unit์ ์ฝ์.
๊ตฌ๊ธ์์ 2016๋ 5์์ ๋ฐํํ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ๋ฅ๋ฌ๋์ฉ ํ๋์จ์ด์ด๋ค. ๋ฒกํฐ/ํ๋ ฌ์ฐ์ฐ์ ๋ณ๋ ฌ์ฒ๋ฆฌ์ ํนํ๋์ด ์์ผ๋ฉฐ ๋์ฌ๋ฒฝ๊ธ์ ์ ์ฑ๋น๋ฅผ ์๋ํ๋ค. ๋น๊ฒฐ์ 8๋นํธ ์ ์ ์ฐ์ฐ์ ํ์ฉํ๋ ๊ฒ์ด๋ค.[1] # ์ด๋ NVIDIA๋ฑ์์๋ ์คํํ์ ์๋ค. ์ฐจ์ด์ ์ด๋ผ๋ฉด, TPU๋ ๋ชจ๋ธ์ ์คํ๋ฟ๋ง ์๋๋ผ ํ์ต ๊ณผ์ ์๋ 8๋นํธ ์ ์ ์ฐ์ฐ์ ํ์ฉํ ๊ฒ์ผ๋ก ์ถ์ ๋๋ค๋ ๊ฒ. (์์ธํ ์ ๋ณด ๊ณต๊ฐ๊ฐ ์๋ ์ํฉ์ด๋ผ ์ ํํ์ง ์์ง๋ง) GPGPU์์ ๋ฅ๋ฌ๋์ ํ์ํ ๊ฒ๋ค๋ง ๋จ๊ธฐ๊ณ ๋๋จธ์ง ๋ค ๋นผ๋ฒ๋ฆฐ ์ค๊ณ์ ๋น์ทํ๋ค๋ ์ถ์ธก๋ ์๋ค. ์ฑ๋ฅ ํญ๋ชฉ์ PCI-E ๋ณ๋ชฉ ๋ฌธ์ ๋ฅผ ์๊ฐํ๋ฉด APU(์ ํํ๋ HSA)๋ NVLINK์ ๊ฐ๊น์ด ๊ตฌ์กฐ๋ฅผ ํฌํจํ๋ ๊ฒ์ผ ์๋ ์๋ค. NVIDIA์ ๊ฒฝ์ฐ์๋ P100๊ณผ ๊ฐ์ ์นฉ์ ์ผ๋ก 16๋นํธ ๋ถ๋์์ซ์ ์ฐ์ฐ์ ์ฌ์ฉํด ๋ชจ๋ธ์ ํ๋ จ์ํค๊ณ , P4/P40๊ณผ ๊ฐ์ ์ ํ์ ํตํด 8๋นํธ ์ ์ ์ฐ์ฐ์ ํ์ฉํด ๋ชจ๋ธ์ ์คํํ๋ ๊ฒ์ ์ด์์ ์ผ๋ก ๋ณด์๋ค. ๊ตฌ๊ธ ์์ง๋์ด ๋ธ๋ก๊ทธ์ ์ํ๋ฉด ์ํ๊ณ ๋ GPU๊ฐ ์๋ TPU์์ผ๋ก ๊ตฌํ๋์ด ์๋ค๊ณ ํ๋ค.
๊ตฌ๊ธ์์ 2016๋ 5์์ ๋ฐํํ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ๋ฅ๋ฌ๋์ฉ ํ๋์จ์ด์ด๋ค. ๋ฒกํฐ/ํ๋ ฌ์ฐ์ฐ์ ๋ณ๋ ฌ์ฒ๋ฆฌ์ ํนํ๋์ด ์์ผ๋ฉฐ ๋์ฌ๋ฒฝ๊ธ์ ์ ์ฑ๋น๋ฅผ ์๋ํ๋ค. ๋น๊ฒฐ์ 8๋นํธ ์ ์ ์ฐ์ฐ์ ํ์ฉํ๋ ๊ฒ์ด๋ค.[1] # ์ด๋ NVIDIA๋ฑ์์๋ ์คํํ์ ์๋ค. ์ฐจ์ด์ ์ด๋ผ๋ฉด, TPU๋ ๋ชจ๋ธ์ ์คํ๋ฟ๋ง ์๋๋ผ ํ์ต ๊ณผ์ ์๋ 8๋นํธ ์ ์ ์ฐ์ฐ์ ํ์ฉํ ๊ฒ์ผ๋ก ์ถ์ ๋๋ค๋ ๊ฒ. (์์ธํ ์ ๋ณด ๊ณต๊ฐ๊ฐ ์๋ ์ํฉ์ด๋ผ ์ ํํ์ง ์์ง๋ง) GPGPU์์ ๋ฅ๋ฌ๋์ ํ์ํ ๊ฒ๋ค๋ง ๋จ๊ธฐ๊ณ ๋๋จธ์ง ๋ค ๋นผ๋ฒ๋ฆฐ ์ค๊ณ์ ๋น์ทํ๋ค๋ ์ถ์ธก๋ ์๋ค. ์ฑ๋ฅ ํญ๋ชฉ์ PCI-E ๋ณ๋ชฉ ๋ฌธ์ ๋ฅผ ์๊ฐํ๋ฉด APU(์ ํํ๋ HSA)๋ NVLINK์ ๊ฐ๊น์ด ๊ตฌ์กฐ๋ฅผ ํฌํจํ๋ ๊ฒ์ผ ์๋ ์๋ค. NVIDIA์ ๊ฒฝ์ฐ์๋ P100๊ณผ ๊ฐ์ ์นฉ์ ์ผ๋ก 16๋นํธ ๋ถ๋์์ซ์ ์ฐ์ฐ์ ์ฌ์ฉํด ๋ชจ๋ธ์ ํ๋ จ์ํค๊ณ , P4/P40๊ณผ ๊ฐ์ ์ ํ์ ํตํด 8๋นํธ ์ ์ ์ฐ์ฐ์ ํ์ฉํด ๋ชจ๋ธ์ ์คํํ๋ ๊ฒ์ ์ด์์ ์ผ๋ก ๋ณด์๋ค. ๊ตฌ๊ธ ์์ง๋์ด ๋ธ๋ก๊ทธ์ ์ํ๋ฉด ์ํ๊ณ ๋ GPU๊ฐ ์๋ TPU์์ผ๋ก ๊ตฌํ๋์ด ์๋ค๊ณ ํ๋ค.
1.1. ํ ์์ ์๋ฏธ[ํธ์ง]
ํ
์ ํญ๋ชฉ ์ฐธ์กฐ.
2. ์ ์ฉ ์ํํธ์จ์ด[ํธ์ง]
TPU๋ฅผ ์ํ ์ํํธ์จ์ด๋ก๋ ๊ตฌ๊ธ์์ ์คํ์์ค๋ก ๊ณต๊ฐํ TensorFlow ๊ณต์ ์น์ฌ์ดํธ๊ฐ ์๋ค. ์คํ ์์ค๋ก ๊ณต๊ฐ๋ ๋ฒ์ ์ TPU๊ฐ ์๋ GPU๋ฅผ ์ํ๊ฒ์ผ๋ก ์ฃผ์์๋ง.
3. ์์ฉํ[ํธ์ง]
์ถ์ ์์ ์์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ TPU๋ฅผ ์ด์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ Google Cloud Platform์ ํตํด Cloud TPU ์๋ ๋ฒ ํ์๋น์ค๋ฅผ ์ด์ฉํ ์ ์๋ค. ๋๋น 6.5$/h
ํ์ฌ ์๋น์๊ฐ ๊ตฌํ ์ ์๋ TPU๋ edge TPU ๊ธฐ๋ฐ์ ์ ํ์ธ ์ฝ๋ ๋ณด๋๋ก[2] ์ผ์ฒดํ ๋ณด๋์์ ๋ถํฐ M.2 PCI-Eํ์ฅ๋ชจ๋๊น์ง ๋ค์ํ ํผํํฐ์ TPU๊ตฌ์ฑ์ ๊ฐ์ถ ์ ํ์ด๋ค ๋ค๋ง ๊ตฌ๊ธ์ด ๋ฐ์ดํฐ์ผํฐ์ฉ์ผ๋ก ์ฐ๋ TPU๊ฐ ์๋ ์ ์ ๋ ฅ ๋ฒ์ ๊ธฐ๋ฐ์ด๋ผ ์ฑ๋ฅ์ ๋ค๋ฅด๋ค. ๋ํ ํ ์ํ๋ก์ฐ๋ฅผ ์ง์ํ๋ค๋๊ฒ ํน์ง.
NVIDIA๋ GeForce 20๋ถํฐ TPU์ ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋ Tensor Core๋ฅผ ๋ด์ฅํ๊ธฐ ์์ํ๋ค. ์ฉ๋๋ ๋ค๋ฆ์๋ ๋ ์ดํธ๋ ์ด์ฑ๊ณผ DLSS ์ํฐ์์ผ๋ฆฌ์ด์ฑ ๋ณด์กฐ์ฉ.
ํ์ฌ ์๋น์๊ฐ ๊ตฌํ ์ ์๋ TPU๋ edge TPU ๊ธฐ๋ฐ์ ์ ํ์ธ ์ฝ๋ ๋ณด๋๋ก[2] ์ผ์ฒดํ ๋ณด๋์์ ๋ถํฐ M.2 PCI-Eํ์ฅ๋ชจ๋๊น์ง ๋ค์ํ ํผํํฐ์ TPU๊ตฌ์ฑ์ ๊ฐ์ถ ์ ํ์ด๋ค ๋ค๋ง ๊ตฌ๊ธ์ด ๋ฐ์ดํฐ์ผํฐ์ฉ์ผ๋ก ์ฐ๋ TPU๊ฐ ์๋ ์ ์ ๋ ฅ ๋ฒ์ ๊ธฐ๋ฐ์ด๋ผ ์ฑ๋ฅ์ ๋ค๋ฅด๋ค. ๋ํ ํ ์ํ๋ก์ฐ๋ฅผ ์ง์ํ๋ค๋๊ฒ ํน์ง.
NVIDIA๋ GeForce 20๋ถํฐ TPU์ ๋น์ทํ ๊ธฐ๋ฅ์ ํ๋ Tensor Core๋ฅผ ๋ด์ฅํ๊ธฐ ์์ํ๋ค. ์ฉ๋๋ ๋ค๋ฆ์๋ ๋ ์ดํธ๋ ์ด์ฑ๊ณผ DLSS ์ํฐ์์ผ๋ฆฌ์ด์ฑ ๋ณด์กฐ์ฉ.
4. ์ฑ๋ฅ[ํธ์ง]
๊ตฌ๊ธ์์ ์ต๊ทผ์ ๋ฐํํ ๋ด๋ด๊ธฐ๊ณ๋ฒ์ญ ๋
ผ๋ฌธ์ ์ํ๋ฉด ํน์ ์กฐ๊ฑดํ์์ TPU์ ์๋๋ GPU (Tesla K80, Kepler ์ฝ์ด 2๊ฐ๊ฐ ์ฅ์ฐฉ๋์ด ์๋ค)[3][4] ์ 10๋ฐฐ ์ด์ ๋น ๋ฅด๋ค๊ณ ํ๋ค์ถ์ฒ. ๋ฌผ๋ก ํด๋น ์๋๋ ๊ธฐ๊ณ๋ฒ์ญ๊ณผ์ ์์์ decoding๋จ๊ณ์์ ์ธก์ ํ๊ฑฐ๋ผ ๊ต์ฅํ ์ ํ๋ ์กฐ๊ฑดํ์์ ์ธก์ ํ๊ฒ์ด๋ค. ๊ธฐ๊ณ ๋ฒ์ญ์ decoding ๋จ๊ณ๋ ํ์ต๋จ๊ณ์ ๋ฌ๋ฆฌ beam search๋ผ๊ณ ๋ถ๋ฅด๋ '๊ฐ๋ฅํ ํ์๋ฃจํธ์์ ์ต์ ์ ๋ฃจํธ๋ฅผ ์ฐพ์๋ด๋ ํ์๊ณผ์ '์ด ํ์ํ์ง๋ผ GPU์์๋ง ๋๋ฆด์๋ ์๊ณ (GPU๋ CPU์ ๋ฌ๋ฆฌ ํ์๊ณผ ๊ฐ์ ๋ฒ์ฉ์ฒ๋ฆฌ์ ๊ต์ฅํ ์ฝํ์ฌ ๋ณดํต CPU๊ฐ ๋ด๋นํ๋ค.) CPU์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์ ์ฒ๋ฆฌํด์ผ ํ๋๋ฐ ๋ฌธ์ ๋ pci-e ๋ฒ์ค์์ ์๊ธฐ๋ latency๊ฐ ๋๋ฌด ๊ธธ์ด GPU์ ์ฅ์ ์ธ ๋น ๋ฅธ ๋ณ๋ ฌ์ฒ๋ฆฌ์๋๋ฅผ ์์ํ๋ค๋๊ฒ์ด๋ค. ์๋ฆฌ์ฌ๊ฐ ์๋ฌด๋ฆฌ ๋นจ๋ฆฌ ์๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ด๋ ๋ฐฐ๋ฌ์์ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ฉด ๊ฝ์ด๋ผ๋๊ฑธ ์๊ฐํด๋ณด์. TPU๋ ๋ง์ฐฌ๊ฐ์ง๋ก CPU์ ํ์์ ์์กดํด์ผ ํ์ง๋ง ๊ตฌ๊ธ์์๋ latency ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๊ฒ์ผ๋ก ๋ณด์ธ๋ค. (ํน์๋ ๋น๋ก TPU์ ๋ฉ๋ชจ๋ฆฌ ์์คํ
์ด ๊ณต๊ฐ๋์ง ์์์ง๋ง CPU์ ๋จ์ ๊ณต์ ํ๋๊ฒ ์๋๊ฐ ์๊ฐํด๋ณธ๋ค.) ํ์ค๋ก ์์ฝํ๋ฉด CPU์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํน์ ์กฐ๊ฑดํ์์๋ TPU๊ฐ ์๋์ ์ผ๋ก ๋น ๋ฅด๋ค ๊ฐ ๋๊ฒ ๋ค. ๋ฌผ๋ก ์ ๋์ ์ธ 1:1 ์๋ ๋น๊ต๊ฐ ์๋๋๋ผ๋ ์๋์ ์ธ ์ ์ฑ๋น๋ฅผ ์๋ํ๋ TPU๋ ๋์ผ ์ฒด์ ์ ๊ณต๊ฐ์์ ๋์๋ฒ ์ด์ฉ์ GPU ๋๋น ํจ์ฌ ๋ง์ ์ฐ์ฐ๋ ฅ์ ์ ๊ณตํ๋ค. ํฅ๋ฏธ๋ก์ด ์ ์ ํด๋น ๋
ผ๋ฌธ์์ ๋น๊ต๋ก ์ฌ์ฉ๋ 88 ์ฝ์ด... ๋์ผ CPU์ ์๋๋ GPU๋ก decodingํ๋๊ฒ๋ณด๋ค ๋น ๋ฅด๋ค๋ ์ ์ด๋ค. ์๋ฌด๋ฆฌ CPU๋ผ ํ ์ง๋ผ๋ 88์ฝ์ด๋ฉด 1TFLOPS๋ฅผ ์ํํ๋ ์ฐ์ฐ๋ ฅ์ ๊ฐ์ง๊ณ ์๊ณ GPU๋ ์๋์ pci-e latency์ ์ฅ์ฝ์ด๋ผ ์๋น๋์๊ฐ ๊ดํ PCI-E๊ฐ ์๋ NV-LINK๋ฅผ ๋ฏธ๋๊ฒ ์๋๋ค.
5. ๋ฒ์ [ํธ์ง]
- TPU 1.0
Google I/O 2016์์ ์๊ฐ๋์๋ค. Norm Jouppi์ ๋ฐ๋ฅด๋ฉด ๋ด๋ด ๋คํธ์ํฌ ์ฐ์ฐ์ ๋ํด TPU๋ ์ต์ CPU๋ฐ GPU๋ณด๋ค 15~30๋ฐฐ ๋น ๋ฅด๋ฉฐ, ์ ์ฑ๋น๋ 30~80๋ฐฐ ํฅ์๋์๋ค๊ณ ํ๋ค. - TPU 2.0
2017๋ 12์ ์ด, Jeff Dean ๊ณผ Chris Ying์ ์ํด ๋ฐํ๋์๋ค. ๊ตฌ๊ธ์ ๋จธ์ ๋ฌ๋ ์์คํ ์ํฌ์ต์์ ์ค๋ช ๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด, TPU 2.0์ 600 GB/S์ ๋ฉ๋ชจ๋ฆฌ ๋์ญํญ๊ณผ ์ต๋์ฑ๋ฅ 45 TFLOPS์ ์นฉ 4๊ฐ๋ฅผ ์ฐ๊ฒฐํด ์ต๋ 180 TFLOPS์ ์ฑ๋ฅ์ ๋ฐํํ ์ ์๋ค. - TPU 3.0
2018๋ 5์ ์ด, ์๋ค๋ฅด ํผ์ฐจ์ด๋ Google I/O ๊ฐ๋ฐ์ ์ปจํผ๋ฐ์ค ๊ธฐ์กฐ ์ฐ์ค์์ TPU์ 3๋ฒ์งธ ๋ฒ์ ์ ๊ณต๊ฐํ์๋ค. ์ด์ ์ ํ๋ณด๋ค 8๋ฐฐ ๋นจ๋ผ์ก์ผ๋ฉฐ, ์๋ญ์์ผ๋ก ๋๊ฐ๋๋ค. TPU 3.0์ ํฌ๋๋ 100 PFLOPS ์ด์์ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค๊ณ ์ฃผ์ฅํ๋ค. - TPU 4.0
ํฅํ ๊ณต๊ฐ๋ ๊ฒ์ผ๋ก ์์๋๋ TPU. - EDGE TPU
์ํ, ์ ์ ๋ ฅ ํ๋ซํผ์ฉ ML๊ฐ์๊ธฐ. ํ ์ํ๋ก์ฐ ๋ผ์ดํธ์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ๋ฐ์ดํฐ์ผํฐ ์ฉ์ด ์๋ ์ผ๋ฐ ์์ฉ์ ํ์ผ๋ก ํ์ฌ ์๋น์๊ฐ ๊ตฌํ ์ ์๋ ์ ์ผํ ๊ตฌ๊ธ์ TPU์ ํ์ด๋ค.
6. ๊ด๋ จ ๋ฌธ์[ํธ์ง]
[1] ๋น์ฐํ ์ด์ผ๊ธฐ์ง๋ง, ๊ฐ์ ๋นํธ๋ผ๋ ์ ์ ์ฐ์ฐ์ด ๋ถ๋ ์์์ ์ฐ์ฐ๋ณด๋ค ๋ ๋น ๋ฅด๋ค. ํ๋์จ์ด์ ๊ตฌํ๋ ์ ์ ์ฐ์ฐ์ด ๋ ์ฌ์ฐ๋ ๊ฐ์ฑ๋น๊ฐ ์๋ค.
[2] ๊ตฌ๊ธ๊ณผ ๊ด๊ณ๋ ํ์ฌ์์ ์ ํํ ํ๊ธฐ ๋๋ฌธ์ ๋ณดํต ๊ตฌ๊ธ ์ฝ๋ ๋ณด๋๋ผ๊ณ ๋ถ๋ฅธ๋ค
[3] ํ์ฌ ํด์ธ์ง๊ตฌ ์ 480๋ง์
[4] TESLA K80์ GTX780์ ์ฌ์ด๋ป ๋๋ ์นฉ์
์ ์ฌ์ฉํ ์นด๋์ด๋ฉฐ ํด๋ญ์ด ๋ชน์ ๋ฎ์์ ธ์๊ธฐ ๋๋ฌธ์ ๋ถ๋์์์ ์ฑ๋ฅ ์์ฒด๋ AMD FURY X, GTX1070๊ณผ ๋น์ทํ ์์ค์ด๋ค.