ratsgo / embedding

한국어 임베딩 (Sentence Embeddings Using Korean Corpora)
https://ratsgo.github.io/embedding
MIT License
455 stars 130 forks source link

BERT 멀티 GPU 구동 방법에 대해 문의 드립니다. #99

Closed Gwang-Jin closed 4 years ago

Gwang-Jin commented 4 years ago

안녕하세요.

한국어 임베딩 책을 구입하여 소개되어 있는 내용을 따라가고 있습니다.

그리고 BERT모델을 이용하여 프리트레인과 파인튜닝을 하였습니다. 그런데, 파인튜팅의 경우 4개의 GPU 중에 1개의 GPU만 사용되어 수행이 되었습니다.

nvidia-smi 스크린샷

GPU 0번 부터 3번까지 인식은 되었지만, 실제 사용은 0번만 작동하였습니다. 4개의 GPU를 동시에 사용하기 위해서 어떻게 해야하는지요?

그리고, 프리트레이닝 경우도 다중 GPU 사용이 가능한지요?

감사합니다.

실행> nohup sh -c "python3 models/tune_utils.py --model_name bert \ --train_corpus_fname /pub/home/clickmiru/embedding/data/processed/3sentences_6ratings_train.txt\ --test_corpus_fname /pub/home/clickmiru/embedding/data/processed/3sentences_6ratings_test.txt\ --vocab_fname /pub/home/clickmiru/embedding/data/sentence-embeddings/bert/pretrain-ckpt/vocab_article.txt \ --pretrain_model_fname /pub/home/clickmiru/embedding/data/sentence-embeddings/bert/pretrain-ckpt/model.ckpt-100000 \ --config_fname /pub/home/clickmiru/embedding/data/sentence-embeddings/bert/pretrain-ckpt/bert_config.json \ --model_save_path /pub/home/clickmiru/embedding/data/sentence-embeddings/bert/tune-ckpt" > bert-tune.log &

ratsgo commented 4 years ago

@Gwang-Jin 님 안녕하세요. 멀티 GPU 구동까지 염두해 두시다니 고급 독자시군요!!! 한국어 임베딩은 모델과 프레임워크 전반에 대한 이해에 초점을 맞춰서 집필했기 때문에 멀티 GPU는 크게 염두에 두지 않았습니다.

@Gwang-Jin 님께서 생각하시는, 멀티 GPU 학습하려는 모델은 아무래도 transformer(BERT 같은..) 계열일 것으로 추측되는데요. transformer 모델의 멀티 GPU 학습은 huggingface에서 만든 패키지를 참고해 개발하거나 그대로 임포트해서 쓰는 것이 훨씬 나을 것 같습니다. huggingface의 모듈은 파이토치, 텐서플로우 모두 지원합니다. 해당 주소는 다음과 같습니다.

도움이 되셨으면 좋겠습니다.