hiJu | CheeeezeโœŒ๐Ÿป hiJu | CheeeezeโœŒ๐Ÿป hiJu | CheeeezeโœŒ๐Ÿป hiJu
hiJu

[AI ์ปดํŒŒ์ผ๋Ÿฌ] Operator Fusion ๊ธฐ๋ฒ• with TVM

Operator Fusion ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์—ฐ์‚ฌ์ž๋“ค์„ ํ•˜๋‚˜์˜ ํฐ ์ปค๋„(kernel) ํ•จ์ˆ˜๋กœ ํ•ฉ์น˜๋Š” ์ตœ์ ํ™” ๊ธฐ๋ฒ• ์™œ operator Fusion์„ ํ•˜๋Š” ๊ฐ€? ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ํšŸ์ˆ˜ ๊ฐ์†Œ ์ปค๋„ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ ๋ณ‘๋ ฌ ์ตœ์ ํ™” : SIMD, Tensor Core, NPU MAC ๋ฐฐ์—ด ๋“ฑ์œผ๋กœ ๋” ์ตœ์ ํ™”ํ•ด ์‹คํ–‰ ๊ฐ€๋Šฅ Low-precision ์ตœ์ ...

[AI ์ปดํŒŒ์ผ๋Ÿฌ] AI ๋ฐ˜๋„์ฒด ์ง€์› ์ปดํŒŒ์ผ๋Ÿฌ

MLIR (Multi-Level Intermediate Representation) ์†Œํ”„ํŠธ์›จ์–ด์™€ ํ•˜๋“œ์›จ์–ด์˜ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์—์„œ ์ปดํŒŒ์ผ๋Ÿฌ ๊ฐœ๋ฐœ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์ธํ”„๋ผ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๋ฅผ ์ง€์›ํ•˜๋Š” IR(Intermediate Representation) ์‹œ์Šคํ…œ์„ ์ œ๊ณต ์ด...

[์ˆ˜๋ฆฌํ†ต๊ณ„] ํ†ต๊ณ„์  ์ถ”๋ก 

ํ†ต๊ณ„์  ์ถ”๋ก  ํ‘œ๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•ด ๋ชจ์ง‘๋‹จ์˜ ๊ด€์‹ฌ์žˆ๋Š” ๋ชจ์ˆ˜(parameter)์— ๊ด€ํ•œ ๊ฒฐ๋ก ์„ ์ด๋Œ์–ด ๋‚ด๋Š” ๊ฒƒ ํ†ต๊ณ„์  ์ถ”๋ก ์˜ ๋ถˆํ™•์‹ค์„ฑ ๋ชจ์ง‘๋‹จ ๋ชจ์ˆ˜์— ๊ด€ํ•œ ์–ด๋– ํ•œ ์ถ”๋ก ๋„ ๋ชจ์ง‘๋‹จ ์ „์ฒด๊ฐ€ ์•„๋‹Œ ํ‘œ๋ณธ์— ๊ทผ๊ฑฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋А์ •๋„์˜ ๋ถˆํ™•์‹ค์„ฑ์„ ๋‚ดํฌ ์ถ”๋ก ์ด ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถˆํ™•์‹ค์„ฑ์˜ ์ •๋„๋ฅผ ๋‚˜ํƒ€๋‚ด์•ผํ•œ๋‹ค.

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ

์„ ํƒ ์ •๋ ฌ ์‹œ๊ฐ„๋ณต์žก๋„ : ์ตœ์„  O(n^2), ์ตœ์•… O(n^2) ๋ฐฉ์‹ 1) ๋ฆฌ์ŠคํŠธ์—์„œ ์ตœ์†Ÿ๊ฐ’(๋˜๋Š” ์ตœ๋Œ“๊ฐ’)์„ ์ฐพ์Œ 2) ๊ทธ ๊ฐ’์„ ๋งจ ์•ž์˜ ๊ฐ’๊ณผ ๊ตํ™˜ 3) ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด ๊ฐ™์€ ์ž‘์—… ๋ฐ˜๋ณต 4) ๋ฆฌ์ŠคํŠธ์˜ ๋๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ์ •๋ ฌ ์™„๋ฃŒ ๋™์ž‘ ๊ณผ์ • ์˜ˆ์‹œ ๋‹จ๊ณ„ ์ •๋ ฌ ๊ณผ์ • ...

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] DB์˜ ๊ธฐ๋ณธ ๋ฐ ์ •๊ทœํ™”

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๊ธฐ๋ณธ ์—”ํ„ฐํ‹ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†์„ฑ์„ ์ง€๋‹Œ ๋ช…์‚ฌ ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์ด๋‚˜ ๊ฐœ๋…์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ‘œํ˜„ํ•œ ๊ฒƒ = ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด DB์—์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•  ๋Œ€์ƒ(thing) ๊ตฌ๋ถ„ ์„ค๋ช… ์˜ˆ์‹œ ๊ฐ•ํ•œ ์—”ํ„ฐํ‹ฐ (Strong Entity) ๋…๋ฆฝ์ ์œผ๋กœ ์กด์žฌ ๊ฐ€๋Šฅ ...

