โšก AI Optimization

Output/Weight Stationary

๊ฐœ์š”

Output Stationary๊ณผ Weight Stationary๋Š” ์‹œ์Šคํ† ๋ฆญ ์–ด๋ ˆ์ด(Systolic Array)์—์„œ ํ–‰๋ ฌ ๊ณฑ์…ˆ(GEMM) ์—ฐ์‚ฐ ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ํ•˜๋“œ์›จ์–ด ์š”์†Œ์— ๊ณ ์ •์‹œํ‚ฌ ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„(Data Flow) ์ „๋žต์ด๋‹ค. ์‹œ์Šคํ† ๋ฆญ ์–ด๋ ˆ์ด๋Š” ๋ณ‘๋ ฌ ์ปดํ“จํŒ… ์•„ํ‚คํ…์ฒ˜์˜ ์ผ์ข…์œผ๋กœ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ์ ‘ํ•œ ์ฒ˜๋ฆฌ ์š”์†Œ(PE) ์‚ฌ์ด์—์„œ ๊ทœ์น™์ ์œผ๋กœ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ๋ฅด๋ฉฐ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค. ์‹ฌ์žฅ์˜ ํŽŒํ•‘๊ณผ ์œ ์‚ฌํ•œ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ฐฉ์‹์—์„œ ์ด๋ฆ„์ด ์œ ๋ž˜๋˜์—ˆ๋‹ค.

Output Stationary์€ ๊ฒฐ๊ณผ ํ–‰๋ ฌ์˜ ์š”์†Œ๊ฐ€ ๊ฐ PE์— ๊ณ ์ •๋˜์–ด ๋ˆ„์ ๋˜๋„๋ก ์„ค๊ณ„ํ•˜๋ฉฐ, Weight Stationary์€ ๊ฐ€์ค‘์น˜(๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์˜ ์š”์†Œ)๊ฐ€ PE์— ๋ฏธ๋ฆฌ ๋กœ๋“œ๋œ ํ›„ ๊ณ ์ •๋œ ์ฑ„ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋งŒ ํ๋ฅด๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค. ๋‘ ์ „๋žต ๋ชจ๋‘ ์—ฐ์‚ฐ ์žฌ์‚ฌ์šฉ(Operand Reuse)์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋ฉฐ, ์‹ค์ œ AI ๊ฐ€์†๊ธฐ(Google TPU, NVIDIA Tensor Core ๋“ฑ)์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

Output Stationary ๊ตฌ์กฐ

์‹œ์Šคํ† ๋ฆญ ์–ด๋ ˆ์ด ๊ธฐ๋ณธ ๊ตฌ์กฐ

์‹œ์Šคํ…œ ์–ด๋ ˆ์ด๋Š” ๊ฒฉ์žํ˜•์œผ๋กœ ๋ฐฐ์น˜๋œ ์ฒ˜๋ฆฌ ์š”์†Œ(PE) ๋„คํŠธ์›Œํฌ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐ PE๋Š” ๊ณฑ์…ˆ-๋ˆ„์‚ฐ(MAC: Multiply-Accumulate) ์œ ๋‹›์„ ํฌํ•จํ•˜๋ฉฐ, ์ธ์ ‘ PE์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค.

  • PE(Processing Element): ๊ณฑ์…ˆ๊ณผ ๋ง์…ˆ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ธฐ๋ณธ ์—ฐ์‚ฐ ๋‹จ์œ„
  • ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ฐฉํ–ฅ: ์ž…๋ ฅ ํ–‰๋ ฌ์˜ ํ–‰์ด ์œ„โ†’์•„๋ž˜๋กœ, ์—ด์ด ์ขŒโ†’์šฐ๋กœ ํ๋ฆ„
  • ์‹œ๊ณ„ ๋™๊ธฐํ™”: ๋ชจ๋“  PE๊ฐ€ ๋™์ผํ•œ ํด๋Ÿญ์— ์˜ํ•ด ๋™์ž‘ (systolic = ๊ทœ์น™์ )
  • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ตœ์†Œํ™”: ๋ฐ์ดํ„ฐ๊ฐ€ PE ๊ฐ„์—์„œ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ํฌ๊ฒŒ ๊ฐ์†Œ

Output Stationary ์›๋ฆฌ

