์ ๋ ํ์ฌ ๋งค์ฐ ๋ง์ ์์ ํ
์คํธ ๋ฐ์ดํฐ(์ฝ 70GiB์ ํ
์คํธ)์ ๋ํด ๊ฒฝ๋ ๋ชจ๋ธ์ ํ๋ จํ๊ณ ์์ต๋๋ค.
์ด๋ฅผ ์ํด ํด๋ฌ์คํฐ์์ ์์คํ
์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค( grid5000 ํด๋ฌ์คํฐ ๋คํธ์ํฌ์ 'grele' ).
์ด ๋งค์ฐ ์ด์ํ CUDA ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ค๋ฅ ๋ฉ์์ง๋ฅผ 3์๊ฐ ๋์ ๊ต์กํ ํ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 12.50 MiB (GPU 0; 10.92 GiB total capacity; 8.57 MiB already allocated; 9.28 GiB free; 4.68 MiB cached)
.
๋ฉ์์ง์ ๋ฐ๋ฅด๋ฉด ํ์ํ ๊ณต๊ฐ์ด ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ์์ธ์ด ๋ฌด์์ธ์ง ์์ญ๋๊น?
์ฐธ๊ณ ๋ก ๋ด ์ฌ์ ์ฒ๋ฆฌ๋ torch.multiprocessing.Queue
๋ฐ ๋ด ์์ค ๋ฐ์ดํฐ ๋ผ์ธ์ ๋ํ ๋ฐ๋ณต์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฆ์์์ ์ฌ์ ์ฒ๋ฆฌํฉ๋๋ค.
Traceback (most recent call last):
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/site-packages/memory_profiler.py", line 1228, in <module>
exec_with_profiler(script_filename, prof, args.backend, script_args)
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/site-packages/memory_profiler.py", line 1129, in exec_with_profiler
exec(compile(f.read(), filename, 'exec'), ns, ns)
File "run.py", line 293, in <module>
main(args, save_folder, load_file)
File "run.py", line 272, in main
trainer.all_epochs()
File "/home/emarquer/papud-bull-nn/trainer/trainer.py", line 140, in all_epochs
self.single_epoch()
File "/home/emarquer/papud-bull-nn/trainer/trainer.py", line 147, in single_epoch
tracker.add(*self.single_batch(data, target))
File "/home/emarquer/papud-bull-nn/trainer/trainer.py", line 190, in single_batch
result = self.model(data)
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "/home/emarquer/papud-bull-nn/model/model.py", line 54, in forward
emb = self.emb(input)
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/site-packages/torch/nn/modules/sparse.py", line 118, in forward
self.norm_type, self.scale_grad_by_freq, self.sparse)
File "/home/emarquer/miniconda3/envs/pytorch/lib/python3.6/site-packages/torch/nn/functional.py", line 1454, in embedding
return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
RuntimeError: CUDA out of memory. Tried to allocate 12.50 MiB (GPU 0; 10.92 GiB total capacity; 8.57 MiB already allocated; 9.28 GiB free; 4.68 MiB cached)
๋์ผํ ๋ฐํ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค.
Traceback (most recent call last):
File "carn\train.py", line 52, in <module>
main(cfg)
File "carn\train.py", line 48, in main
solver.fit()
File "C:\Users\Omar\Desktop\CARN-pytorch\carn\solver.py", line 95, in fit
psnr = self.evaluate("dataset/Urban100", scale=cfg.scale, num_step=self.step)
File "C:\Users\Omar\Desktop\CARN-pytorch\carn\solver.py", line 136, in evaluate
sr = self.refiner(lr_patch, scale).data
File "C:\Program Files\Python37\lib\site-packages\torch\nn\modules\module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "C:\Users\Omar\Desktop\CARN-pytorch\carn\model\carn.py", line 74, in forward
b3 = self.b3(o2)
File "C:\Program Files\Python37\lib\site-packages\torch\nn\modules\module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "C:\Users\Omar\Desktop\CARN-pytorch\carn\model\carn.py", line 30, in forward
c3 = torch.cat([c2, b3], dim=1)
RuntimeError: CUDA out of memory. Tried to allocate 195.25 MiB (GPU 0; 4.00 GiB total capacity; 2.88 GiB already allocated; 170.14 MiB free; 2.00 MiB cached)
@EMarquer @OmarBazaraa ์ฐ๋ฆฌ๊ฐ ์คํํ ์ ์๋ ์ต์ํ์ ์ฌํ ์์ ๋ฅผ ์ค ์ ์์ต๋๊น?
๋ ์ด์ ๋ฌธ์ ๋ฅผ ์ฌํํ ์ ์์ผ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ์ข
๋ฃํฉ๋๋ค.
RAM์ ์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ ์ ์ฅ์ ์ค๋จํ๋ฉด ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค.
@OmarBazaraa , ๋ค์๊ณผ ๊ฐ์ด ๊ทํ์ ๋ฌธ์ ๊ฐ ๋ด ๋ฌธ์ ์ ๋์ผํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ด ๋ฌธ์ ์ ๋ํ ๋์ ์ด์ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด CUDA ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ง ์๊ฑฐ๋ CUDA์ ๋๋ฌด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ ค๊ณ ํฉ๋๋ค.
CUDA ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ์ง ์์์ผ๋ก์จ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ CUDA์ ํ
์์ ๋ํ ์ฐธ์กฐ๊ฐ ์ฌ์ ํ ์์ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ ํ
์๋ฅผ ์ญ์ ํ์ฌ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น?
CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 196.00MiB ํ ๋น ์๋(GPU 0, 2.00GiB ์ด ์ฉ๋, 359.38MiB ์ด๋ฏธ ํ ๋น๋จ, 192.29MiB ์ฌ์ ๊ณต๊ฐ, 152.37MiB ์บ์๋จ)
@aniks23 ์ฐ๋ฆฌ๋ ์ด ๊ฒฝ์ฐ ๋ ๋์ ๊ฒฝํ์ ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ํจ์น๋ฅผ ์์ ์ค์ ๋๋ค. ๊ณ์ ์ง์ผ๋ด ์ฃผ์ธ์
๋ด ์์คํ
์ด ์ฒ๋ฆฌํ ์ ์๋ ๋ชจ๋ธ์ด๋ ๋คํธ์ํฌ์ ํฌ๊ธฐ๋ฅผ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ด ๋ฌธ์ ์ ๋ถ๋ชํ์ง ์๊ณ ?
2019๋
2์ 1์ผ ๊ธ์์ผ ์ค์ 3:55 Francisco Massa [email protected]
์ผ๋ค:
@aniks23 https://github.com/aniks23 ์ฐ๋ฆฌ๋ ํจ์น๋ฅผ ์์ ์ค์ ๋๋ค.
์ด ๊ฒฝ์ฐ ๋ ๋์ ๊ฒฝํ์ ์ ๊ณตํ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ๊ณ์ ์ง์ผ๋ด ์ฃผ์ธ์โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/pytorch/pytorch/issues/16417#issuecomment-459530332 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AUEJD4SYN4gnRkrLgFYEKY6y14P1TMgLks5vI21wgaJpZM4aUowv
.
์ด ๋ฉ์์ง๋ ๋ฐ์์ต๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 32.75 MiB (GPU 0; 4.93 GiB total capacity; 3.85 GiB already allocated; 29.69 MiB free; 332.48 MiB cached)
Fast.ai Lesson1 Pets https://course.fast.ai/ (cell 31)๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ์ต๋๋ค.
์ ๋ ๊ฐ์ ์ค๋ฅ์ ๋น ์ ธ์์ต๋๋ค. ๋ด ๋ชจ๋ธ์ ์ด์ ์ ์ ํํ ์ค์ ์ผ๋ก ์์ ํ์ง๋ง ์ง๊ธ์ ๊ด๋ จ์ด ์์ด ๋ณด์ด๋ ์ผ๋ถ ์ฝ๋๋ฅผ ์์ ํ ํ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 1.34 GiB (GPU 0; 22.41 GiB total capacity; 11.42 GiB already allocated; 59.19 MiB free; 912.00 KiB cached)
๋ด ์๋๋ฆฌ์ค๊ฐ ์๋ ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ด ๋ชจ๋ธ์ nn.Sequential ๋ ์ด์ด๋ฅผ ๋ถํดํ์ฌ ๋ฌธ์ (์ด์ ๋ฉ์์ง์ OOM ์ค๋ฅ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค)๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
self.input_layer = nn.Sequential(
nn.Conv3d(num_channels, 32, kernel_size=3, stride=1, padding=0),
nn.BatchNorm3d(32),
nn.ReLU()
)
output = self.input_layer(x)
์๊ฒ
self.input_conv = nn.Conv3d(num_channels, 32, kernel_size=3, stride=1, padding=0)
self.input_bn = nn.BatchNorm3d(32)
output = F.relu(self.input_bn(self.input_conv(x)))
๋ด ๋ชจ๋ธ์๋ ์ด ์ค ํจ์ฌ ๋ ๋ง์ ๊ฒ์ด ์์ต๋๋ค(์ ํํ 5๊ฐ ์ด์). nn.Sequential์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ์๋๋ฉด ์ด๊ฒ์ด ๋ฒ๊ทธ์ ๋๊น? @yf225 @fmassa
๋น์ทํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
CUDA out of memory. Tried to allocate 196.50 MiB (GPU 0; 15.75 GiB total capacity; 7.09 GiB already allocated; 20.62 MiB free; 72.48 MiB cached)
@treble-maker123, nn.Sequential์ด ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๊ฒฐ๋ก ์ ์ผ๋ก ์ฆ๋ช ํ ์ ์์์ต๋๊น?
๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. pytorch ๋ฐ์ดํฐ ๋ก๋๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. 5GB ์ด์์ ์ฌ์ ๊ณต๊ฐ์ด ์์ด์ผ ํ์ง๋ง 0๋ฐ์ดํธ ์ฌ์ ๊ณต๊ฐ์ด ์ ๊ณต๋ฉ๋๋ค.
RuntimeError Traceback(๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง)
22
23 ๋ฐ์ดํฐ, ์
๋ ฅ = ์ํ_์
๋ ฅ
---> 24๊ฐ ๋ฐ์ดํฐ, ์
๋ ฅ = Variable(data).float().to(device), Variable(inputs).float().to(device)
25 ์ธ์(data.device)
26 enc_out = ์ธ์ฝ๋(๋ฐ์ดํฐ)
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 11.00MiB ํ ๋น ์๋(GPU 0, 6.00GiB ์ด ์ฉ๋, 448.58MiB ์ด๋ฏธ ํ ๋น๋จ, 0๋ฐ์ดํธ ์ฌ์ ๊ณต๊ฐ, 942.00KiB ์บ์๋จ)
์๋ ํ์ธ์, ์ ๋์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
File "xxx", line 151, in __call__
logits = self.model(x_hat)
File "anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "unet.py", line 67, in forward
x = up(x, blocks[-i-1])
File "anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "unet.py", line 120, in forward
out = self.conv_block(out)
File "anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "unet.py", line 92, in forward
out = self.block(x)
File "anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "anaconda3/lib/python3.6/site-packages/torch/nn/modules/container.py", line 92, in forward
input = module(input)
File "anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py", line 489, in __call__
result = self.forward(*input, **kwargs)
File "anaconda3/lib/python3.6/site-packages/torch/nn/modules/conv.py", line 320, in forward
self.padding, self.dilation, self.groups)
RuntimeError: CUDA out of memory. Tried to allocate 8.00 MiB (GPU 1; 11.78 GiB total capacity; 10.66 GiB already allocated; 1.62 MiB free; 21.86 MiB cached)
์ฌํ๊ฒ๋ ๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ง๋ฌ์ต๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 1.33 GiB (GPU 1; 31.72 GiB total capacity; 5.68 GiB already allocated; 24.94 GiB free; 5.96 MiB cached)
์๋ฒ ํด๋ฌ์คํฐ์์ ๋ด ๋ชจ๋ธ์ ํ๋ จํ๋๋ฐ ๋ด ์๋ฒ ์ค ํ๋์ ์๊ธฐ์น ์๊ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ํ ์ด๋ฌํ ์ ์ ์ค๋ฅ๋ ๋ด ํ๋ จ ์ ๋ต ์ค ํ๋์์๋ง ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ผํ ์ฐจ์ด์ ์ ๋ฐ์ดํฐ ๋ณด๊ฐ ์ค์ ์ฝ๋๋ฅผ ์์ ํ๊ณ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ๋ค๋ฅธ ๊ฒ๋ณด๋ค ๋ณต์กํ๊ฒ ๋ง๋ ๋ค๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋๋ ๋ํ์ด ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ??? RuntimeError: CUDA out of memory. Tried to allocate 18.00 MiB (GPU 0; 4.00 GiB total capacity; 2.94 GiB already allocated; 10.22 MiB free; 18.77 MiB cached)
์ฌ๊ธฐ๋ ๊ฐ์ ๋ฌธ์ RuntimeError: CUDA out of memory. Tried to allocate 54.00 MiB (GPU 0; 11.00 GiB total capacity; 7.89 GiB already allocated; 7.74 MiB free; 478.37 MiB cached)
@fmassa ์ด๊ฒ์ ๋ํ ๋ ๋ง์ ์ ๋ณด๊ฐ ์์ต๋๊น?
https://github.com/pytorch/pytorch/issues/16417#issuecomment -484264163
๋์๊ฒ ๊ฐ์ ๋ฌธ์
์น์ ํ๋, ์๋ฃจ์
์ ์ป์์ต๋๊น?
(๊ธฐ๋ณธ) F:\Suresh\st-gcn>python main1.py ์ธ์ -c config/st_gcn/ntu-xsub/train.yaml --device 0 --work_dir ./work_dir
C:\Users\cudalab10\Anaconda3lib\site-packages\torch\cuda__init__.py:117: UserWarning:
cuda ๊ธฐ๋ฅ 1.1์ GPU0 TITAN Xp๋ฅผ ์ฐพ์์ต๋๋ค.
PyTorch๋ ์ด GPU๊ฐ ๋๋ฌด ์ค๋๋์๊ธฐ ๋๋ฌธ์ ๋ ์ด์ ์ง์ํ์ง ์์ต๋๋ค.
warnings.warn(old_gpu_warn % (d, ์ด๋ฆ, ์ฃผ์, ๊ธฐ๋ฅ[1]))
[05.22.19|12:02:41] ๋งค๊ฐ๋ณ์:
{'base_lr': 0.1, 'ignore_weights': [], '๋ชจ๋ธ': 'net.st_gcn.Model', 'eval_interval': 5, 'weight_decay': 0.0001, 'work_dir': './work_dir', 'save_interval ': 10, 'model_args': {'in_channels': 3, 'dropout': 0.5, 'num_class': 60, 'edge_importance_weighting': True, 'graph_args': {'์ ๋ต': '๊ณต๊ฐ', '๋ ์ด์์': 'ntu-rgb+d'}}, '๋๋ฒ๊ทธ': ๊ฑฐ์ง, 'pavi_log': ๊ฑฐ์ง, 'save_result': ๊ฑฐ์ง, 'config': 'config/st_gcn/ntu-xsub/train.yaml', '์ต์ ํ๊ธฐ': 'SGD', '๊ฐ์ค์น': ์์, 'num_epoch': 80, 'batch_size': 64, 'show_topk': [1, 5], 'test_batch_size': 64, 'step': [10, 50], 'use_gpu ': True, 'phase': 'train', 'print_log': True, 'log_interval': 100, 'feeder': 'feeder.feeder.Feeder', 'start_epoch': 0, 'nesterov': True, '์ฅ์น ': [0], 'save_log': ์ฐธ, 'test_feeder_args': {'data_path': './data/NTU-RGB-D/xsub/val_data.npy', 'label_path': './data/NTU- RGB-D/xsub/val_label.pkl'}, 'train_feeder_args': {'data_path': './data/NTU-RGB-D/xsub/train_data.npy', '๋๋ฒ๊ทธ': False, 'label_path': ' ./data/NTU-RGB-D/xsub/train_l abel.pkl'}, 'num_worker': 4}
[05.22.19|12:02:41] ํ๋ จ ์ํฌํฌ: 0
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "main1.py", 31ํ,
p.start()
ํ์ผ "F:\Suresh\st-gcn\processor\processor.py", 113ํ, ์์ ์
self.train()
ํ์ผ "F:\Suresh\st-gcn\processor\recognition.py", 91ํ, ๊ธฐ์ฐจ
์ถ๋ ฅ = self.model(๋ฐ์ดํฐ)
ํ์ผ "C:\Users\cudalab10\Anaconda3lib\site-packages\torch\nn\modules\module.py", 489ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์
๋ ฅ, * kwargs)
ํ์ผ "F:\Suresh\st-gcn\net\st_gcn.py", 82ํ, ์์ผ๋ก
x, _ = gcn(x, self.A * ์ค์๋)
ํ์ผ "C:\Users\cudalab10\Anaconda3lib\site-packages\torch\nn\modules\module.py", 489ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์
๋ ฅ, * kwargs)
ํ์ผ "F:\Suresh\st-gcn\net\st_gcn.py", 194ํ, ์์ผ๋ก
x, A = self.gcn(x, A)
ํ์ผ "C:\Users\cudalab10\Anaconda3lib\site-packages\torch\nn\modules\module.py", 489ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์
๋ ฅ, * kwargs)
ํ์ผ "F:\Suresh\st-gcn\net\utils\tgcn.py", 60ํ, ์์ผ๋ก
x = self.conv(x)
ํ์ผ "C:\Users\cudalab10\Anaconda3lib\site-packages\torch\nn\modules\module.py", 489ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์
๋ ฅ, * kwargs)
ํ์ผ "C:\Users\cudalab10\Anaconda3lib\site-packages\torch\nn\modules\conv.py", 320ํ, ์์ผ๋ก
self.padding, self.dilation, self.groups)
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 1.37GiB ํ ๋น ์๋(GPU 0, 12.00GiB ์ด ์ฉ๋, 8.28GiB ์ด๋ฏธ ํ ๋น๋จ, 652.75MiB ์ฌ์ ๊ณต๊ฐ, 664.38MiB ์บ์๋จ)
๋ฐ์ดํฐ์ ๋ฏธ๋ ๋ฐฐ์น๊ฐ GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ฉ๋๋ค. cifar10 ๋ฐ์ดํฐ ์ธํธ์ ๋ํด ๋ฐฐ์น ํฌ๊ธฐ = 256์ ์ค์ ํ ๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐฐ์น ํฌ๊ธฐ = 128๋ก ์ค์ ํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.
์ @balcilar ๊ฐ ๋ง์ต๋๋ค. ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์์ผ๋ฉฐ ์ด์ ์๋ํฉ๋๋ค.
๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 11.88 MiB (GPU 4; 15.75 GiB total capacity; 10.50 GiB already allocated; 1.88 MiB free; 3.03 GiB cached)
8 V100์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ํ๋ จํ๊ณ ์์ต๋๋ค. ํผ๋์ค๋ฌ์ด ๋ถ๋ถ์ ์ฌ์ ํ โโ3.03GB๊ฐ ์บ์๋์ด ์์ผ๋ฉฐ 11.88MB์ ํ ๋นํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ต๋๊น? ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ด์ญ์์ค. ๋ฐฐ์น๋ฅผ ๋งํ๋ค
๊ตฌํํ๊ธฐ ์ํด ํฌ๊ธฐ๋ 16์
๋๋ค. ๋ฐฐ์น ํฌ๊ธฐ 8์ ์ฌ์ฉํด ๋ณด๊ณ ์๋ํ๋์ง ํ์ธํ์ญ์์ค.
์ฆ๊ธฐ๋ค
2019๋ 6์ 10์ผ ์์์ผ ์ค์ 2์ 10๋ถ์ magic282 [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 11.88MiB ํ ๋น ์๋(GPU 4, 15.75GiB ์ด ์ฉ๋, 10.50GiB ์ด๋ฏธ ํ ๋น๋จ, 1.88MiB ์ฌ์ ๊ณต๊ฐ, 3.03GiB ์บ์๋จ)
8 V100์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ ํ๋ จํ๊ณ ์์ต๋๋ค. ํท๊ฐ๋ฆฌ๋ ๋ถ๋ถ์
์ฌ์ ํ 3.03GB๊ฐ ์บ์๋์ด 11.88MB์ ํ ๋นํ ์ ์์ต๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/pytorch/pytorch/issues/16417?email_source=notifications&email_token=AGGVQNIXGPJ3HXGSVRPOYUTPZXV5NA5CNFSM4GSSRQX2YY3PNVWWissues3TUL52HS4DFVEXG43VMXXVWJ3NVWWK3TUL52HS4DFVREWSL
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AGGVQNPVGT5RLM6ZV5KMSULPZXV5NANCNFSM4GSSRQXQ
.
๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ค๊ณ ์๋ํ์ง๋ง ํจ๊ณผ๊ฐ์์์ต๋๋ค. ํผ๋์ค๋ฌ์ด ๋ถ๋ถ์ ์บ์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋นํ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฌ๋ค๋ ์ค๋ฅ ๋ฉ์์ง์ ๋๋ค.
๋๋ predict ๋ฅผ ์ฌ์ฉํ ๋ ์ฌ์ ํ๋ จ๋ ๋ชจ๋ธ์์ ๋์ผํ ๋ฌธ์ ๋ฅผ ์ป์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๋ ๊ฒ์ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
์ต์ ๋ฒ์ ์ PyTorch๋ก ์ ๋ฐ์ดํธํ๋ฉด ์ด์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ค๋ฅ์ ์ซ์๊ฐ ํฉ์ฐ๋์ง ์๋ ์ด์ ๋ฅผ ์ฌ์ญค๋ด๋ ๋ ๊น์?!
๋๋ (์ฌ๋ฌ๋ถ ๋ชจ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก) ๋ค์์ ์ป์ต๋๋ค.
Tried to allocate 20.00 MiB (GPU 0; 1.95 GiB total capacity; 763.17 MiB already allocated; 6.31 MiB free; 28.83 MiB cached)
๋์๊ฒ ๊ทธ๊ฒ์ ๋ค์์ด ๋๋ต ์ฌ์ค์ด์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
1.95 (GB total) - 20 (MiB needed) == 763.17 (MiB already used) + 6.31 (MiB free) + 28.83 (MiB cached)
ํ์ง๋ง ๊ทธ๋ ์ง ์์ต๋๋ค. ๋ด๊ฐ ๋ฌด์์ ์๋ชป ์๊ณ ์์ต๋๊น?
U-net์ ํ๋ จํ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์บ์๋ ์ถฉ๋ถํ์ง๋ง ์ฌ์ ํ ์ถฉ๋ํฉ๋๋ค.
๋๋ ๊ฐ์ ์ค๋ฅ๊ฐ ์์ต๋๋ค ...
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 312.00MiB ํ ๋น ์๋(GPU 0, 10.91GiB ์ด ์ฉ๋, 1.07GiB ์ด๋ฏธ ํ ๋น๋จ, 109.62MiB ์ฌ์ ๊ณต๊ฐ, 15.21MiB ์บ์๋จ)
ํฌ๊ธฐ๋ฅผ ์ค์ด์ญ์์ค(๊ฒฐ๊ณผ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ๋ชจ๋ ํฌ๊ธฐ)๊ฐ ์๋ํฉ๋๋ค.
ํฌ๊ธฐ๋ฅผ ์ค์ด์ญ์์ค(๊ฒฐ๊ณผ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ๋ชจ๋ ํฌ๊ธฐ)๊ฐ ์๋ํฉ๋๋ค.
์๋ ํ์ธ์, batch_size๋ฅผ 1๋ก ๋ณ๊ฒฝํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค!
๋ค๋ฅธ ํฌ๊ธฐ๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
Vร o 21:50, CN, 2019๋ 7์ 14์ผ Bcw93 [email protected] ฤรฃ viแบฟt:
ํฌ๊ธฐ๋ฅผ ์ค์ด์ญ์์ค(๊ฒฐ๊ณผ๋ฅผ ๋ณ๊ฒฝํ์ง ์๋ ๋ชจ๋ ํฌ๊ธฐ)๊ฐ ์๋ํฉ๋๋ค.
์๋ ํ์ธ์, batch_size๋ฅผ 1๋ก ๋ณ๊ฒฝํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค!
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธ
https://github.com/pytorch/pytorch/issues/16417?email_source=notifications&email_token=AHLNPF7MWQ7U5ULGIT44VRTP7MOKFA5CNFSM4GSSRQX2YY3PNVWWK3TUL52HS4DFVEXG43VMVVBW63
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AHLNPF4227GHH32PI4WC4SDP7MOKFANCNFSM4GSSRQXQ
.
์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ:
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 2.00MiB ํ ๋น ์๋(GPU 0, 7.94GiB ์ด ์ฉ๋, 7.33GiB ์ด๋ฏธ ํ ๋น๋จ, 1.12MiB ์ฌ์ ๊ณต๊ฐ, 40.48MiB ์บ์๋จ)
์๋น๋์-smi
2019๋
8์ 22์ผ ๋ชฉ 21:05:52
+---------------------------------------------------------------- --------------------------+
| NVIDIA-SMI 430.40 ๋๋ผ์ด๋ฒ ๋ฒ์ : 430.40 CUDA ๋ฒ์ : 10.1 |
|---------------------------------------------+----------------- --+----------------------+
| GPU ์ด๋ฆ ์ง์์ฑ-M| ๋ฒ์ค ID Disp.A | ํ๋ฐ์ฑ ๋ถ์ ํ. ECC |
| ํฌ ์จ๋ ์ฑ๋ฅ Pwr: ์ฌ์ฉ๋/ํ๋ | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | GPU ํ์ฉ ์ปดํจํ
M. |
|===================================================== =====+========================|
| 0 Quadro M4000 ๋๊ธฐ | 00000000:09:00.0 ์ผ๊ธฐ | ํด๋น ์์ |
| 46% 37C P8 12W / 120W | 71MiB / 8126MiB | 10% ๊ธฐ๋ณธ๊ฐ |
+-------------------------------+-------------------- --+----------------------+
| 1 GeForce GTX 105... ๋๊ธฐ | 00000000:41:00.0 ์ผ๊ธฐ | ํด๋น ์์ |
| 29% 33C P8 ํด๋น ์์ / 75W | 262MiB / 4032MiB | 0% ๊ธฐ๋ณธ๊ฐ |
+-------------------------------+-------------------- -----+----------------------+
+---------------------------------------------------------------- --------------------------+
| ํ๋ก์ธ์ค: GPU ๋ฉ๋ชจ๋ฆฌ |
| GPU PID ์ ํ ํ๋ก์ธ์ค ์ด๋ฆ ์ฌ์ฉ๋ฒ |
|=================================================== ==============================|
| 0 1909 G /usr/lib/xorg/Xorg 50MiB |
| 1 1909 G /usr/lib/xorg/Xorg 128MiB |
| 1 5236 G ...ํ์คํธ ์ฑ๋ ํ ํฐ=9884100064965360199 130MiB |
+---------------------------------------------------------------- --------------------------+
OS: ์ฐ๋ถํฌ 18.04 ๋ฐ์ด์ค๋
์ปค๋: x86_64 Linux 4.15.0-58-์ผ๋ฐ
๊ฐ๋ ์๊ฐ: 29๋ถ
ํจํค์ง: 2002๋
์: bash 4.4.20
ํด์๋: 1920x1080 1080x1920
DE: LXDE
WM: ์คํ๋ฐ์ค
GTK ํ
๋ง: Lubuntu-default [GTK2]
์์ด์ฝ ํ
๋ง: ๋ฃจ๋ถํฌ
๊ธ๊ผด: ์ฐ๋ถํฌ 11
CPU: AMD Ryzen Threadripper 2970WX 24์ฝ์ด @ 48x 3GHz [61.8ยฐC]
GPU: ์ฟผ๋๋ก M4000, ์งํฌ์ค GTX 1050 Ti
๋จ: 3194MiB / 64345MiB
์ด๊ฑฐ ๊ณ ์ณ์ก๋์? ํฌ๊ธฐ์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ๋ชจ๋ 1๋ก ์ค์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ค๋ฅธ ์๋ฃจ์ ์ด ์์ง๋ง ์ด ํฐ์ผ์ ๋ซํ ์์ต๋๋ค. Cuda 10.1 Windows 10, Pytorch 1.2.0์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@hughkf ์ฝ๋์ ์ด๋์์ batch_size๋ฅผ ๋ณ๊ฒฝํฉ๋๊น?
@aidoshacks , ์ฝ๋์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ํ ๊ฐ์ง ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ๋ด ์ปดํจํฐ์์ ์ด ๋ฌธ์ ๋ฅผ ์์ ์ ์ผ๋ก ์ผ์ผํค๋ ๋ ธํธ๋ถ ์ค ํ๋์ ๋๋ค: https://github.com/fastai/course-v3/blob/master/nbs/dl1/lesson3-camvid-tiramisu.ipynb. ๋ค์ ์ค์ ๋ณ๊ฒฝํฉ๋๋ค.
bs,size = 8,src_size//2
~ bs,size = 1,1
ํ์ง๋ง ์ฌ์ ํ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋๋ฅผ ์ํด batch_size๋ฅผ 128์์ 64๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ํจ๊ณผ๊ฐ ์์์ง๋ง ๋์๊ฒ ๊ณต๊ฐ๋ ์๋ฃจ์ ์ฒ๋ผ ๋ณด์ด์ง ์๊ฑฐ๋ ๋ด๊ฐ ๋์น๊ณ ์๋ ๊ฒ์ด ์์ต๋๊น?
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๊น? ๋๋ ๋ํ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์์ง๋ง ์ฌ๋ฌ ๋ฒ ์คํํ ํ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
"๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ. 40.00MiB ํ ๋น ์๋(GPU 0, 15.77GiB ์ด ์ฉ๋, 13.97GiB ์ด๋ฏธ ํ ๋น๋จ, 256.00KiB ์ฌ์ ๊ณต๊ฐ, 824.57MiB ์บ์๋จ)"
์ฌ์ ํ ์ด ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ํ๊ฐ ํด๊ฒฐ๋์ง ์์์ผ๋ก ๋ณ๊ฒฝ๋๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
ํธ์งํ๋ค:
๋ฐฐ์น ํฌ๊ธฐ 1๋ก ๋ณผ ๋ ๋ฐฐ์น ํฌ๊ธฐ์ ๊ฑฐ์ ๊ด๋ จ์ด ์์์ต๋๋ค. ์ปค๋์ ๋ค์ ์์ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ผ๋ฉฐ ๊ทธ ์ดํ๋ก๋ ๋ฐ์ํ์ง ์์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์๋์ ๊ฐ์ ์์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น(์ฆ, ๋ง์ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ์ ๋งค์ฐ ์ ์ ํ ๋น์ ์๋ํฉ๋๋ค. ์ด๋ ์ค์ ๋ก ์ผ๋ถ ์์ ์ ๋ค๋ฆ ๋๋ค)?
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 1.33 ์ง๋ธ์ ํ ๋น ์๋ (GPU 1, 31.72 ์ง๋ธ ์ด ์ฉ๋, 5.68 ์ง๋ธ๊ฐ ์ด๋ฏธ ํ ๋น, 24.94 ์ง๋ธ ๋ฌด๋ฃ, 5.96 MIB๋ ์บ์)
์ต์ pytorch ๋ฒ์ (1.2) ๋ฐ ์ต์ NVIDIA GPU(V-100)์์ ์ฌ์ ํ ๋ฐ์ํ๋ฏ๋ก ๋ฌธ์ ๊ฐ '๋ซํ' ์ํ๋ก ์ ํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์!
fastai ํจํค์ง์์ ์ด ํน์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ฐ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋น์ ์์ ์ผ๋ก ์์ GPU๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ปค๋์ ๋ค์ ์์ํ๊ณ ์ ๊ณตํ๋ ๊ฒฝ๋ก์ ๋ ์์ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. pytorch0.4.1, ๋ฐฐ์น ํฌ๊ธฐ=4๋ฅผ ์ฌ์ฉํ ๋ ๊ด์ฐฎ์ต๋๋ค. ๊ทธ๋ฌ๋ pytorch1.3์ผ๋ก ๋ณ๊ฒฝํ๊ณ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 1๋ก ์ค์ ํด๋ oom ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ด pytorch๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ฌ ํด๊ฒฐํ์ต๋๋ค... conda update pytorch
๋ฐ์ดํฐ์ ๋ฏธ๋ ๋ฐฐ์น๊ฐ GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ฉ๋๋ค. cifar10 ๋ฐ์ดํฐ ์ธํธ์ ๋ํด ๋ฐฐ์น ํฌ๊ธฐ = 256์ ์ค์ ํ ๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐฐ์น ํฌ๊ธฐ = 128๋ก ์ค์ ํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.
๋๋ถ์ ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ค๋ฅ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
batch_size๋ฅผ 8๋ก ์ค์๋๋ ์ ๋ฉ๋๋ค. ์์ด๋์ด๋ ์์ batch_size๋ฅผ ๊ฐ๋ ๊ฒ์ ๋๋ค.
ํน์ ๋ ์ด์ด๊ฐ ์ฒ๋ฆฌํ๋ ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 256(32x32) ์ด๋ฏธ์ง์ ๋ฐฐ์น๊ฐ ๋ ์ด์ด์์ 128๊ฐ์ ํํฐ๋ฅผ ํต๊ณผํ๋ ๊ฒฝ์ฐ ์ด ์ ๋ ฅ ํฌ๊ธฐ๋ 256x32x32x128 = 2^25์ ๋๋ค. ์ด ์ซ์๋ ํน์ ์๊ณ๊ฐ๋ณด๋ค ๋ฎ์์ผ ํ๋ฉฐ ์ด๋ ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด AWS p3.2xlarge์ ๊ฒฝ์ฐ 2^26์ ๋๋ค. ๋ฐ๋ผ์ CuDA ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๋ฐฐ์น ํฌ๊ธฐ ๋๋ ํํฐ ์๋ฅผ ์ค์ด๊ฑฐ๋ ์คํธ๋ผ์ด๋ ๋๋ ํ๋ง ๋ ์ด์ด์ ๊ฐ์ ๋ ๋ง์ ๋ค์ด์ํ๋ง์ ๋ฃ์ด๋ณด์ญ์์ค.
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค:
RuntimeError: CUDA out of memory. Tried to allocate 20.00 MiB (GPU 0; 7.93 GiB total capacity; 0 bytes already allocated; 3.83 GiB free; 0 bytes cached)
์ต์ pytorch(1.3) ๋ฐ cuda(10.1) ๋ฒ์ . Nvidia-smi๋ ๋ํ GPU๊ฐ ๋ฐ์ฏค ๋น์ด ์์์ ๋ณด์ฌ์ฃผ๋ฏ๋ก ์ค๋ฅ ๋ฉ์์ง์ ์ฌ์ ๋ฉ๋ชจ๋ฆฌ ์์ด ์ ํํฉ๋๋ค. ์์ง ๊ฐ๋จํ ์ฝ๋๋ก ์ฌํํ ์ ์์
์ปค๋ ์ฌ์ค์ ๋ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค! ๋ด๊ฐ ํ ๋๊น์ง ๋ฐฐ์น ํฌ๊ธฐ = 1๋ก๋ ์๋ํ์ง ์์์ต๋๋ค.
์ฌ๋ฌ๋ถ, ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ด๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 2.00 MiB (GPU 0; 3.95 GiB total capacity; 0 bytes already allocated; 2.02 GiB free; 0 bytes cached)
์ฌ๋ถํ ํ ์์
batch_size 64(rtx2080 ti)๋ฅผ โโ32(rtx 2060)๋ก ๋ณ๊ฒฝํ์ฌ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ํ์ง๋ง ์ด๋ฐ ์ข ๋ฅ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ณ ์ถ์ต๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ์์ธก์ ํ ๋ ๋์๊ฒ ์ผ์ด๋๊ณ ์์ต๋๋ค!
๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 1024์์ 8๋ก ๋ณ๊ฒฝํ๋๋ฐ ํ
์คํธ ์ธํธ์ 82%๊ฐ ํ๊ฐ๋ ๋ ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
with torch.no_grad()
์ถ๊ฐํ์ ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
test_loader = init_data_loader(X_test, y_test, torch.device('cpu'), batch_size, num_workers=0)
print("Starting inference ...")
result = []
model.eval()
valid_loss = 0
with torch.no_grad():
for batch_x, batch_y in tqdm(test_loader):
batch_x, batch_y = batch_x.to(device), batch_y.to(device)
output = model(batch_x)
result.extend(output[:, 0, 0])
loss = torch.sqrt(criterion(output, batch_y))
valid_loss += loss
valid_loss /= len(train_loader)
print("Done!")
๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค
loader = DataLoader(dataset, batch_size=128, shuffle=True, num_workers=4)
์๊ฒ
loader = DataLoader(dataset, batch_size=64, shuffle=True, num_workers=4)
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ ๋ด ์ปดํจํฐ์ GPU ์ฌ์ฉ๋ฅ ์ ํ์ธํ์ต๋๋ค. ์ด๋ฏธ ๋ง์ด ์ฌ์ฉ๋์๊ณ ๋งค์ฐ ์ ์ ์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋จ์์ต๋๋ค. jupyter ๋ ธํธ๋ถ์ ์ข ๋ฃํ๊ณ ๋ค์ ์์ํ์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ ๋ก์์ง๊ณ ์์ ์ด ์์๋์์ต๋๋ค. ์๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
nvidia-smi - To check the memory utilization on GPU
ps -ax | grep jupyter - To get PID of jupyter process
sudo kill PID
์ด ๋ฉ์์ง๋ ๋ฐ์์ต๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 32.75 MiB (GPU 0; 4.93 GiB total capacity; 3.85 GiB already allocated; 29.69 MiB free; 332.48 MiB cached)
Fast.ai Lesson1 Pets https://course.fast.ai/ (cell 31)๋ฅผ ์คํํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ์ต๋๋ค.
ํ๋ จ ๋ฐ์ดํฐ์ ๋ฐฐ์น ํฌ๊ธฐ(bs)๋ฅผ ์ค์ด์ญ์์ค.
๋น์ ์๊ฒ ํจ๊ณผ๊ฐ ๋ฌด์์ธ์ง๋ณด์ญ์์ค.
๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ง ์๊ณ ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
ํฐ๋ฏธ๋ ๋ฐ ํ์ด์ฌ ํ๋กฌํํธ ์ด๊ธฐ
import torch
torch.cuda.empty_cache()
Python ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ข ๋ฃํ๊ณ ์๋ PyTorch ๋ช ๋ น์ ๋ค์ ์คํํ๋ฉด CUDA ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ผ ํฉ๋๋ค.
๋ด ์ปดํจํฐ๊ฐ CPU RAM์ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ ๋ ํฐ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ํ ๋ CPU RAM ์ฌ์ฉ๋์ ์ค์ด๋ ค๊ณ ํ ์ ์์ต๋๋ค.
๋น์ทํ ๋ฌธ์ ๊ฐ์์์ต๋๋ค.
๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ปค๋์ ๋ค์ ์์ํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋์์ต๋๋ค.
์ ๊ฒฝ์ฐ์๋ Adam ์ตํฐ๋ง์ด์ ๋ฅผ SGD ์ตํฐ๋ง์ด์ ๋ก ๊ต์ฒดํด๋ ๋์ผํ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์, ์ ๊ฒฝ์ฐ์๋ with torch.no_grad(): (train model)
, output.to("cpu")
๋ฐ torch.cuda.empty_cache()
ํ๊ณ ์ด ๋ฌธ์ ๋ ํด๊ฒฐ๋์์ต๋๋ค.
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 54.00MiB ํ ๋น ์๋(GPU 0, 3.95GiB ์ด ์ฉ๋, 2.65GiB ์ด๋ฏธ ํ ๋น๋จ, 39.00MiB ์ฌ์ ๊ณต๊ฐ, 87.29MiB ์บ์๋จ)
์๋ฃจ์ ์ ์ฐพ์๊ณ batch_size ๊ฐ์ ์ค์์ต๋๋ค.
์ฌ์ฉ์ ์ง์ ๋ฐ์ดํฐ ์ธํธ์์ Darknet53 ๊ฐ์ค์น๋ฅผ ์ฌ์ฉํ์ฌ YOLOv3์ ํ๋ จํ๊ณ ์์ต๋๋ค. ๋ด GPU๋ NVIDIA RTX 2080์ด๊ณ ๋์ผํ ๋ฌธ์ ์ ์ง๋ฉดํ์ต๋๋ค. ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํด๊ฒฐ๋์์ต๋๋ค.
์ถ๋ก ์๊ฐ ๋์ ์ด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค....i'm ru
CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 102.00MiB ํ ๋น ์๋(GPU 0, 15.78GiB ์ด ์ฉ๋, 14.54GiB ์ด๋ฏธ ํ ๋น๋จ, 48.44MiB ์ฌ์ ๊ณต๊ฐ, PyTorch์์ ์ด 14.67GiB ์์ฝ)
-------------------------------------------------- ---------------------------+
| NVIDIA-SMI 440.59 ๋๋ผ์ด๋ฒ ๋ฒ์ : 440.59 CUDA ๋ฒ์ : 10.2 |
|---------------------------------------------+----------------- --+----------------------+
| GPU ์ด๋ฆ ์ง์์ฑ-M| ๋ฒ์ค ID Disp.A | ํ๋ฐ์ฑ ๋ถ์ ํ. ECC |
| ํฌ ์จ๋ ์ฑ๋ฅ Pwr: ์ฌ์ฉ๋/ํ๋ | ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ | GPU ํ์ฉ ์ปดํจํ
M. |
|===================================================== =====+========================|
| 0 Tesla V100-SXM2... ์ผ๊ธฐ | 00000000:00:1E.0 ๋๊ธฐ | 0 |
| ํด๋น ์์ 35C P0 41W / 300W | 16112MiB / 16160MiB | 0% ๊ธฐ๋ณธ๊ฐ |
+-------------------------------+-------------------- -----+----------------------+
+---------------------------------------------------------------- --------------------------+
| ํ๋ก์ธ์ค: GPU ๋ฉ๋ชจ๋ฆฌ |
| GPU PID ์ ํ ํ๋ก์ธ์ค ์ด๋ฆ ์ฌ์ฉ๋ฒ |
|=================================================== ==============================|
| 0 13978 C
+---------------------------------------------------------------- --------------------------+
๋ฐ์ดํฐ์ ๋ฏธ๋ ๋ฐฐ์น๊ฐ GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ฉ๋๋ค. cifar10 ๋ฐ์ดํฐ ์ธํธ์ ๋ํด ๋ฐฐ์น ํฌ๊ธฐ = 256์ ์ค์ ํ ๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐฐ์น ํฌ๊ธฐ = 128๋ก ์ค์ ํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.
๊ณ ๋ง์์, ๋น์ ์ด ์ณ์ต๋๋ค
GPU ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํ์ง๋ง ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ํน์ ๊ฒฝ์ฐ์ ๋๋ค. ์ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ ๋ก๋์ ์์ ์ ์๋ฅผ ์ค์ฌ์ ํด๊ฒฐํ์ต๋๋ค.
py36, pytorch1.4, tf2.0, ์ฝ๋ค
๋ก๋ฒ ๋ฅดํ ๋ฏธ์ธ ์กฐ์
@EMarquer ์ ๋์ผํ ๋ฌธ์ : pycharm ์ ์ฌ์ ํ โโ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ง๋ง ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์คํจํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ ๋ณด์ฌ์ค๋๋ค.
๋จ์ํ ๋๋ฅผ ์ํด ์ผํ ๊ฒ :
import gc
# Your code with pytorch using GPU
gc.collect()
๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ง ์๊ณ ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
ํฐ๋ฏธ๋ ๋ฐ ํ์ด์ฌ ํ๋กฌํํธ ์ด๊ธฐ
import torch torch.cuda.empty_cache()
Python ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ข ๋ฃํ๊ณ ์๋ PyTorch ๋ช ๋ น์ ๋ค์ ์คํํ๋ฉด CUDA ๋ฉ๋ชจ๋ฆฌ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์์ผ ํฉ๋๋ค.
๋ด ๊ฒฝ์ฐ์๋ ๋ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
--device_ids 0๊ณผ ํจ๊ป ์ฌ๋กฏ 0์์ GPU๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค.
๋๋ ์ฉ์ด๋ฅผ ๋์ดํ๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ํจ๊ณผ๊ฐ์์์ต๋๋ค. id๋ฅผ ์ ํํ์ง ์์ผ๋ฉด GPU ๋์ CPU๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 4.84GiB ํ ๋น ์๋(GPU 0, 7.44GiB ์ด ์ฉ๋, 5.22GiB ์ด๋ฏธ ํ ๋น๋จ, 1.75GiB ์ฌ์ ๊ณต๊ฐ, 18.51MiB ์บ์๋จ)
ํด๋ฌ์คํฐ๋ฅผ ๋ค์ ์์ํ๊ฑฐ๋ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์๋ํฉ๋๋ค. ํ์ง๋ง ์ด ์๋ฃจ์ ์ด ๋ง์์ ๋ค์ง ์์ต๋๋ค. ๋๋ ์ฌ์ง์ด torch.cuda.empty_cache() ๋ฅผ ์๋ํ์ง๋ง ์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ํด๊ฒฐํ ๋ค๋ฅธ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋ด ์๋๋ฆฌ์ค๊ฐ ์๋ ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ด ๋ชจ๋ธ์ nn.Sequential ๋ ์ด์ด๋ฅผ ๋ถํดํ์ฌ ๋ฌธ์ (์ด์ ๋ฉ์์ง์ OOM ์ค๋ฅ๊ฐ ์ฌ๋ผ์ก์ต๋๋ค)๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
self.input_layer = nn.Sequential( nn.Conv3d(num_channels, 32, kernel_size=3, stride=1, padding=0), nn.BatchNorm3d(32), nn.ReLU() ) output = self.input_layer(x)
์๊ฒ
self.input_conv = nn.Conv3d(num_channels, 32, kernel_size=3, stride=1, padding=0) self.input_bn = nn.BatchNorm3d(32) output = F.relu(self.input_bn(self.input_conv(x)))
๋ด ๋ชจ๋ธ์๋ ์ด ์ค ํจ์ฌ ๋ ๋ง์ ๊ฒ์ด ์์ต๋๋ค(์ ํํ 5๊ฐ ์ด์). nn.Sequential์ ์ฌ์ฉํ๊ณ ์์ต๋๊น? ์๋๋ฉด ์ด๊ฒ์ด ๋ฒ๊ทธ์ ๋๊น? @yf225 @fmassa
๋๋ ๋น์ทํ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ์ง๋ง ๋ฐ๋๋ก ๋น์ ๊ณผ ํจ๊ป ํด๊ฒฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ ๋ชจ๋๋ฅผ ๋ฐ๊ฟ๋๋ค
self.input_layer = nn.Sequential( nn.Conv3d(num_channels, 32, kernel_size=3, stride=1, padding=0), nn.BatchNorm3d(32), nn.ReLU() ) output = self.input_layer(x)
์๊ฒ
self.input_layer = nn.Sequential( nn.Conv3d(num_channels, 32, kernel_size=3, stride=1, padding=0), nn.BatchNorm3d(32), nn.ReLU() ) output = self.input_layer(x)
๋๋ฅผ ์ํด batch_size ๋๋ ์ฃผ์ด์ง ์๋ฃจ์ ์ ๋ณ๊ฒฝํด๋ ๋์์ด๋์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด .cfg ํ์ผ์ ์๋ชป๋ ํด๋์ค ๊ฐ๊ณผ ํ ๋ ์ด์ด์ ํํฐ๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฌด ๊ฒ๋ ๋์์ด ๋์ง ์์ผ๋ฉด .cfg๋ฅผ ๋ค์ ํ์ธํ์ญ์์ค.
ํฐ๋ฏธ๋ ์ด๊ธฐ
์ฒซ ๋ฒ์งธ ์ ํ
์๋น๋์-smi
๊ทธ๋ฐ ๋ค์ python ๋๋ anaconda ๊ฒฝ๋ก์ ํด๋นํ๋ PID๋ฅผ ์ ํํ๊ณ ์์ฑํ์ญ์์ค.
sudo kill -9 PID
๋๋์ด ๋ฒ๊ทธ๋ฅผ ํ๋์ ๊ฒช์์ต๋๋ค. ์ ์๊ฒ๋ ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ๋ python ๋ณ์(์: ํ ์น ํ ์)๋ฅผ ๊ณ์ ๋ณด์ ํ๊ณ ์์ผ๋ฏ๋ก ์ฝ๋๊ฐ ์ฌ์ ํ ์ก์ธ์คํ ์ ์์ผ๋ฏ๋ก ์์ ํ๊ฒ ํด์ ํ ์ ์์ต๋๋ค.
๋ด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
predictions = []
for batch in dataloader:
p = model(batch.to(torch.device("cuda:0")))
predictions.append(p)
์ด์ ๋ํ ์์ ์ p
๋ฅผ ๋ชฉ๋ก์ผ๋ก ์ ์กํ๋ ๊ฒ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.
predictions = []
for batch in dataloader:
p = model(batch.to(torch.device("cuda:0")))
predictions.append(p.tolist())
์ด๋ ๊ฒ ํ๋ฉด predictions
๊ฐ GPU์ ํ
์๊ฐ ์๋๋ผ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์งํฉ๋๋ค.
pytorch์ ์์กดํ๋ fastai.vision ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ด ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค. ๋๋ CUDA 10.1์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค
training_args = TrainingArguments(
output_dir="./",
overwrite_output_dir=True,
num_train_epochs=5,
per_gpu_train_batch_size=4, # 4; 8 ;16 out of memory
save_steps=10_000,
save_total_limit=2,
)
per_gpu_train_batch_size๋ฅผ 16์์ 8๋ก ์ค์ด๋ฉด ๋ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
์ต์ ๋ฒ์ ์ PyTorch๋ก ์ ๋ฐ์ดํธํ๋ฉด ์ด์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ ๋ง, ์ ๊ทธ๋ ๊ฒ ๋งํฉ๋๊น
์ด ๋ฌธ์ ์ ์ฃผ์ ์ง๋ฌธ์ ์ฌ์ ํ โโ๋ฏธํด๊ฒฐ ๋ฌธ์ ์
๋๋ค. ๋์ผํ ์ด์ํ CUDA ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค. 4.08GiB์ 2.26GiB๋ฅผ ๋ฌด๋ฃ๋ก ํ ๋นํ๋ ค๊ณ ํ์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ถฉ๋ถํด ๋ณด์ด์ง๋ง ํ ๋น์ ์คํจํฉ๋๋ค.
ํ๋ก์ ํธ ์ ๋ณด: ๋ฐฐ์น ํฌ๊ธฐ๊ฐ 4์ธ activitynet ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํตํด resnet 10์ ํ๋ จํ๋ฉด ์ฒซ ๋ฒ์งธ epoch์ ๋ง์ง๋ง์์ ์คํจํฉ๋๋ค.
ํธ์ง๋จ: ์ผ๋ถ ์ธ์: RAM ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฒญ์ํ๊ณ Python ์ฝ๋๋ง ๊ณ์ ์คํํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. GPU์ ์ถฉ๋ถํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ง๋ง RAM ๋ฉ๋ชจ๋ฆฌ๋ ๋ค๋ฅธ ๋ชจ๋ ์ฒ๋ฆฌ ๋จ๊ณ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ปดํจํฐ ์ ๋ณด: Dell G5 - i7 9th - GTX 1660Ti 6GB - 16GB RAM
EDITED2: 4๋ช
์ ์์
์์ ํจ๊ป "_MultiProcessingDataLoaderIter"๋ฅผ ์ฌ์ฉํ๊ณ ์์๋๋ฐ ์ ๋ฌ ํธ์ถ์์ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฉ์์ง๊ฐ ๋ฐ์ํฉ๋๋ค. ์์
์ ์๋ฅผ 1๋ก ์ค์ด๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ์์
์๊ฐ 1์ธ ๊ฒฝ์ฐ ๋จ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ 11/16GB๋ก ์ ์ง๋๊ณ 4์ธ ๊ฒฝ์ฐ 14.5/16GB๋ก ์ฆ๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก 1๋ช
์ ์์
์๋ก ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 32๋ก ๋๋ฆด ์ ์๊ณ GPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ 3.5GB/6GB๋ก ๋์ผ ์ ์์ต๋๋ค.
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 2.26GiB ํ ๋น ์๋(GPU 0, 6.00GiB ์ด ์ฉ๋, 209.63MiB ์ด๋ฏธ ํ ๋น๋จ, 4.08GiB ์ฌ์ ๊ณต๊ฐ, PyTorch์์ ์ด ์์ฝ 246.00MiB)
์ ์ฒด ์ค๋ฅ ๋ฉ์์ง
์ญ์ถ์ (๊ฐ์ฅ ์ต๊ทผ ํธ์ถ ๋ง์ง๋ง):
ํ์ผ "main.py", 450ํ,
opt.distributed์ธ ๊ฒฝ์ฐ:
main_worker์ ํ์ผ "main.py", 409ํ
opt.device, current_lr, train_logger,
"D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\training.py" ํ์ผ, 37ํ, train_epoch
์ถ๋ ฅ = ๋ชจ๋ธ(์ ๋ ฅ)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nn\modules\module.py", 532ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์ ๋ ฅ, * kwargs)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nnparallel\data_parallel.py", 150ํ, ์์ผ๋ก
๋ฐํ self.module( ์ ๋ ฅ[0], * kwargs[0])
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nn\modules\module.py", 532ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์ ๋ ฅ, * kwargs)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\models\resnet.py", 205ํ, ์์ผ๋ก
x = self.layer3(x)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nn\modules\module.py", 532ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์ ๋ ฅ, * kwargs)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nn\modules\container.py", 100ํ, ์์ผ๋ก
์ ๋ ฅ = ๋ชจ๋(์ ๋ ฅ)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nn\modules\module.py", 532ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์ ๋ ฅ, * kwargs)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\models\resnet.py", 51ํ, ์์ผ๋ก
out = self.conv2(out)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nn\modules\module.py", 532ํ, __call__
๊ฒฐ๊ณผ = self.forward( ์ ๋ ฅ, * kwargs)
ํ์ผ "D:\Guilherme\Google Drive\Profissional\Cursos\Mestrado\Pesquisa\HMDB51\envlib\site-packages\torch\nn\modules\conv.py", 480ํ, ์์ผ๋ก
self.padding, self.dilation, self.groups)
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 2.26GiB ํ ๋น ์๋(GPU 0, 6.00GiB ์ด ์ฉ๋, 209.63MiB ์ด๋ฏธ ํ ๋น๋จ, 4.08GiB ์ฌ์ฉ ๊ฐ๋ฅ, 246.00MiB ์์ฝ๋จ)
PyTorch์ ์ํด ์ด๊ณ)
์์ ๋ฐฐ์น ํฌ๊ธฐ, ์๋
๋๋์ด ๋ฒ๊ทธ๋ฅผ ํ๋์ ๊ฒช์์ต๋๋ค. ์ ์๊ฒ๋ ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ๋ python ๋ณ์(์: ํ ์น ํ ์)๋ฅผ ๊ณ์ ๋ณด์ ํ๊ณ ์์ผ๋ฏ๋ก ์ฝ๋๊ฐ ์ฌ์ ํ ์ก์ธ์คํ ์ ์์ผ๋ฏ๋ก ์์ ํ๊ฒ ํด์ ํ ์ ์์ต๋๋ค.
๋ด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
predictions = [] for batch in dataloader: p = model(batch.to(torch.device("cuda:0"))) predictions.append(p)
์ด์ ๋ํ ์์ ์
p
๋ฅผ ๋ชฉ๋ก์ผ๋ก ์ ์กํ๋ ๊ฒ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.predictions = [] for batch in dataloader: p = model(batch.to(torch.device("cuda:0"))) predictions.append(p.tolist())
์ด๋ ๊ฒ ํ๋ฉด
predictions
๊ฐ GPU์ ํ ์๊ฐ ์๋๋ผ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์งํฉ๋๋ค.
@abdelrahmanhosny ์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ PyTorch 1.5.0์์ ๋๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ํ๋ จ ์ค์ OOM ๋ฌธ์ ๊ฐ ์์์ง๋ง ์ถ๋ก ํ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ๋ ํ์ด์ฌ ๋ณ์(์: ํ ์น ํ ์)๋ฅผ ๊ณ์ ์ ์งํ์ฌ GPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ ์ด๋ํ์ต๋๋ค. ์ผ์ ์์ ๋ฐฐ์น ํ.
๊ทธ๋ฌ๋ ์ ๊ฒฝ์ฐ์๋ ๋คํธ์ํฌ๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ ์์ธก์ ๋ชฉ๋ก์ผ๋ก ์ ์กํ๋ ๊ฒ์ด ์๋ํ์ง ์์์ผ๋ฏ๋ก ๋ค์์ ์ํํด์ผ ํ์ต๋๋ค.
predictions.append(p.detach().cpu().numpy())
๊ทธ๋ฌ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค!
์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น?
CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 196.00MiB ํ ๋น ์๋(GPU 0, 2.00GiB ์ด ์ฉ๋, 359.38MiB ์ด๋ฏธ ํ ๋น๋จ, 192.29MiB ์ฌ์ ๊ณต๊ฐ, 152.37MiB ์บ์๋จ)
์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ ์ด ์์ต๋๊น?
CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. 196.00MiB ํ ๋น ์๋(GPU 0, 2.00GiB ์ด ์ฉ๋, 359.38MiB ์ด๋ฏธ ํ ๋น๋จ, 192.29MiB ์ฌ์ ๊ณต๊ฐ, 152.37MiB ์บ์๋จ)
๋๋์ด ๋ฒ๊ทธ๋ฅผ ํ๋์ ๊ฒช์์ต๋๋ค. ์ ์๊ฒ๋ ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ๋ python ๋ณ์(์: ํ ์น ํ ์)๋ฅผ ๊ณ์ ๋ณด์ ํ๊ณ ์์ผ๋ฏ๋ก ์ฝ๋๊ฐ ์ฌ์ ํ ์ก์ธ์คํ ์ ์์ผ๋ฏ๋ก ์์ ํ๊ฒ ํด์ ํ ์ ์์ต๋๋ค.
๋ด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.predictions = [] for batch in dataloader: p = model(batch.to(torch.device("cuda:0"))) predictions.append(p)
์ด์ ๋ํ ์์ ์
p
๋ฅผ ๋ชฉ๋ก์ผ๋ก ์ ์กํ๋ ๊ฒ์ด์์ต๋๋ค. ๋ฐ๋ผ์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค.predictions = [] for batch in dataloader: p = model(batch.to(torch.device("cuda:0"))) predictions.append(p.tolist())
์ด๋ ๊ฒ ํ๋ฉด
predictions
๊ฐ GPU์ ํ ์๊ฐ ์๋๋ผ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์ ์งํฉ๋๋ค.@abdelrahmanhosny ์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ PyTorch 1.5.0์์ ๋๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ํ๋ จ ์ค์ OOM ๋ฌธ์ ๊ฐ ์์์ง๋ง ์ถ๋ก ํ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ๋ ํ์ด์ฌ ๋ณ์(์: ํ ์น ํ ์)๋ฅผ ๊ณ์ ์ ์งํ์ฌ GPU๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ ์ด๋ํ์ต๋๋ค. ์ผ์ ์์ ๋ฐฐ์น ํ.
๊ทธ๋ฌ๋ ์ ๊ฒฝ์ฐ์๋ ๋คํธ์ํฌ๋ก ์ด๋ฏธ์ง๋ฅผ ์์ฑํ ๋ ์์ธก์ ๋ชฉ๋ก์ผ๋ก ์ ์กํ๋ ๊ฒ์ด ์๋ํ์ง ์์์ผ๋ฏ๋ก ๋ค์์ ์ํํด์ผ ํ์ต๋๋ค.
predictions.append(p.detach().cpu().numpy())
๊ทธ๋ฌ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค!
ParallelWaveGAN ๋ชจ๋ธ์์ ๋์ผํ ๋ฌธ์ ๊ฐ ์๊ณ #16417์ ์๋ฃจ์ ์ ์ฌ์ฉํ์ง๋ง ์๋ํ์ง ์์ต๋๋ค.
y = self.model_gan(*x).view(-1).detach().cpu().numpy()
gc.collect()
ํ ์น.cuda.empty_cache()
ํ๋ จ ์ค์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ฐ ์ํฌํฌ ํ์ ์ฐ๋ ๊ธฐ๋ฅผ ์์งํ๊ณ cuda ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ฐ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
gc.collect()
torch.cuda.empty_cache()
๋จ์ํ ๋๋ฅผ ์ํด ์ผํ ๊ฒ :
import gc # Your code with pytorch using GPU gc.collect()
๊ฐ์ฌํฉ๋๋ค!! ๋๋ ๊ณ ์์ด์ ๊ฐ ์์ ๋ฅผ ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์๊ณ ์ด๊ฒ์ด ๋๋ฅผ ์ํด ์ผํ์ต๋๋ค.
ํ๋ จ ์ค์ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ฐ ์ํฌํฌ ํ์ ์ฐ๋ ๊ธฐ๋ฅผ ์์งํ๊ณ cuda ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋น์ฐ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.gc.collect() torch.cuda.empty_cache()
๋์๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง
๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ํฌํฌ๋ฅผ ๋๋ฆฝ๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ๋๋ค.
@areebsyed ๋จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ธํ์ญ์์ค. ๋ง์ ์์ ์๋ฅผ ๋ณ๋ ฌ๋ก ์ค์ ํ ๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋จ์ผ epoch๋ฅผ ์๋ฃํ์ง ์๊ณ Colab์ pytorch์์ ์ฌ์ ํ๋ จ๋ bert2bert EncoderDecoderModel์ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋์์๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
RuntimeError: CUDA out of memory. Tried to allocate 96.00 MiB (GPU 0; 15.90 GiB total capacity; 13.77 GiB already allocated; 59.88 MiB free; 14.98 GiB reserved in total by PyTorch)
@Aakash12980 ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ
@areebsyed ์, ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ 4๋ก ์ค์์ผ๋ฉฐ ์๋ํ์ต๋๋ค.
๊ฐ์
RuntimeError Traceback (most recent call last)
<ipython-input-116-11ebb3420695> in <module>
28 landmarks = landmarks.view(landmarks.size(0),-1).cuda()
29
---> 30 predictions = network(images)
31
32 # clear all the gradients before calculating them
~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
720 result = self._slow_forward(*input, **kwargs)
721 else:
--> 722 result = self.forward(*input, **kwargs)
723 for hook in itertools.chain(
724 _global_forward_hooks.values(),
<ipython-input-112-174da452c85d> in forward(self, x)
13 ##out = self.first_conv(x)
14 x = x.float()
---> 15 out = self.model(x)
16 return out
~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
720 result = self._slow_forward(*input, **kwargs)
721 else:
--> 722 result = self.forward(*input, **kwargs)
723 for hook in itertools.chain(
724 _global_forward_hooks.values(),
~/anaconda3/lib/python3.7/site-packages/torchvision/models/resnet.py in forward(self, x)
218
219 def forward(self, x):
--> 220 return self._forward_impl(x)
221
222
~/anaconda3/lib/python3.7/site-packages/torchvision/models/resnet.py in _forward_impl(self, x)
204 x = self.bn1(x)
205 x = self.relu(x)
--> 206 x = self.maxpool(x)
207
208 x = self.layer1(x)
~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs)
720 result = self._slow_forward(*input, **kwargs)
721 else:
--> 722 result = self.forward(*input, **kwargs)
723 for hook in itertools.chain(
724 _global_forward_hooks.values(),
~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/pooling.py in forward(self, input)
157 return F.max_pool2d(input, self.kernel_size, self.stride,
158 self.padding, self.dilation, self.ceil_mode,
--> 159 self.return_indices)
160
161
~/anaconda3/lib/python3.7/site-packages/torch/_jit_internal.py in fn(*args, **kwargs)
245 return if_true(*args, **kwargs)
246 else:
--> 247 return if_false(*args, **kwargs)
248
249 if if_true.__doc__ is None and if_false.__doc__ is not None:
~/anaconda3/lib/python3.7/site-packages/torch/nn/functional.py in _max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode, return_indices)
574 stride = torch.jit.annotate(List[int], [])
575 return torch.max_pool2d(
--> 576 input, kernel_size, stride, padding, dilation, ceil_mode)
577
578 max_pool2d = boolean_dispatch(
RuntimeError: CUDA out of memory. Tried to allocate 80.00 MiB (GPU 0; 7.80 GiB total capacity; 1.87 GiB already allocated; 34.69 MiB free; 1.93 GiB reserved in total by PyTorch)
๊ฐ์
RuntimeError Traceback (most recent call last) <ipython-input-116-11ebb3420695> in <module> 28 landmarks = landmarks.view(landmarks.size(0),-1).cuda() 29 ---> 30 predictions = network(images) 31 32 # clear all the gradients before calculating them ~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs) 720 result = self._slow_forward(*input, **kwargs) 721 else: --> 722 result = self.forward(*input, **kwargs) 723 for hook in itertools.chain( 724 _global_forward_hooks.values(), <ipython-input-112-174da452c85d> in forward(self, x) 13 ##out = self.first_conv(x) 14 x = x.float() ---> 15 out = self.model(x) 16 return out ~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs) 720 result = self._slow_forward(*input, **kwargs) 721 else: --> 722 result = self.forward(*input, **kwargs) 723 for hook in itertools.chain( 724 _global_forward_hooks.values(), ~/anaconda3/lib/python3.7/site-packages/torchvision/models/resnet.py in forward(self, x) 218 219 def forward(self, x): --> 220 return self._forward_impl(x) 221 222 ~/anaconda3/lib/python3.7/site-packages/torchvision/models/resnet.py in _forward_impl(self, x) 204 x = self.bn1(x) 205 x = self.relu(x) --> 206 x = self.maxpool(x) 207 208 x = self.layer1(x) ~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py in _call_impl(self, *input, **kwargs) 720 result = self._slow_forward(*input, **kwargs) 721 else: --> 722 result = self.forward(*input, **kwargs) 723 for hook in itertools.chain( 724 _global_forward_hooks.values(), ~/anaconda3/lib/python3.7/site-packages/torch/nn/modules/pooling.py in forward(self, input) 157 return F.max_pool2d(input, self.kernel_size, self.stride, 158 self.padding, self.dilation, self.ceil_mode, --> 159 self.return_indices) 160 161 ~/anaconda3/lib/python3.7/site-packages/torch/_jit_internal.py in fn(*args, **kwargs) 245 return if_true(*args, **kwargs) 246 else: --> 247 return if_false(*args, **kwargs) 248 249 if if_true.__doc__ is None and if_false.__doc__ is not None: ~/anaconda3/lib/python3.7/site-packages/torch/nn/functional.py in _max_pool2d(input, kernel_size, stride, padding, dilation, ceil_mode, return_indices) 574 stride = torch.jit.annotate(List[int], []) 575 return torch.max_pool2d( --> 576 input, kernel_size, stride, padding, dilation, ceil_mode) 577 578 max_pool2d = boolean_dispatch( RuntimeError: CUDA out of memory. Tried to allocate 80.00 MiB (GPU 0; 7.80 GiB total capacity; 1.87 GiB already allocated; 34.69 MiB free; 1.93 GiB reserved in total by PyTorch)
@monajalal ๋ฐฐ์น ํฌ๊ธฐ ๋๋ ์ ๋ ฅ ์ฐจ์ ํฌ๊ธฐ๋ฅผ ์ค์ด์ญ์์ค.
๊ทธ๋ ๋ค๋ฉด ์๋์ ๊ฐ์ ์์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น(์ฆ, _free_ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ง๊ณ ํ ๋น์ ๊ฑฐ์ ์๋ํ์ง ์์ - ์ค์ ๋ก ์ฌ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฑฐ์ ์๊ณ ์๋ฌด ๋ฌธ์ ๊ฐ ์์ ๋ ์ด ์ค๋ ๋์ _some_ ์์ ์ ๋ค๋ฆ ๋๋ค)?
๋ฐํ์ ์ค๋ฅ: CUDA ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํฉ๋๋ค. ํ ๋น ์๋ _ 1.33 ์ง๋ธ _ (GPU 1, 31.72 ์ง๋ธ ์ด ์ฉ๋, ์ด๋ฏธ ํ ๋น 5.68 ์ง๋ธ๋; _ 24.94 ์ง๋ธ ๋ฌด๋ฃ _; 5.96 MIB๋ ์บ์)
์ต์ pytorch ๋ฒ์ (1.2) ๋ฐ ์ต์ NVIDIA GPU(V-100)์์ ์ฌ์ ํ ๋ฐ์ํ๋ฏ๋ก ๋ฌธ์ ๊ฐ '๋ซํ' ์ํ๋ก ์ ํ๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ฐ์ฌ ํด์!
์, ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ๋ฌธ์ ๊ฐ ๋จ์ํ OOM์ด ์๋๋ผ OOM์ด ์๋ค๋ ๊ฒ์ ๊นจ๋ซ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ค๋ฅ์๋ ์ฌ์ ๊ณต๊ฐ์ด ์ถฉ๋ถํ๋ค๋ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค. Windows์์๋ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ๊ณ ์์ต๋๋ค. ํด๊ฒฐ์ฑ ์ ์ฐพ์ผ์ จ์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ฐ์ดํฐ์ ๋ฏธ๋ ๋ฐฐ์น๊ฐ GPU ๋ฉ๋ชจ๋ฆฌ์ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด ๋ฉ๋๋ค. cifar10 ๋ฐ์ดํฐ ์ธํธ์ ๋ํด ๋ฐฐ์น ํฌ๊ธฐ = 256์ ์ค์ ํ ๋ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฐฐ์น ํฌ๊ธฐ = 128๋ก ์ค์ ํ๋ฉด ํด๊ฒฐ๋ฉ๋๋ค.