[์šด์˜์ฒด์ œ] ์ปดํ“จํ„ฐ ์š”์†Œ์™€ ๋ฉ”๋ชจ๋ฆฌ

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ [๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ]๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์ธ ํ•™์Šต ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค : ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ, = CPU ์Šค์ผ€์ค„๋ง์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ์ž‘์—…(task) ์Šค๋ ˆ๋“œ : ํ”„๋กœ์„ธ์Šค ๋‚ด ์ž‘์—…์˜ ํ๋ฆ„ CPU ์Šค์ผ€์ค„๋Ÿฌ์— ๋”ฐ๋ผ CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ํ”„๋กœ์„ธ์Šค์™€ ์ปดํŒŒ์ผ ๊ณผ์ • ํ”„๋กœ์„ธ์Šค : ํ”„๋กœ๊ทธ๋žจ์ด ๋ฉ”๋ชจ๋ฆฌ์— ...

[์šด์˜์ฒด์ œ] ์ปดํ“จํ„ฐ ์š”์†Œ์™€ ๋ฉ”๋ชจ๋ฆฌ

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ [๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ]๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์ธ ํ•™์Šต ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ์™€ ์ปดํ“จํ„ฐ ์šด์˜์ฒด์ œ : ํ•˜๋“œ์›จ์–ด์™€ ์†Œํ”„ํŠธ์›จ์–ด(์œ ์ € ํ”„๋กœ๊ทธ๋žจ)๋ฅผ ๊ด€๋ฆฌ ์ปดํ“จํ„ฐ ์š”์†Œ : CPU, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ ์šด์˜์ฒด์ œ์˜ ์—ญํ• ๊ณผ ๊ตฌ์กฐ ์šด์˜์ฒด์ œ ์—ญํ•  CPU ์Šค์ผ€์ค„๋ง๊ณผ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋””์Šคํฌ ํŒŒ์ผ ๊ด€๋ฆฌ I/O ๋””๋ฐ”์ด์Šค ๊ด€๋ฆฌ ์šด...

[๋„คํŠธ์›Œํฌ] ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ [๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ]๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์ธ ํ•™์Šต ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ์˜ ์ฒ˜๋ฆฌ๋ฒ”์œ„ ์ƒ์œ„ ๊ณ„์ธต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๊ธฐ๋Š” ํ•˜์œ„๊ณ„์ธต์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต : L7 ์Šค์œ„์น˜ ์ธํ„ฐ๋„ท ๊ณ„์ธต : ๋ผ์šฐํ„ฐ, L3 ์Šค์œ„์น˜ ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต : L2 ์Šค์œ„์น˜, ๋ธŒ๋ฆฌ์ง€ ๋ฌผ๋ฆฌ ๊ณ„์ธต : NIC, ๋ฆฌํ”ผํ„ฐ...

[๋„คํŠธ์›Œํฌ] ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ [๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ]๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์ธ ํ•™์Šต ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ๋„คํŠธ์›Œํฌ๋ž€ ๋…ธ๋“œ(node)์™€ ๋งํฌ(link)๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณต์œ ํ•˜๋Š” ์ง‘ํ•ฉ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์žฅ์น˜๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋œ ์‹œ์Šคํ…œ ๋…ธ๋“œ : ์„œ๋ฒ„, ๋ผ์šฐํ„ฐ, ์Šค์œ„์น˜ ๋“ฑ ๋„คํŠธ์›Œํฌ ์žฅ์น˜ ๋งํฌ : ์œ ์„  ๋˜๋Š” ๋ฌด...