Output Stationary์—์„œ ๊ฒฐ๊ณผ ํ–‰๋ ฌ C์˜ ๊ฐ ์š”์†Œ C[i][j]๋Š” ํŠน์ • PE์— ๊ณ ์ •๋˜์–ด ๊ณ„์‚ฐ๋œ๋‹ค. ์ž…๋ ฅ ํ–‰๋ ฌ A์˜ ์š”์†Œ์™€ B์˜ ์š”์†Œ๊ฐ€ PE๋ฅผ ํ†ต๊ณผํ•˜๋ฉด์„œ ๋ˆ„์  ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

๋™์ž‘ ํ๋ฆ„:

PE[i][j] ์ดˆ๊ธฐ ์ƒํƒœ: accumulator = 0

ํด๋Ÿญ 0: PE[0][0]์— A[0][0] ร— B[0][0] ์ˆ˜์‹  โ†’ accumulator += A[0][0] ร— B[0][0]
ํด๋Ÿญ 1: PE[0][0]์— A[0][1] ร— B[1][0] ์ˆ˜์‹  โ†’ accumulator += A[0][1] ร— B[1][0]
...
ํด๋Ÿญ K-1: PE[0][0]์— A[0][K-1] ร— B[K-1][0] ์ˆ˜์‹  โ†’ C[0][0] = accumulator ์™„์„ฑ

๊ฐ PE๋Š” K๋ฒˆ์˜ ํด๋Ÿญ ๋™์•ˆ ๋ˆ„์  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ํ›„, ์™„์„ฑ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐ์ดํ„ฐ ํ๋ฆ„:

  • A์˜ ํ–‰: ์œ„์—์„œ ์•„๋ž˜๋กœ PE๋ฅผ ํ†ต๊ณผ (๊ฐ ํ–‰์ด ํ•˜๋‚˜์˜ ํด๋Ÿญ ์ง€์—ฐ ํ›„ ํ•˜์œ„ ํ–‰์œผ๋กœ ์ „๋‹ฌ)
  • B์˜ ์—ด: ์ขŒ์—์„œ ์šฐ๋กœ PE๋ฅผ ํ†ต๊ณผ (๊ฐ ์—ด์ด ํ•˜๋‚˜์˜ ํด๋Ÿญ ์ง€์—ฐ ํ›„ ์šฐ์ธก ์—ด๋กœ ์ „๋‹ฌ)
  • C[i][j]: PE[i][j]์— ๊ณ ์ •, K ํด๋Ÿญ ํ›„ ์ถœ๋ ฅ

Weight Stationary ์›๋ฆฌ

Weight Stationary์—์„œ๋Š” ๊ฐ€์ค‘์น˜(๋ณดํ†ต ํ–‰๋ ฌ B ๋˜๋Š” ํ•„ํ„ฐ ๊ฐ€์ค‘์น˜)๊ฐ€ ๊ฐ PE์— ๋ฏธ๋ฆฌ ๋กœ๋“œ๋˜๊ณ  ๊ณ ์ •๋œ๋‹ค. ์ž…๋ ฅ ๋ฐ์ดํ„ฐ(ํ–‰๋ ฌ A)์™€ ๋ˆ„์  ๊ฒฐ๊ณผ(๋ถ€๋ถ„ ํ•ฉ)๋งŒ์ด PE ์‚ฌ์ด๋ฅผ ํ๋ฅธ๋‹ค.

๋™์ž‘ ํ๋ฆ„:

์ดˆ๊ธฐ ๋‹จ๊ณ„: ๋ชจ๋“  PE์— ๊ฐ€์ค‘์น˜ B[k][j]๋ฅผ ์‚ฌ์ „ ๋กœ๋“œ

ํด๋Ÿญ 0: PE[0][0]์— A[0][0] ์ˆ˜์‹  โ†’ partial_sum += B[0][0] ร— A[0][0]
ํด๋Ÿญ 1: PE[0][0]์— A[0][1] ์ˆ˜์‹  โ†’ partial_sum += B[0][1] ร— A[0][1]
...

Weight Stationary์˜ ํ•ต์‹ฌ ์žฅ์ ์€ ๊ฐ€์ค‘์น˜๋ฅผ ํ•œ ๋ฒˆ ๋กœ๋“œํ•˜๋ฉด ์—ฌ๋Ÿฌ ์ž…๋ ฅ์— ๋Œ€ํ•ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ํŠนํžˆ ์ถ”๋ก (Inference) ๋‹จ๊ณ„์—์„œ ๋™์ผํ•œ ๊ฐ€์ค‘์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ณต ์—ฐ์‚ฐ์— ์œ ๋ฆฌํ•˜๋‹ค.

