- Today
- Total
hye-log
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 09 ๋ณธ๋ฌธ
๐ ๊ฐ๋ณํ์ต
[8] Multi-GPU ํ์ต
1. ๊ฐ๋ ์ ๋ฆฌ
1) Single(ํ ๊ฐ) vs. Multi(๋ ๊ฐ ์ด์)
2) GPU vs. Node(System. ํ ๋์ ์ปดํจํฐ)
3) Single Node Single GPU(ํ ๋์ ์ปดํจํฐ์ ํ ๊ฐ์ GPU)
4) Single Node Multi GPU(ํ ๋์ ์ปดํจํฐ์ ์ฌ๋ฌ ๊ฐ์ GPU)
5) Multi Node Multi GPU(ํ ๋์ ์ปดํจํฐ์ ํ ๊ฐ์ GPU. ์๋ฒ์ค)
2. Model parallel
1) ๋ค์ค GPU์ ํ์ต์ ๋ถ์ฐํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ - ๋ชจ๋ธ์ ๋๋๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ๋๋
2) ๋ชจ๋ธ์ ๋ณ๋ชฉ, ํ์ดํ๋ผ์ธ์ ์ด๋ ค์ ๋ฑ์ผ๋ก ์ธํด ๋ชจ๋ธ ๋ณ๋ ฌํ๋ ๊ณ ๋์ด๋ ๊ณผ์
3) AlexNet
# Model parallel
class ModelParallelResNet50(ResNet):
def __init__(self, *args, **kwargs):
super(ModelParallelResNet50, self).__init__(
BottleNeck, [3, 4, 6, 3], num_classes=num_classes, *args, **kwargs)
# ์ฒซ ๋ฒ์งธ ๋ชจ๋ธ์ cuda:0์ ํ ๋น
self.seq1 = nn.Sequential(self.conv1, self.bn1, self.relu, self.maxpool, self.layer1, self.layer2).to('cuda:0')
# ๋ ๋ฒ์งธ ๋ชจ๋ธ์ cuda:1์ ํ ๋น
self.seq2 = nn.Sequential(self.layer3, self.layer4, self.avgpool).to('cuda:1')
# ๋ ๋ชจ๋ธ์ ์ฐ๊ฒฐ
def forward(self, x):
x = self.seq2(self.seq1(x).to('cuda:1'))
return self.fc(x.view(x.size(0), -1))
3. Data parallel
1) ๋ฐ์ดํฐ๋ฅผ ๋๋ GPU์ ํ ๋น ํ ๊ฒฐ๊ณผ์ ํ๊ท ์ ์ทจํ๋ ๋ฐฉ๋ฒ
2) ํ ๋ฒ์ ์ฌ๋ฌ GPU์์ ์ํ
3) DataParallel : ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฐฐํ ํ ํ๊ท ์ ์ทจํจ -> GPU ์ฌ์ฉ ๋ถ๊ท ํ ๋ฌธ์ , batch ์ฌ์ด์ฆ ๊ฐ์
4) DistributedDataParallel - ๊ฐ CPU๋ง๋ค process ์์ฑํ์ฌ ๊ฐ๋ณ GPU์ ํ ๋น -> ๊ฐ๋ณ์ ์ผ๋ก ์ฐ์ฐ์ ํ๊ท ์ ๋
# Data parallel
parallel_model = torch.nn.DataParallel(model)
# Distributed Data parallel
train_sampler = torch.utils.data.distributed.DistributedSampler(train_data)
shuffle = False
pin_memory = True
train_loader = torch.utils.data.DataLoader(
train_data, batch_size=20, shuffle=True,
pin_memory=pin_memory, num_worker=3, shuffle=shuffle,
sampler=train_sampler)
[9] Hyperparameter Tuning
1. Hyperparameter Tuning
1) ๋ชจ๋ธ ์ค์ค๋ก ํ์ตํ์ง ์๋ ๊ฐ์ ์ฌ๋์ด ์ง์
- ์) learning rate, ๋ชจ๋ธ์ ํฌ๊ธฐ, optimizer ๋ฑ
2) grid search : ์ผ์ ํ ๋ฒ์๋ก ์๋ผ์ ๊ฐ์ ์กฐํฉ์ ์ ํจ ์) 0.1, 0.01, 0.001
3) Random Search : ๋๋ค์ผ๋ก ๊ฐ์ ์กฐํฉ์ ์ ํจ
2. Ray
1) multi-node multi-processing ์ง์ ๋ชจ๋
2) ML/DL์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ํด ๊ฐ๋ฐ๋ ๋ชจ๋(ML/DL ๋ชจ๋์ ํ์ค)
3) hyperparameter ์กฐ์ ๋ณด๋ค ์ข์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์ผ๋ ๊ฒ์ด ๋ ์ค์!
๐ ์ค๋์ ํ๊ณ
์ค์ ์๋ ํ์ดํ ์น์ 8, 9๊ฐ์ ํ์ตํ๋ค. ์ฌ์ค multi-gpu๋ก ํ์ตํ ์ผ์ด ์์ง๊น์ง๋ ์์ด์ ์ ์๋ฟ์ง ์๋ ๋ด์ฉ์ด์ง๋ง, ์ธ์ ๊ฐ multi-gpu๋ก ํ์ตํ๋ ๋ ์ ์ํด์ ์ด์ฌํ ๋ค์ด๋์๋ค. Dataparallel๊ณผ DistributedDataparallel์ ์ธ์ ๋ค์ด๋ ์ด๋ ค์ด ๊ฐ๋ ์ธ ๊ฒ ๊ฐ๋คใ ใ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋์ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ, ํ์ต๊น์ง ๋ชจ๋ ํ๊ณ ๋ ์ผ๋ถ ํ์ดํผํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ณ๊ฒฝํด์ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค๊ณ ๋ค์๋๋ฐ, RAY๋ผ๋ ๋ชจ๋์ ์ด์ฉํด์ ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ ํ ๊ฒ์ ์ฒ์์ด๋ผ ๋ค์์ ๋ชจ๋ธ์ ํ์ตํ ๋ ์จ๋จน์ด์ผ ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค! ์คํ์๋ ๋ฉํ ๋ง, ํผ์ด์ธ์ , ์คํผ์ค์์๊น์ง ์์๋๋ฐ, ๋ฉํ ๋ง์์๋ ์ฌ๋ฌ ๋ฅ๋ฌ๋ ์ปค๋ฎค๋ํฐ์ ์ฌ์ฉํ๊ธฐ ์ข์ ํด๋ค, ๊ทธ๋ฆฌ๊ณ ์ง๋ก ๊ณ ๋ฏผ๊ณผ ์ปดํจํฐ ๋น์ ์ ๋ํ ์ง๋ฌธ๋ค์ ๋ํ ๋ต๋ณ์ ํด์ฃผ์ จ๋คใ ใ ์ผ์ฃผ์ผ์ ํ ๋ฒ ๋ฐ์ ์๋ ์๊ฐ์ด์ง๋ง ์ธ๊ณต์ง๋ฅ์ ํ์ต ์ธ์ ์ผ๋ก ์์๊ฐ๋ ๊ฒ ๋ง์์ ์ ์ฉํ ์๊ฐ์ด์๋ค. ํผ์ด์ธ์ ๋๋ ๊ณผ์ ๊ฐ ๋ง๊ฐ๋๊ณ ์๋ก ์ด๋ ค์ ๋ ๊ฒ๋ค์ ๋ํด์ ์ด์ผ๊ธฐ ํ๋ ์๊ฐ์ ๊ฐ์ก๋๋ฐ, ์ง๋ ์ฃผ ๊ณผ์ ์ ๋นํด์ ๋ณธ๊ฒฉ์ ์ผ๋ก ํ์ดํ ์น๋ฅผ ๊ณต๋ถํ๋ ์ด๋ ค์์ง๊ณ ๋ค ๋ชป ๋๋ด๊ณ ..(^.ใ ) ํ ์๊ฐ ์ ๋ break ํ์์ ๊ฐ์ง๋ค๊ฐ ์คํผ์ค์์์๋ ์ด๋ฒ ์ฃผ ๊ธฐ๋ณธ ๊ณผ์ ์ ๋ํ ํ์ด๋ฅผ ํด์ฃผ์ จ๋ค. ์ ๋ง ๊ผผ๊ผผํ๊ฒ ์ ๋ฆฌ๋ ๊ณผ์ ๋ผ์ ๋๊ณ ๋๊ณ ํ์ดํ ์น์์ ๋ชจ๋ฅด๋ ๊ฐ๋ ์ด ๋์ฌ ๋ ์ฐพ์๋ณผ ๊ฑฐ ๊ฐ๋ค. ๊ธฐ๋ณธ ๊ณผ์ ์ ๋ํด์๋ ๋ด์ผ ๊ฐ์ ํ๋ ๋ฃ๊ณ ๋ค์ ๋ณต์ตํ๋๊ฑธ๋ก!๐
'Boostcourse > AI Tech 4๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ถ์คํธ์บ ํ AI Tech]WEEK 03_DAY 11 (0) | 2022.10.05 |
---|---|
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 10 (1) | 2022.09.30 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 08 (0) | 2022.09.29 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 07 (0) | 2022.09.27 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 06 (1) | 2022.09.26 |