Accelerate Training Using a GPU
Accelerate the training of an object recognition network using an NVIDIA GPU.
First obtain the training data.
In[1]:=
obj = ResourceObject["CIFAR-10"];
trainingData = ResourceData[obj, "TrainingData"];
RandomSample[trainingData, 5]
Out[1]=
Extract the set of classes.
In[2]:=
classes = Union@Values[trainingData]
Out[2]=
Construct a high-accuracy net using repeated modules.
In[3]:=
module = NetChain[{
ConvolutionLayer[100, {3, 3}],
BatchNormalizationLayer[],
ElementwiseLayer[Ramp],
PoolingLayer[{3, 3}, "PaddingSize" -> 1]
}]
Out[3]=
In[4]:=
net = NetChain[{
module, module, module, module, FlattenLayer[], 500, Ramp, 10,
SoftmaxLayer[]},
"Input" -> NetEncoder[{"Image", {32, 32}}],
"Output" -> NetDecoder[{"Class", classes}]
]
Out[4]=
Train the network and record the time taken.
In[5]:=
{time, trained} =
AbsoluteTiming @ NetTrain[net, trainingData, TargetDevice -> "GPU"];
Training on an NVidia Titan X GPU takes around 10 minutes.
In[6]:=
time
Out[6]=
For comparison, CPU training can take upward of 2 hours.
Evaluate the network on a selection of images.
In[7]:=
trained[{\!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1:eJx9VtlvG/cRDtqXPvaxDwWaAr2CImnSFEmaGLJkW1LtWLFCiTp435fIXd5c
7k3ufV/k8hIPy4pbtAgKBOhDgf5xnRVtJehDjc+L5Yr8vplvZvY3v8ygocKP
3nnnndZP4BJK9/aazXT/5KfwIYy0ykUkn3uKtPPFfPOzzI/h4btv/gf3gqIK
si4qpiAbvKRLqqUarmGPLXfijKauP3F93x6NLM8FmI5j2hZAty3VNFRTUy0F
fgFXzVR1UwNohgpQNFlSRF7kZN2QVBNotxJwVXRHt0YB/3jmTabeBCTGzngE
sEee7ToA03UMx9ZsU7PeQLcN8wcwLH2ropqWrBmSZgiKxkkKL6miqivwZwsC
3nK+Yf5eYpuL6+i2rVnWHT9834S8LAdgAr6XMExR1cAlTpIHgsjyPCsIcC9p
OkhDkMATcL7lDyTuVEAiSOE+fgtobdu1t/wA4Ae7gIeXFSBkeYEeciQ7IBiW
GgxZXuRlWdY18Bl4gA04wagttoncpWD9f35RVYdiEDY1GOA03SOITr/fxXG4
hydDgRcVWdG1IH3XAdp7fsB9ChBD8AUIA2Ab1tsq6KYuKDLDDQmGxkhgxprd
Tr3danTabayHETjF0JCHoio6MEDnuI5155X1fQksxYB66XcltgIJywC85Tc4
SSRZBsiBEJhrjXq1jtbqdbTVbPW6zIDVDEPRVFGWIBL1TkW3gv7cOgNPwMOt
jfDRAPof8GuGzvIcBN8jcIgcOK9QpILUykj1Cq012y2KJnECw0mcGTDgGCtI
0M+yoQEgZrhKmgq6oqpsJcAlIyA33/JrYA5OU128D55A8OVatVy7KtcQpNFu
Nhtn4a+fPN5tteo40e9TFCfquj3WbBvIRU0BZl6WBgI/FAW4B4nAqCDHQAXq
q+pv+O/j3/qDtluiNuQFLJmIxCJnHEsIXFAIf7qYTJeiJDMstJsA1Yef08MB
AFTeJqIHLWfpW37wB/zvUySUAFSgxNsqMzzBSxjLkECgiowqc65rSpKIolVJ
GjB0P5NJIQ20DwYyNEQIEpAFpLP1CpwBqDo0pwAxUAMWvnAfDMEwPbKPkW1V
VRwHhnCgaArLkp1O7ST0ZT4X17VhMh2NJC4K1WIb70NgUET4OWQBEhJIqAp0
BVzhI0jcS0O9tiXjZWEoQfOous5RVKvbaaRS0UIhXq2m9/e/iETCmVQsGj0L
hUNlBIHeg6y3EkEtgApUFFmQROAMMtJU7W6Cgt4ewdQ4mq3Lpmw4usA28Wam
dxWLhl8k4+FmM59KhuLRk3zynMbqoePn6WwGbTWgZKACPtMDdsBzPKhI4pDn
glrA2HnuyB9PZtPpYj5ZzMfT6cj3nJG5uPZVqkajlwpVbBfCxdRJLh1qN7Ik
ViZ7qCVTWDOfTiZzuSyMTLVRb0Eed1PJQjl4DsYHYvbGI2CeXy+ul9fX69Vi
vZovl/Pr2WwxXl6P5yK6EFJkPWYzebJ6JvWSXD+P9xCYchpHS+nw82dPT48O
u/UqUg/aG6amC4kQOElTBEV6E38ynwHzarNev9ysb16uX92sXm5Wm+ViNVsu
vNdm6zs37TPpXumskw9hV3GqU0mmMhJDfrvRhp1C+vI4/GI/Gg4V8/lSrVKG
0WzUtyqdXhcMWSyvgfnm9tWrb263uLm93dyslxvQHa3F2qb37FbKXp599Xj/
yVkk2cMpmL2xwfzrtf6fbycbd3BViB08fphPnXewDoKgxWKxikA6CFKvzRbz
5Xr18tUN0N6+/gYQSAT8m+UGyuGu5MY4+7lXedTKHofCJ6VqnePlfqvKM3VD
6E4tXhWpSjndRLIyhyE1pFyu5KAe+Uy+mCuU8v/D/yaFLf96Mll4c6Vzg+4v
ip9Nmkd8Ly3iRV8nDLbFd8pMszDsQxVameQlWs2zJM5SVKVSicWimVw6kYon
04kt/+bmJUjcY3Nzs365Wiz96dxbuvzfu8eb3BeT/K6GfLUYxDcGIhGFYSsh
t2J0PczWzjqZ58Xzw9jxs2TkFKmWU8l4sZSPJ2OxRHQKxV0t10FB11uA3PUK
sJjOR+OxPR+pf2Wyi/SOfvHpMLFHxHYH1YtmLoRmQ73iEdc5XTvkNy4xI2Nc
fj+6/+Hp0RPYVMCZVCaZzqagM2eLxR3nEgoNgEaFpKbziT91xyNz5MozoTW/
emondoTITuP5x+Wv9zInB4mvHh49/Ch/eciy2O1m/o9X/o1LLIWrPpItl8D5
XLFcAIymU382ny1Wk/nCn80mAabjCQzbaOQ7nqc7juKagt9LGvFdPrLXPn1w
vvv+8e7HJ48+ih09ePDpr//8+YeVUs7WhZknv9qMVr6usPCWbME7voogwYbj
w8AuvcncGU8834dB9saeN3a9se16uu0olqvYGkPGDujwDhn9S+LpJ6G9Px5+
+ruHH//ig/ff/eDD98Jnx616Bes17fF4MvEsVcYwvN0lO10SNjTY05zRzPZ8
0/Us13XgHPcANgAeBK8iVzE9VaQbzfBB7cVe8uBPH/3m55/84Ve//+3Pnuzv
ZPLZeqfZ6feanW6HIHoU3e3jxUq10cAIkoGYbW9iOr5hj2Cn+uGmZDu24wC/
6XiG4+pwpMscLTTLRPrk4NGDJwcPj44e5wsZZjjEGQqjCIzuYzSJ0QysH2gd
oXECXp/2aArksBBqpgeboaIbGqxdcLoFZ6jpwj/ghWXGhAVTha3HERiVCc59
juOy6UQsHoWDCU4ZAo4iqDQ5wJhhrd0tX1UYCkdrKOyZQA47razZsHyKCmwL
sIJaYIrh+ayo8Yox8v3xeKTyrDik4fxKZxPZYhltdk4vLnf29mOpQrWN1VpY
B6NavUELH0SzpS+PQ4VSIRKNQPBbctiiOVGjeZ03Jpzm07xF8eaLi1QokqEH
0mS+FESp3uxU0WY8lcmWKslcKZrJn54nzqO5aK56Hs+hzS4nWWiHTuSudg+f
Hj57FjoNgS0ybM6ixgx4eijy+uj1P/+9+dt3XUqsNPrHF6lPdg4u0le1HlVE
ez1igOF0ulDJVCr5KnoWTV1EUmfR9IvzeKpw1e6RBM0n0qXLeHb/6ZePDg5f
fB36L9WKDCM=
"], {{0, 32}, {32, 0}}, {0, 255},
ColorFunction->RGBColor],
BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{32, 32},
PlotRange->{{0, 32}, {0, 32}}]\), \!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1: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
1E6v/v8AyuG4FA==
"], {{0, 32}, {32, 0}}, {0, 255},
ColorFunction->RGBColor],
BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{32, 32},
PlotRange->{{0, 32}, {0, 32}}]\), \!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1: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
gLL6
"], {{0, 32}, {32, 0}}, {0, 255},
ColorFunction->RGBColor],
BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{32, 32},
PlotRange->{{0, 32}, {0, 32}}]\), \!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1: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
2qi1+XdEhdkrN3l2nhthRQ1Pa+Oqq/8JcIUI+w==
"], {{0, 32}, {32, 0}}, {0,
255},
ColorFunction->RGBColor],
BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{32, 32},
PlotRange->{{0, 32}, {0, 32}}]\), \!\(\*
GraphicsBox[
TagBox[RasterBox[CompressedData["
1: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
Ew3JiQ==
"], {{0, 32}, {32, 0}}, {0, 255},
ColorFunction->RGBColor],
BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{32, 32},
PlotRange->{{0, 32}, {0, 32}}]\)}]
Out[7]=