๋ฐ์ดํ„ฐ ํ๋ฆ„:

  • ๊ฐ€์ค‘์น˜ B: PE์— ๊ณ ์ • (์ดˆ๊ธฐ ๋กœ๋“œ ํ›„ ๋ณ€๊ฒฝ ์—†์Œ)
  • ์ž…๋ ฅ A: ์œ„์—์„œ ์•„๋ž˜๋กœ ํ๋ฆ„
  • ๋ถ€๋ถ„ ํ•ฉ(partial sum): ์ขŒ์—์„œ ์šฐ๋กœ ํ๋ฆ„

๋น„๊ต/๋ถ„์„

Output vs Weight Stationary ๋น„๊ต

๋‘ ์ „๋žต ๋น„๊ตํ‘œ

ํ•ญ๋ชฉ Output Stationary Weight Stationary
๊ณ ์ • ์š”์†Œ ๊ฒฐ๊ณผ ํ–‰๋ ฌ C ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ B
๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํŒจํ„ด A์™€ B๊ฐ€ PE๋ฅผ ํ†ต๊ณผ A๋งŒ PE๋ฅผ ํ†ต๊ณผ (B ๊ณ ์ •)
์ถœ๋ ฅๆ–นๅผ K ํด๋Ÿญ ํ›„ PE์—์„œ ์ง์ ‘ ์ถœ๋ ฅ ์šฐ์ธก ์—ด์—์„œ ์ถœ๋ ฅ
์—ฐ์‚ฐ ์žฌ์‚ฌ์šฉ A์™€ B์˜ ๊ฐ ์š”์†Œ๊ฐ€ ์—ฌ๋Ÿฌ PE์—์„œ ์žฌ์‚ฌ์šฉ B๊ฐ€ ๋™์ผ ์ž…๋ ฅ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ์žฌ์‚ฌ์šฉ
์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ A์™€ B๋ฅผ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ๊ณต๊ธ‰ A๋งŒ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ๊ณต๊ธ‰, B๋Š” ์ดˆ๊ธฐ ๋กœ๋“œ 1ํšŒ
์ ํ•ฉ ์›Œํฌ๋กœ๋“œ ๋Œ€๊ทœ๋ชจ ํ–‰๋ ฌ ๊ณฑ์…ˆ (ํ•™์Šต/์ถ”๋ก  ๋ชจ๋‘) ์ถ”๋ก , ๊ฐ€์ค‘์น˜ ์žฌ์‚ฌ์šฉ์ด ๋งŽ์€ ์›Œํฌ๋กœ๋“œ
ํ•˜๋“œ์›จ์–ด ๋ณต์žก๋„ ๊ฒฐ๊ณผ ์ถœ๋ ฅ ๋ผ์šฐํŒ… ํ•„์š” ๊ฐ€์ค‘์น˜ ๋กœ๋“œ ๋„คํŠธ์›Œํฌ ํ•„์š”
๋Œ€ํ‘œ ์ ์šฉ Google TPU (v1~v5) NVIDIA Tensor Core (์›จ์ดํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ)

๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ๋ถ„์„

Nร—N ํ–‰๋ ฌ ๊ณฑ์…ˆ์—์„œ ๋‘ ์ „๋žต์˜ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ๋Ÿ‰์„ ๋น„๊ตํ•˜๋ฉด:

Output Stationary:
- A ํ–‰๋ ฌ: Nยฒ ์š”์†Œ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž…๋ ฅ (์žฌ์‚ฌ์šฉ์œผ๋กœ PE ๊ฐ„ ์ „๋‹ฌ)
- B ํ–‰๋ ฌ: Nยฒ ์š”์†Œ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž…๋ ฅ
- C ํ–‰๋ ฌ: Nยฒ ์š”์†Œ ์ถœ๋ ฅ
- ์ด ์™ธ๋ถ€ ์ ‘๊ทผ: O(3Nยฒ) (A, B, C ๊ฐ๊ฐ Nยฒ)

Weight Stationary:
- A ํ–‰๋ ฌ: Nยฒ ์š”์†Œ ์ŠคํŠธ๋ฆฌ๋ฐ ์ž…๋ ฅ
- B ํ–‰๋ ฌ: Nยฒ ์š”์†Œ ์ดˆ๊ธฐ ๋กœ๋“œ (1ํšŒ)
- C ํ–‰๋ ฌ: Nยฒ ์š”์†Œ ์ถœ๋ ฅ
- ์ด ์™ธ๋ถ€ ์ ‘๊ทผ: O(2Nยฒ + Nยฒ ์ดˆ๊ธฐ ๋กœ๋“œ)

