"Legion: Tailoring Grouped Neural Execution Considering Heterogeneity on Multiple Edge Devices (ICCD'21)" ๋ ผ๋ฌธ์ ๊ธฐ๋ฐ ์ฐ๊ตฌ ๋ด์ฉ์ ์์ฝํ ๋ ํฌ์งํ ๋ฆฌ์ ๋๋ค.
- ์๋ฒ ๋๋น ๋น๊ต์ ์ฑ๋ฅ์ด ๋ฎ์ ์ฃ์ง ๋๋ฐ์ด์ค์์ ๋ชจ๋ธ ์ถ๋ก ์ ์ค์๊ฐ ์ฒ๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ๋ณ๋ ฌํ ๊ธฐ๋ฒ ์ค ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํน์ ์ฐจ์์ ๋ฐ๋ผ ๋ถํ ํ์ฌ ๊ฐ ๊ธฐ๊ธฐ๊ฐ ๊ฐ ๋ ์ด์ด์ ์ ์ฒด ์ฐ์ฐ ์ค ์ผ๋ถ๋ง์ ๋งก๋๋ก ํ๋ ๋ชจ๋ธ ๋ณ๋ ฌํ ๋ฐฉ์์ ํ์ฉํ๋ฉด ๊ฐ๋ณ ๊ธฐ๊ธฐ์์์ ์ฐ์ฐ ๋ถ๋ด์ ์ค์ด๊ณ ์ถ๋ก ์ง์ฐ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค.
- ๋ชจ๋ธ ๋ณ๋ ฌํ ๋ฐฉ์์์ ๊ฐ ๊ธฐ๊ธฐ์์ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ทจํฉํ๊ณ ๋ค์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ ํต์ ์ค๋ฒํค๋๊ฐ ์ ์ง ์์ผ๋ฏ๋ก, ๋ ์ด์ด๋ฅผ ๋ณํฉํ์ฌ ํด๋น ๊ทธ๋ฃน ๋ด์์๋ ํต์ ์ด ๋ฐ์ํ์ง ์๋๋ก ํ๋ฉด ์์คํ ์ ๋ฐ์ ํจ์จ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
- ๋ ์ด์ด ๋ณํฉ ์กฐํฉ(Fused-layer Configuration, FLC) ๋ฐ ์ ๋ ฅ ๋ฐ์ดํฐ ๋ถํ ๋น์จ์ ๋ํ ํ์ ๊ณต๊ฐ์ด ๋์ด ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ์ํํ ํ์๊ฐ ์์ต๋๋ค.
-
๋ณธ ์ฐ๊ตฌ์์ ์ ์ํ๋ Legion ํ๋ ์์ํฌ์ ๊ตฌ์ฑ ์์ ๋ฐ ํ๋ฆ์ ๋ํ๋ธ ๊ทธ๋ฆผ์ ๋๋ค.
-
Preprocessor๋ ๋์ ๋ชจ๋ธ ๋ด ๋ชจ๋ธ์ ํน์ง์ ์ ๋ฆฌํ๊ณ , ํ์ฉํ ์ฃ์ง ๋๋ฐ์ด์ค์์ RPC ์ฐ๊ฒฐ์ ์ํํฉ๋๋ค.
-
Cost Predictor๋ ๊ฐ ๊ธฐ๊ธฐ์์์ ๋ณํฉ ์ด์ ๋จ์ผ ๋ ์ด์ด์ ์ํ ๋น์ฉ์ ํ๋กํ์ผ๋ง ํด ์ฌ๋ฌ ์ข ๋ฅ์ ํ์ ๊ฐ๊ฐ ๊ธฐ๋กํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ ๋ณํฉ ๋ ์ด์ด์ ์ํ ์๊ฐ์ ์์ธกํฉ๋๋ค. ์ด๋ ๊ฐ ๊ธฐ๊ธฐ๋ ์ฑ๋ฅ์ ๊ธฐ๋ฐํ์ฌ ์๋ก ๋ค๋ฅธ ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ํ ๋น ๋ฐ๋๋ก ํฉ๋๋ค.
- Set (S) / Get Matrix (R): ๊ฐ๊ฐ ์ ๋ ฅ ๋ฐ์ดํฐ ๋ฐ ์ถ๋ ฅ ๋ฐ์ดํฐ ์ ์ก ์๊ฐ์ ์ ์ฅํฉ๋๋ค.
- Run Matrix (E): ํน์ ๋ ์ด์ด ์ฐ์ฐ ์ํ ์๊ฐ์ ์ ์ฅํฉ๋๋ค.
- Alpha Matrix (A): ๋ ์ด์ด ๋ณํฉ์ผ๋ก ์ธํด ์ฆ๊ฐํ๋ ์ค๋ฒํค๋๋ฅผ *์ํ(alpha)*๋ผ๋ ๋น์จ ๊ฐ์ผ๋ก์ ํ๊ธฐํ์ฌ ์ ์ฅํฉ๋๋ค.
-
FLC Optimizer๋ ์์ธก๋ ๋ณํฉ ๋ ์ด์ด ์ํ ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ต์ ์ ๋ ์ด์ด ๋ณํฉ ์กฐํฉ์ ํ์ํฉ๋๋ค.
- ์ํฉ์ ๋ฐ๋ผ ์ฝ๊ฐ์ ์์ธก ์ค์ฐจ๋ก ์ต์ ์ ์กฐํฉ์ ๋์น ์ ์์ผ๋ฏ๋ก, ๊ฐ์ฅ ํจ์จ์ ์ผ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๋ ์ด์ด ๊ทธ๋ฃน ๊ฐ ๋ณํฉ์ 1ํ ๋ ์งํํ๋ Wild Card ๋ก์ง์ ์ ์ฉํ FLC์ ์ด์ ์ ์ฐพ์๋ FLC๋ฅผ ๋น๊ตํด ์ต์ ์ FLC๋ฅผ ์ต์ข ์ ์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค.
- ํน์ ๋ณํฉ ๋ ์ด์ด์ ์์ธก ๋น์ฉ์ ๋ค์ ์ธ ๊ฐ์ ํฉ์ผ๋ก ํํ๋ฉ๋๋ค.
- ์ฆ๊ฐํ ์ ๋ ฅ ๋ฐ์ดํฐ ๋น์จ๋งํผ ๊ธฐ์กด ์ ์ก ๋น์ฉ์ ์ํ ๊ฐ์ ๊ณฑํฉ๋๋ค.
- ๋ณํฉ ๋ ์ด์ด๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ ๋จ์ผ ๋ ์ด์ด์ ๊ธฐ์กด ์ํ ๋น์ฉ์ ๋์๋๋ ์ํ ๊ฐ์ ๊ฐ๊ฐ ๊ณฑํด ๋ํฉ๋๋ค.
- ์ทจํฉ ํ ์ถ๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ ๋ณํ์ง ์์ผ๋ฏ๋ก ๊ธฐ์กด ์ ์ก ๋น์ฉ์ ๊ทธ๋๋ก ํ์ฉํฉ๋๋ค.
- Firefly-RK3399(F)๋ง์ ์ต๋ 6๋๊น์ง ํ์ฉํ ๋(1ํ), Odroid-XU4(O)๋ง์ ์ต๋ 3๋๊น์ง ํ์ฉํ ๋ (2ํ), ๊ทธ๋ฆฌ๊ณ ๋ ์ข ๋ฅ์ ๊ธฐ๊ธฐ๋ฅผ ์กฐํฉํ์ฌ ์ต๋ 6๋(nF + mO: Firefly n๋์ Odroid m๋ ํผ์ฉ)๊น์ง ํ์ฉํ ๋(3ํ), ์ ์ฒด ํ์ ๋ฐฉ์(Full Searching Scheme, FSS) ๋๋น Legion์ด ์ฐพ์ ์ต์ ์ ํ์ ์กฐํฉ์ ๋ณ๋ ฌํ ์ฑ๋ฅ์ ๋น๊ตํ ๊ฒ์ ๋๋ค.
- ๋ ์ ์ ํ๋กํ์ผ๋ง ๋น์ฉ์ด ์๊ตฌ๋๋ Legion์ ํ์ ๊ธฐ๋ฒ์ ํ์ฉํ ๋, ๋๋ถ๋ถ์ ์ํฉ์์ ์ ์ฒด ํ์ ๋ฐฉ์๊ณผ ๋น์ทํ ๋ณ๋ ฌํ ์์ค์ ๋ณด์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
- ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ ์ข ๋ฅ์ ๊ธฐ๊ธฐ๋ฅผ ํ์ฉํด ์ ์ฒด ํ์ ๋ฐฉ์ ๋๋น Legion์ ํ์ ๊ธฐ๋ฒ ํ์ฉ ์ ํ๋กํ์ผ๋ง์ ์ํ ์ด ์์ ์๊ฐ์ ๋น๊ตํ ๊ฒ์ ๋๋ค.
- ๋ชจ๋ธ ๋ฐ ๊ธฐ๊ธฐ ๊ตฌ์ฑ ๋ณ๋ก ํ๊ท 28~66๋ฐฐ ๊ฐ๋ ๋ ๋น ๋ฅธ ํ์์ด ๊ฐ๋ฅํจ์ ํ์ธํ์์ต๋๋ค.
- Server
- Intel i7-8700K / DDR4 16GB
- Ubuntu 20.04 LTS, Python 3.8
- TVM 0.8.0dev0, LLVM 8.0.0
- Edge (with 100 Mbps ethernet connection)
- Firefly-RK3399
- Cotex-A72 (1.8 GHz Dual Core) + Cortex-A53 (1.1 GHz Quad Core)
- Ubuntu 16.04 LTS, Python 3.6
- TVM 0.8.0dev0, LLVM 8.0.0
- Odroid-XU4
- Cortex-A15 (2.0 GHz Quad Core) + Cortex-A7 (1.4 GHz Quad Core)
- Ubuntu 16.04 LTS, Python 3.6
- TVM 0.8.0dev0, LLVM 8.0.0
- 100 Mbps Ethernet Connection
- Firefly-RK3399
-
๋ณธ ์ฐ๊ตฌ๋ ๋ค์ ์ ํ ์ฐ๊ตฌ๋ก๋ถํฐ ํฐ motivation์ ์ป์์ต๋๋ค.
-
๋ค๋ง, ๋ณธ ์ฐ๊ตฌ์์๋ ํ๋กํ์ผ๋ง ๋ฐ์ดํฐ ์์ง ๋น์ฉ์ ๊ณ ๋ คํ์ฌ ๊ฐ ๊ธฐ๊ธฐ์ ์ฐ์ฐ ์ํ ๋ฐ ๋ฐ์ดํฐ ํต์ ์๊ฐ ์์ธก์ ์ํ ๋ชจ๋ธ์ ํ์ตํด ํ์ฉํ๋ ๊ฒ์ ์ง์ํ๋ ค๊ณ ํ์์ต๋๋ค.
- ์ฑ๋ฅ ๋น๊ต ์คํ ์ ๊ธฐ์กด ์ฐ๊ตฌ์์ ์ ์ํ ๊ฐ ๊ธฐ๊ธฐ์์์ ์์ ์๊ฐ ์์ธก ๋ชจ๋ธ์ ๋น์ทํ๊ฒ๋๋ง ๊ตฌ์ถํ์ฌ ์ด๋ฅผ ํจ๊ป ๋น๊ตํ ์ ์์๋ค๋ฉด ๋ ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ ์ ์์์ ๊ฒ์ผ๋ก ์๊ฐํ๊ณ , ๊ด๋ จํด ํด๋น ์ฌํญ์ ๊ฐ์ ์๋ํด ๋ณผ ์์ง๊ฐ ์์ต๋๋ค.
- ์์ฐจ ์ฐ๊ฒฐ(skip connection) ๋ฑ์ด ๋ ์ ๊ทน์ ์ผ๋ก ํ์ฉ๋ ๋ชจ๋ธ ๋ฑ์ ๋ํด์ ๋ณ๋ ฌํ ์ฑ๋ฅ์ ๋์ผ ์ ์๋๋ก ์ค์ผ์ค๋ง ๋ก์ง์ ๊ฐ์ ํ ์ ์์ผ๋ฉด ๋ ์ข์ ํ๋ ์์ํฌ๊ฐ ๋ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
- ๋ ํฐ ๊ท๋ชจ์ ๋ชจ๋ธ์ ๋ ์ข์ ์ฑ๋ฅ์ ๊ธฐ๊ธฐ์ ๋ํด ์ ์ฉํด ๋ณด๊ณ , ํด๋น ๊ฒฐ๊ณผ๋ฅผ ์ ์ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.



