์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์ฑ์งํผํฐ์ ์ ๋ฌด์๋ํ
- ์์ฐ์ด ์ฒ๋ฆฌ ๊ธฐ๋ฒ
- ๋ ผ๋ฌธ์ด๋ก
- llm
- AI
- Naive Bayes Classifier for Document Classification
- ์์ด๋ฆฌํฌ
- ๋ฐ์ดํฐ ์๊ฐํ
- ๋น์ ๊ณต์ ๋น ๋ถ๊ธฐ ํฉ๊ฒฉ
- sklearn.ensemble
- Collection if
- interpolate()
- sqld
- ํ์ธํ๋ ๋ฉ๋ชจ๋ฆฌ ํด๊ฒฐ
- BoostCourse
- ์์ฐ์ด ์ฒ๋ฆฌ์ ๋ชจ๋ ๊ฒ
- pytorch zero to all
- inplace=True
- DeepSpeed
- ์คํ์ ๋ฐฐ์ด ํธ์ํ๊ธฐ
- Bag-of-Words
- C++
- ๋ฐ์ดํฐ ๊ฒฐ์ธก์น
- head()
- tail()
- SQLD ๋ฒผ๋ฝ์น๊ธฐ
- Python
- list
- Til
- colab
- Today
- Total
hyerong's Dev_world๐ก
MS - DeepSpeed๋ ๋ฌด์์ธ๊ฐ ๋ณธ๋ฌธ
๋ฅ์คํผ๋(DeepSpeed)๋ ๋ง์ดํฌ๋ก์ํํธ์์ ๋ฐํํ ๋ฅ๋ฌ๋์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
์คํผ์ ๊ฐ๋ฐ ๊นํ๋ธ์์๋ ํ๋ฒ์ ํด๋ฆญ์ผ๋ก ์ฑ์งํผํฐ์ ์ ์ฌํ ๋ชจ๋ธ ๊ต์ก์ ์ง์ํด ๋ชจ๋ ๊ท๋ชจ์์ ํฐ ๋น์ฉ ์ ๊ฐ์ผ๋ก SOTA RLHF ์์คํ ๋ณด๋ค 15๋ฐฐ ๋น ๋ฅธ ์๋๋ฅผ ์ ๊ณตํ๋ค๊ณ ๋งํ๋ค.
gpu ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ฐ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด์ ํฐ ์ธ์ด๋ชจ๋ธ ํ๋ จ๊ณผ ๋ฐฐํฌ์ ์ฉ์ดํ๋ค!
DeepSpeed๋ ๋ชจ๋ธ ๋ณ๋ ฌํ, ํผํฉ ์ ๋ฐ๋ ํ๋ จ, ZeRO(Zero Redundancy Optimizer) ๊ธฐ์ ์ ์ ๊ณตํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ด๊ณ ํ๋ จ ์๋๋ฅผ ๋์ธ๋ค๊ณ ํ๋ค.
์๋๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ ํ๋ํ๋์ ๋ํด ์ข ๋ ์์ธํ ์์๋ณด์.
- ZeRO ์ต์ ํ:
- ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ, ์ตํฐ๋ง์ด์ ์ํ, ๊ทธ๋๋์ธํธ๋ฅผ ๋ถ์ฐํ์ฌ GPU ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ต์ํํ๊ณ ํฐ ๋ชจ๋ธ์ ํ๋ จํ ์ ์๋๋ก ๋์ต๋๋ค. ZeRO๋ Stage 1, Stage 2, Stage 3๋ก ๋๋๋ฉฐ, ๊ฐ ๋จ๊ณ๋ ์ ์ฐจ์ ์ผ๋ก ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ชจ๋ธ ๋ณ๋ ฌํ:
- ๋ชจ๋ธ์ ์ฌ๋ฌ GPU์ ๋ถ์ฐํ์ฌ ํ๋ จํ๋ฉฐ, ํ์ดํ๋ผ์ธ ๋ณ๋ ฌํ ๋ฐ ํ ์ ๋ณ๋ ฌํ๋ฅผ ์ง์ํ์ฌ ํ๋ จ ํจ์จ์ฑ์ ๋์ ๋๋ค.
- ํผํฉ ์ ๋ฐ๋ ํ๋ จ (Mixed Precision Training):
- fp16 ๋๋ bf16๊ณผ ๊ฐ์ ๋ฎ์ ์ ๋ฐ๋์ ๋ถ๋ ์์์ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ํ๋ จ ์๋๋ฅผ ๋์ด๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ค์ ๋๋ค.
- ์ฌํ๋ ๋ฐ์ดํฐ ๋ณ๋ ฌํ:
- ํฐ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ฌ๋ฌ GPU์ ๋ถ์ฐํ์ฌ ๋ฐ์ดํฐ ๋ณ๋ ฌ ํ๋ จ์ ์ง์ํ๋ฉฐ, ํ๋ จ ์๊ฐ์ ๋จ์ถํฉ๋๋ค.
- Offload ๊ธฐ์ :
- CPU ๋๋ NVMe์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ์คํ๋ก๋ํ์ฌ GPU ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
- ๋ฅ์คํฌ๋ฆฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋ฐฉ๋ฒ
pip install deepspeed
- ๊ธฐ๋ณธ ์ฌ์ฉ ์๊ธฐ
PyTorch์ ํจ๊ป DeepSpeed๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด deepspeed.initialize ํจ์๋ฅผ ํตํด ์ค์ ํ์ผ์ ๋ก๋ํ๊ณ ๋ชจ๋ธ์ ์ด๊ธฐํํด์ผ ํฉ๋๋ค.
1. DeepSpeed ์ค์ ํ์ผ ์์ฑ:
ds_config.json ํ์ผ์ ์์ฑํ์ฌ ZeRO, ํผํฉ ์ ๋ฐ๋ ๋ฑ์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
{
"train_batch_size": 8,
#ํผํฉ ์ ๋ฐ๋
"fp16": {
"enabled": true
},
#zero
"zero_optimization": {
"stage": 2
}
}
2. ๋ชจ๋ธ ์ด๊ธฐํ ์ฝ๋:
PyTorch ๋ชจ๋ธ์ DeepSpeed๋ก ์ด๊ธฐํํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํ์ผ์ ๋ก๋ํ๊ณ deepspeed.initialize ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
import deepspeed
import torch
import torch.nn as nn
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.layer = nn.Linear(768, 10)
def forward(self, x):
return self.layer(x)
# ์ค์ ํ์ผ ๊ฒฝ๋ก
ds_config = "ds_config.json"
# ๋ชจ๋ธ ๋ฐ DeepSpeed ์ด๊ธฐํ
model = MyModel()
model_engine, optimizer, _, _ = deepspeed.initialize(config=ds_config, model=model, model_parameters=model.parameters())
# ํ๋ จ ๋ฃจํ
for batch in data_loader:
outputs = model_engine(batch)
loss = loss_fn(outputs, labels)
model_engine.backward(loss)
model_engine.step()
๐ ๋ฅ์คํฌ๋ฆฐ์ ๋ ์์๋ณด๊ธฐ์ ์ข์ ์ ํ๋ธ ๊ฐ์ ๐
https://www.youtube.com/watch?v=g_O3O4ExaUY
LLM ํ์ธํ๋์ ํ๋ฉด์ ํฐ ๊ฑธ๋ฆผ๋์ด ๋ฉ๋ชจ๋ฆฌ ์ด์์๋๋ฐ (cuda memory out) ๋ค์ ํ์ธํ๋์์ ๋ฅ์คํฌ๋ฆฐ์ ์ ์ฉํด์ ํ๋ จ์์ผ๋ด์ผ๊ฒ ๋ค.
'AI' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Article] What if AI doesnโt just keep getting better forever? (1) | 2024.12.01 |
---|---|
[TIL] python ๋ชจ๋ธ๋ง : RandomForestRegressor ๋ชจ๋ธ ์ฌ์ฉ (1) | 2023.02.08 |
[TIL] python Lv2 ์ ์ฒ๋ฆฌ, ๊ฒฐ์ธก์น ํ๊ท ๊ฐ, ๋ณด๊ฐ๋ฒ (1) | 2023.02.08 |
[TIL] python ๋ฐ์ดํฐ ์ฝ๊ธฐ ๊ธฐ๋ณธ (1) | 2023.02.01 |