Apache MXNet์ CNN(Convolutional Neural Network)๊ณผ LSTM(Long Short-Term Memory Network)์ ๋น๋กฏํ์ฌ ์ต์ฒจ๋จ ๋ฅ ๋ชจ๋ธ์ ์ง์ํ๋ ์ ์ฐํ๊ณ ๊ตฐ๋๋๊ธฐ๊ฐ ์์ผ๋ฉฐ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ์ ๋๋ค. ์ด ํ๋ ์์ํฌ๋ ํ๊ณ์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ผ๋ฉฐ ์ฃผ์ ๋ํ ๋ช ๊ณณ์ ์ฐ๊ตฌ์๋ค์ ํ์ ๊ณผ ๋ ธ๋ ฅ์ ํตํด ํ์ํ์์ต๋๋ค. ์ปดํจํฐ ๋น์ , ์์ฑ, ์ธ์ด ์ฒ๋ฆฌ ๋ฐ ์ดํด, ์์ฑ ๋ชจ๋ธ, ๋์ ์ ๊ฒฝ๋ง, ์ํ ์ ๊ฒฝ๋ง์์ ํ์ํ ์ฑ๋ฅ์ ๋ฐํํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
MXNet์ ์ฌ์ฉํ๋ฉด ๋ฐฉ๋ํ ํด๋ผ์ฐ๋ ์ธํ๋ผ์์ ๋ชจ๋ฐ์ผ ๋ฐ ์ปค๋ฅํฐ๋ ๋๋ฐ์ด์ค๊น์ง ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก์์ ๋คํธ์ํฌ๋ฅผ ์ ์, ํ๋ จ ๋ฐ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๋ค์์ ์ผ๋ฐ ์ธ์ด๋ฅผ ์ง์ํ๊ณ ๋ช ๋ นํ ๋ฐ ๊ธฐํธ ํ๋ก๊ทธ๋๋ฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฅ์ ์ง์ํ๋ ๋งค์ฐ ์ ์ฐํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. MXNet์ ๋ํ ๋งค์ฐ ๊ฐ๋ณ์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ GPU์ ์ฌ๋ฌ ์์คํ ์ ๊ฑธ์ณ ํ์ฅํ ์ ์์ผ๋ฏ๋ก ํด๋ผ์ฐ๋์์ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ จ์ ์ํํ ๋ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
AWS Deep Learning AMI๋ฅผ ์ฌ์ฉํ๋ฉด AWS์์ Apache MXNet์ ์ฝ๊ฒ ์์ํ ์ ์์ผ๋ฉฐ, ์ด AMI๋ Amazon Linux์ฉ๊ณผ Ubuntu์ฉ์ผ๋ก ์ ๊ณต๋ฉ๋๋ค.
Apache MXNet ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ธฐ
GitHub์ ์ฐธ์ฌํ๊ธฐGitHub ํ๋ก์ ํธ ํ์ด์ง์์ ์ํ ์ฝ๋, ๋ ธํธ ๋ฐ ์์ต์ ์ฝํ ์ธ ๋ฅผ ํ์ธํ์ญ์์ค.
ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฅ
๋คํธ์ํฌ ์ ์๋ฅผ ๊ฐ์ํํ๊ณ ์ต์ํ ์ธ์ด๋ฅผ ์ฌ์ฉ
์ด๋์ฑ
๋ชจ๋ธ์ด ๋ค์ํ ๋๋ฐ์ด์ค์ ํ๋ซํผ์์ ์คํ๋ ์ ์์ผ๋ ค๋ฉฐ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ฌ์ฉ์ด ํ์
ํ์ฅ์ฑ
ํฐ ๊ท๋ชจ์ ์ ๊ตํ ๋ชจ๋ธ์ ์ ์ํ๊ฒ ํ๋ จํ๊ธฐ ํ์ํ ์ฌ๋ฌ GPU ๋ฐ ํธ์คํธ๋ก ํ์ฅํ๋ ๊ธฐ๋ฅ
Apache MXNet์์๋ ๋ช ๋ นํ ์ธ์ด์ ๊ธฐํธ ์ธ์ด๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ค์ ๋ก "MXNet"์ด๋ผ๋ ์ด๋ฆ์ "์กฐํฉ๋ ๋คํธ์ํฌ(mixed networks)"์์ ์ ๋๋์์ต๋๋ค. ์ฆ, ๊ธฐํธ ์คํ๊ธฐ์ ์ต์ ํ์ ๋๋ถ์ด ๋ฐ๋ณต ๋ฃจํ๋ ํ๋ผ๋ฏธํฐ ์ ๋ฐ์ดํธ์ ๊ฐ์ ๋ช ๋ นํ ์ธ์ด์ ์ ์ฐํ ๊ธฐ๋ฅ์ ํตํด ๋คํธ์ํฌ ๊ณ์ธต์ ์กฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์กฐํฉ๋ ํน์ฑ์ผ๋ก ์ธํด MXNet์ ๋ณต์กํ ๋ค๊ณ์ธต์ ๋ฅ ๋ฌ๋ ๋ชจ๋ธ์์ ์ข ๋ ์ฝ๊ฒ ์๋ํ ์ ์๋ ๊ณ ์ ํ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
import mxnet as mx
a = mx.nd.zeros((100, 50))
b = mx.nd.ones((100, 50))
c = a + b
c += 1
print(c)
import mxnet as mx
net = mx.symbol.Variable('data')
net = mx.symbol.FullyConnected(data=net, num_hidden=128)
net = mx.symbol.SoftmaxOutput(data=net)
texec = mx.module.Module(net)
texec.forward(data=c)
texec.backward()
๋ํ, MXNet์ C++, JavaScript, Python, r, Matlab, Julia, Scala ๋ฐ Go๋ฅผ ๋น๋กฏํ์ฌ ํ๋ ์์ํฌ์ ํ๋ฐํธ ์๋์์ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์งํฉ์ ์ง์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ ์ต์ํ ์ธ์ด๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ ์ฆ์ ๋ฅ ๋ฌ๋์ ์คํํ๊ธฐ ์์ํ ์ ์์ต๋๋ค. ๋ฐฑ์๋์์๋ ์ฝ๋๊ฐ ์ธ์ ๋ C++๋ก ์ปดํ์ผ๋๋ฏ๋ก ํ๋ฐํธ ์๋์์ ์ด๋ค ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ์ผ๊ด๋ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ์ ์ผ์์์ ์ธ๊ณต ์ง๋ฅ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ ๋ ๋ง์ ๋ถ๋ถ์ ์ฐจ์งํจ์ ๋ฐ๋ผ ๋ค์ํ ๋๋ฐ์ด์ค์์ ์ด๋ฅผ ๋ฐฐํฌํ ์ ์๋ ๊ธฐ๋ฅ์ด ๋์ฑ ์ค์ํด์ง๊ณ ์์ต๋๋ค. ์คํ ๋ฆฌ์ง๊ฐ ์ค์ํ๊ณ AI๊ฐ ์ฃ์ง์ ๋ชจ๋ฐ์ผ๊ณผ ์ปค๋ฅํฐ๋ ๋๋ฐ์ด์ค์ ๋ฐฐํฌ๋๋ ๊ฒฝ์ฐ์๋ ํนํ ๊ทธ๋ฌํฉ๋๋ค.
Apache MXNet ๋ชจ๋ธ์ ์์ฃผ ์ ์ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด 1์ฒ ๊ณ์ธต ๋คํธ์ํฌ์ ํ์ํ ์คํ ๋ฆฌ์ง๋ 4GB ๋ฏธ๋ง์ ๋๋ค. ์ด ํ๋ ์์ํฌ๋ ๋ํ ํ๋ซํผ ๊ฐ์ ์ด๋์ด ๊ฐ๋ฅํฉ๋๋ค. ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(๋ชจ๋ ์ข ์์ฑ ํฌํจ)๋ฅผ ๋จ์ผ C++ ์์ค ํ์ผ์ ๋ด์ ์ ์์ผ๋ฉฐ iOS์ฉ๊ณผ Android์ฉ์ผ๋ก ์ปดํ์ผํ ์ ์์ต๋๋ค. ๊ทธ๋ฟ๋ง ์๋๋ผ JavaScript๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ด์์๋ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ ์ฐ์ฑ์ ๋ชจ๋ธ์ ์์ฃผ ๋ค์ํ ์ฌ์ฉ ์ฌ๋ก ์งํฉ์ ๋ฐฐํฌํ์ฌ ๊ฐ์ฅ ๊ด๋ฒ์ํ ์ฌ์ฉ์ ์งํฉ์ ๋๋ฌํ ์ ์์ต๋๋ค.
Apache MXNet์ ๋ฐ์ดํฐ ์ข ์์ฑ์ ์ผ๋ จ์ ์ฝ๋๋ก ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ ์ธํ ๋ฐ ๋ช ๋ นํ ์์ ๋ชจ๋ ์ฆ์ ์๋์ผ๋ก ๋ณ๋ ฌํํ๋ ๋์ ์ธ ์ข ์์ฑ ์ค์ผ์ค๋ฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ฉ๋๋ค. ๊ทธ ์ธ์ ๊ทธ๋ํ ์ต์ ํ ๊ณ์ธต์ ๋น ๋ฅธ ์ ์ธํ ์คํ๊ณผ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค.
์ด๋ฌํ ์๋ ๋ณ๋ ฌํ๋ฅผ ํตํด MXNet์ ๋งค์ฐ ํจ์จ์ ์ผ๋ก ํ์ฅ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด MXNet์ ํจ์จ์ฑ์ ๋ฒค์น๋งํฌํ๋๋ก ๊ณ์ ์ฆ๊ฐํ๋ EC2 P2 GPU ์ง์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๊ธฐ ์๋ ์ด๋ฏธ์ง ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์ธ Inception v3๋ฅผ ํ๋ จํ์ต๋๋ค.
๋นจ๊ฐ์ ์ ์ GPU๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆฌ๋ฉด ์๋๊ฐ ๋ ๋ฐฐ๋ก ๋นจ๋ผ์ง๋ ์๋ฒฝํ ํจ์จ์ฑ์ ๋ํ๋ ๋๋ค. MXNet์ ์ฒ๋ฆฌ๋์ ์ฌ์ฉ๋ GPU ์์ ๊ฐ์ ๊ฑฐ์ ๋น์จ๋ก ์ฆ๊ฐํ์ต๋๋ค. 16GPU์ ๋จ์ผ ์ธ์คํด์ค์์ Apache MXNet์ 91%์ ํจ์จ์ฑ์ ๋ฌ์ฑํ์ต๋๋ค.
ํ์ง๋ง ๋๊ท๋ชจ ๋คํธ์ํฌ์ ๊ฒฝ์ฐ P2 ์ธ์คํด์ค ํด๋ฌ์คํฐ๋ก ํ์ฅํ๋ ๊ฒ์ด ์ข์ ์ ์์ต๋๋ค. ์ด ์๋๋ฆฌ์ค์์ ๊ฐ์ ๋ฒค์น๋งํฌ๋ฅผ ์คํํ๋ฉด GPU ์๊ฐ ํญ๋ฐ์ ์ผ๋ก ์ฆ๊ฐํ ๋ ํจ์จ์ฑ์ ์์ฃผ ์กฐ๊ธ ๊ฐ์ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
ํ์ง๋ง AWS์์ ํ๋ ์ด์ผ๊ธฐ๋ฅผ ๊ทธ๋๋ก ๋ฏฟ์ ํ์๋ ์์ต๋๋ค. ํด๋ผ์ฐ๋์ ์ด์ ์ค ํ๋๋ ์์ฝ๊ฒ ์์ฒด ์ฝ๋๋ฅผ ์ฌ์ฉํด ์ง์ ํ ์คํธํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. AWS๋ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋๋ก GitHub์์ ๋ฒค์น๋งํฌ๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค. AWS์์๋ ์ฌ๋ฌ๋ถ์ด ์๋ ๋ฐฉ์์ ์ดํด๋ณด๊ณ ์ง์ ์คํํ์ฌ ์์ฒด ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด๊ธธ ๊ถ์ฅํฉ๋๋ค. ๋ํ, AWS CloudFormation ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ํ์ํ ์ฉ๋์ ์ ์ํ๊ฒ ๊ตฌ๋ํด๋ณผ ์ ์์ต๋๋ค.
์ฝ๊ฒ AWS์์ Apache MXNet ์ฌ์ฉ์ ์์ํ ์ ์์ต๋๋ค. AWS Marketplace๋ก ์ด๋ํ์ฌ AWS Deep Learning AMI๋ฅผ ์์ํ๋ฉด ๋ฉ๋๋ค.
AMI๋ MXNet์ ์์ ์ ์ธ ์ต์ ๋น๋์ ๊ทธ ์ธ ์ฌ๋ฌ ์ธ๊ธฐ ์๋ ๋ฅ ๋ฌ๋ ํ๋ ์์ํฌ ๋ฐ ๋๊ตฌ๋ฅผ ๋ฌด๋ฃ๋ก ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉํ EC2 ์๊ฐ์ ๋ํด์๋ง ๋น์ฉ์ ์ง๋ถํ๋ฉด ๋ฉ๋๋ค.