Weight Stationary์€ B์˜ ์ดˆ๊ธฐ ๋กœ๋“œ ๋น„์šฉ์„ ์ œ์™ธํ•˜๋ฉด ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๋” ์ ์œผ๋‚˜, B์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘๊ณ  A์˜ ์žฌ์‚ฌ์šฉ๋ฅ ์ด ๋†’์€ ๊ฒฝ์šฐ์— ์œ ๋ฆฌํ•˜๋‹ค.

ํ•˜๋“œ์›จ์–ด ์ž์› ํ™œ์šฉ ๋น„๊ต

์ž์› Output Stationary Weight Stationary
PE๋‹น ๊ณฑ์…ˆ๊ธฐ 1๊ฐœ MAC 1๊ฐœ MAC
PE๋‹น ๋ˆ„์‚ฐ๊ธฐ 1๊ฐœ (๊ฒฐ๊ณผ ์ €์žฅ) 1๊ฐœ (๋ถ€๋ถ„ ํ•ฉ ์ €์žฅ)
PE๋‹น ๋ ˆ์ง€์Šคํ„ฐ ๊ฒฐ๊ณผ ๋ˆ„์‚ฐ + ์ž…๋ ฅ ๋ฒ„ํผ ๊ฐ€์ค‘์น˜ ์ €์žฅ + ์ž…๋ ฅ ๋ฒ„ํผ
์ธํ„ฐ์ปค๋„ฅํŠธ ๋ฉ”์‹œ(mesh) ๋˜๋Š” ํŠธ๋ฆฌ(tree) ๋ฉ”์‹œ(mesh) ๋˜๋Š” ๋ฒ„์Šค
์ œ์–ด ๋ณต์žก๋„ ๋†’์Œ (์ถœ๋ ฅ ๋ผ์šฐํŒ… ๊ด€๋ฆฌ) ์ค‘๊ฐ„ (๊ฐ€์ค‘์น˜ ๋กœ๋“œ ๊ด€๋ฆฌ)

๋™์ž‘ ์›๋ฆฌ

4ร—4 Output Stationary ์˜ˆ์‹œ

2ร—2 ํ–‰๋ ฌ ๊ณฑ์…ˆ C = A ร— B์—์„œ 4ร—4 ์‹œ์Šคํ† ๋ฆญ ์–ด๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž.

A = [a00 a01]    B = [b00 b01]    C = [c00 c01]
    [a10 a11]        [b10 b11]        [c10 c11]

ํด๋Ÿญ๋ณ„ ๋™์ž‘ (2ร—2 ๋ฐฐ์—ด):

ํด๋Ÿญ PE[0][0] ๋™์ž‘ PE[0][1] ๋™์ž‘ PE[1][0] ๋™์ž‘ PE[1][1] ๋™์ž‘
0 acc += a00ร—b00 - - -
1 acc += a01ร—b10 acc += a00ร—b01 acc += a10ร—b00 -
2 ์ถœ๋ ฅ: c00 acc += a01ร—b11 acc += a11ร—b10 acc += a10ร—b01
3 - ์ถœ๋ ฅ: c01 ์ถœ๋ ฅ: c10 acc += a11ร—b11

์ด ๊ณผ์ •์—์„œ ๊ฐ ์š”์†Œ a_{ij}, b_{kl}์€ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ๋งŒ ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋กœ๋“œ๋œ๋‹ค.

4ร—4 Weight Stationary ์˜ˆ์‹œ

๋™์ผํ•œ 2ร—2 ํ–‰๋ ฌ ๊ณฑ์…ˆ์—์„œ Weight Stationary ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

์ดˆ๊ธฐ ๋กœ๋“œ ๋‹จ๊ณ„:

PE[0][0] โ† b00,  PE[0][1] โ† b01
PE[1][0] โ† b10,  PE[1][1] โ† b11

์—ฐ์‚ฐ ๋‹จ๊ณ„ (์ž…๋ ฅ A๊ฐ€ ์œ„์—์„œ ์•„๋ž˜๋กœ ํ๋ฆ„):

ํด๋Ÿญ ์ž…๋ ฅ (์œ„โ†’์•„๋ž˜) PE[0][0] PE[0][1] PE[1][0] PE[1][1]
0 a00 partial = b00ร—a00 partial = b01ร—a00 - -
1 a01 partial += b00ร—a01 partial += b01ร—a01 partial = b10ร—a00 partial = b11ร—a00
2 a10 partial += b00ร—a10 partial += b01ร—a10 partial += b10ร—a01 partial += b11ร—a01
3 a11 ์ถœ๋ ฅ: c00 ์ถœ๋ ฅ: c01 partial += b10ร—a10 partial += b11ร—a10
4 - - - ์ถœ๋ ฅ: c10 ์ถœ๋ ฅ: c11

