큰 모델을 GPU에 올리다 보면 CUDA out of memory 에러가 빈번하게 날 수 있다. device_map="auto"로 사용 가능한 모든 GPU에 자동으로 모델을 나눠서 올리는 것인데, 내가 원하는 GPU를 적접 정하고 싶은 경우에는 어떻게 할까? 내 경우에는 랩실 사람들끼리 사용하기로 한 GPU를 나눠서 지정했기 때문에 아래 방법을 찾아보게 되었다.
config.py에 device_map을 정의하고, 모델을 정의한 device_map으로 분산시켜 올린다.
## opt-13b에 대한 레이어 분산 설정
device_map = {
"model.decoder.embed_tokens": 0,
"model.decoder.embed_positions": 0,
"model.decoder.final_layer_norm": 0,
"lm_head": 0,
}
# 레이어 분산 설정 (0~19: cuda:0, 20~39: cuda:2)
for i in range(40):
if i < 20:
device_map[f"model.decoder.layers.{i}"] = 0
else:
device_map[f"model.decoder.layers.{i}"] = 2
## 모델 레이어 분산 설정
model = model_class.from_pretrained(args.model_name_or_path, device_map=config.device_map)
tokenizer = tokenizer_class.from_pretrained(args.model_name_or_path)
'🖥️ 에러 해결 기록' 카테고리의 다른 글
| [git] conflict 해결하기 (0) | 2025.12.21 |
|---|---|
| [git] 로컬과 원격 merge 후 push하기 (0) | 2025.12.21 |
| requirements.txt 만들기 (0) | 2025.08.09 |
| 가상환경 / tmux / 자주 쓰이는 터미널 명령어 (1) | 2025.08.08 |
| [터미널] Unity ML-Agents 파이썬 패키지 설치 (3) | 2025.03.17 |