Weight Stationary์—์„œ๋Š” b_{kl}์ด PE์— ๊ณ ์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ B์˜ ๊ธ€๋กœ๋ฒŒ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ์™„์ „ํžˆ ์ œ๊ฑฐ๋œ๋‹ค.

TPU v1์—์„œ์˜ ์ ์šฉ

Google TPU v1๋Š” 256ร—256 ์‹œ์Šคํ† ๋ฆญ ์–ด๋ ˆ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, Weight Stationary ๋ฐฉ์‹์„ ์ฑ„ํƒํ–ˆ๋‹ค:

  • ๊ฐ€์ค‘์น˜ ๋กœ๋“œ: ๋ฉ”๋ชจ๋ฆฌ์—์„œ 256ร—256 ๊ฐ€์ค‘์น˜ ๋ฉ”ํŠธ๋ฆญ์Šค๋ฅผ ํ•œ ๋ฒˆ์— ์–ด๋ ˆ์ด์— ๋กœ๋“œ
  • ์ž…๋ ฅ ์ŠคํŠธ๋ฆฌ๋ฐ: ํ™œ์„ฑ๊ฐ’(activation)์ด ์œ„์—์„œ ์•„๋ž˜๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ
  • ์ถœ๋ ฅ ์ˆ˜์ง‘: ์™„์„ฑ๋œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋ž˜์ชฝ์—์„œ ์ถœ๋ ฅ
  • ์„ฑ๋Šฅ: 8-bit ์ •์ˆ˜ ๊ธฐ์ค€ 92 TOPS (Tera Operations Per Second)
  • ์ „๋ ฅ ํšจ์œจ: Von Neumann ์•„ํ‚คํ…์ฒ˜ ๋Œ€๋น„ 30~100๋ฐฐ ๋†’์€ ์—๋„ˆ์ง€ ํšจ์œจ

TPU๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์–ด๋ ˆ์ด์— ๊ณ ์ •์‹œํ‚ด์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ๋ณ‘๋ชฉ์„ ๊ทน์ ์œผ๋กœ ์ค„์˜€์œผ๋ฉฐ, ์ด๊ฒƒ์ด TPU์˜ ๋†’์€ ์—๋„ˆ์ง€ ํšจ์œจ์˜ ํ•ต์‹ฌ ์›์ธ์ด๋‹ค.

์žฅ๋‹จ์ 

Output Stationary

์žฅ์ :

  • ํ–‰๋ ฌ ๊ณฑ์…ˆ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐํ•˜์—ฌ ํ•˜๋“œ์›จ์–ด ํ™œ์šฉ๋„๊ฐ€ ๋†’์Œ
  • ๋Œ€๊ทœ๋ชจ ํ–‰๋ ฌ ๊ณฑ์…ˆ์— ์ ํ•ฉํ•˜๋ฉฐ, ๋ณ‘๋ ฌ์„ฑ์ด ๊ทน๋Œ€ํ™”๋จ
  • ์ถœ๋ ฅ์ด ๊ฐ PE์—์„œ ์ง์ ‘ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์ถœ๋ ฅ ๋ผ์šฐํŒ…์ด ๋‹จ์ˆœํ•จ
  • ํ•™์Šต(Training)๊ณผ ์ถ”๋ก (Inference) ๋ชจ๋‘์— ํ™œ์šฉ ๊ฐ€๋Šฅ

๋‹จ์ :

  • A์™€ B๋ฅผ ๋ชจ๋‘ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ๊ณต๊ธ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ์ด ํ•„์š”
  • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ์ „๋‹ฌ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ์ถœ๋ ฅ ๋ฒ„ํผ๋ง์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ (๋™์‹œ ์ถœ๋ ฅ ๊ด€๋ฆฌ)

Weight Stationary

์žฅ์ :

  • ๊ฐ€์ค‘์น˜๋ฅผ ํ•œ ๋ฒˆ ๋กœ๋“œํ•˜๋ฉด ์žฌ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ์ด ํฌ๊ฒŒ ์ ˆ๊ฐ
  • ์ถ”๋ก  ๋‹จ๊ณ„์—์„œ ๋™์ผํ•œ ๊ฐ€์ค‘์น˜๋ฅผ ๋ฐ˜๋ณต ์‚ฌ์šฉํ•˜๋Š” ์›Œํฌ๋กœ๋“œ์— ์ตœ์ 
  • ์—๋„ˆ์ง€ ํšจ์œจ์ด ๋†’์Œ (๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์—๋„ˆ์ง€ ์†Œ๋น„๊ฐ€ ๊ฐ€์žฅ ํฐ ๋น„์ค‘)
  • ๊ตฌํ˜„์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋‹จ์ˆœ

๋‹จ์ :

  • ๊ฐ€์ค‘์น˜ ๋กœ๋“œ ๋„คํŠธ์›Œํฌ๊ฐ€ ํ•„์š” (์ดˆ๊ธฐ ๋กœ๋“œ ๋น„์šฉ)
  • ๊ฐ€์ค‘์น˜๊ฐ€ ํฌ๋ฉด PE๋‹น ๋ ˆ์ง€์Šคํ„ฐ/๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€
  • ๊ฐ€์ค‘์น˜ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋นˆ๋ฒˆํ•œ ํ•™์Šต ์›Œํฌ๋กœ๋“œ์—์„œ๋Š” ๋ถˆ๋ฆฌ
  • ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์˜ ํฌ๊ธฐ๊ฐ€ ์–ด๋ ˆ์ด ํฌ๊ธฐ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋กœ๋”ฉ ํšจ์œจ์ด ์ €ํ•˜

๊ด€๋ จ ๊ธฐ์ˆ 

  • Systems of Linear Equations: H. T. Kung, C. E. Leiserson, "Algorithms for VLSI processor arrays", Introduction to VLSI Systems, 1979
  • Google TPU: Jouppi, N. P. et al., "In-Datacenter Performance Analysis of a Tensor Processing Unit", ISCA 2017
  • NVIDIA Tensor Core: Mishra, A. et al., "Efficient Neural Network Inference with Mixed Precision and Tensor Cores", NVIDIA Technical Report, 2018
  • Systolic Array for GEMM: Kung, H. T., "Why Systolic Architectures?", IEEE Computer, 1982
  • Weight Stationary Optimization: Chen, Y. et al., "Eyeriss: An Energy-Efficient Accelerator for Deep Neural Networks", ISCA 2016

ํ•ต์‹ฌ ์ •๋ฆฌ

  1. Output Stationary์€ ๊ฒฐ๊ณผ ํ–‰๋ ฌ์˜ ๊ฐ ์š”์†Œ๋ฅผ ํŠน์ • PE์— ๊ณ ์ •์‹œ์ผœ ๋ˆ„์  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ „๋žต์œผ๋กœ, ๋Œ€๊ทœ๋ชจ GEMM์— ์ ํ•ฉํ•˜๋‹ค.
  2. Weight Stationary์€ ๊ฐ€์ค‘์น˜๋ฅผ PE์— ์‚ฌ์ „ ๋กœ๋“œํ•˜์—ฌ ๊ณ ์ •์‹œํ‚ค๊ณ  ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋งŒ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ์ „๋žต์œผ๋กœ, ์ถ”๋ก  ์›Œํฌ๋กœ๋“œ์—์„œ ์—๋„ˆ์ง€ ํšจ์œจ์ด ๋†’๋‹ค.
  3. ๋‘ ์ „๋žต ๋ชจ๋‘ ์™ธ๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์„ ์ตœ์†Œํ™”ํ•˜์—ฌ ์—ฐ์‚ฐ ์žฌ์‚ฌ์šฉ์„ ๊ทน๋Œ€ํ™”ํ•˜์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์—ญํญ ์ ˆ๊ฐ ํŒจํ„ด์ด ๋‹ค๋ฅด๋‹ค.
  4. ์‹ค์ œ AI ๊ฐ€์†๊ธฐ(Google TPU, NVIDIA Tensor Core)์—์„œ๋Š” ์›Œํฌ๋กœ๋“œ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ ํ•ฉํ•œ ์ „๋žต์„ ์„ ํƒํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.
  5. ์‹œ์Šคํ† ๋ฆญ ์–ด๋ ˆ์ด๋Š” Von Neumann ์•„ํ‚คํ…์ฒ˜์˜ ๋ณ‘๋ชฉ์„ ๊ทน๋ณตํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ์ˆ ๋กœ, AI ์ถ”๋ก ๊ณผ ํ•™์Šต ๋ชจ๋‘์—์„œ ์—๋„ˆ์ง€ ํšจ์œจ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.