메뉴 건너뛰기

XEDITION

study

https://lv99.tistory.com/12


*update 2020-10-16 - multi_gpu_model -> tf.distribute.MirroredStrategy

 

필요한건 단 두줄입니다!

 

from tensorflow.keras.utils import multi_gpu_model
parallel_model = multi_gpu_model(model, gpus=2)

 

keras의 함수죠! keras 쓰셨던 분은 익숙하실 합수입니다. model을 컴파일 하기 전에 multi_gpu_model로 변환해주고, parallel_model을 컴파일, 그리고 fit 해주면 됩니다! 참 쉽죠??

 

위의 함수는 더이상 지원되지 않는 것 같습니다.

 

Warning: THIS FUNCTION IS DEPRECATED. It will be removed after 2020-04-01. Instructions for updating: Use tf.distribute.MirroredStrategy instead.

 

따라서 tf.distribute.MirroredStrategy를 살펴봅시다. (TF 2.3 이상의 버전에서 사용하시면 안전합니다.)

 

mirrored_strategy = tf.distribute.MirroredStrategy()
#mirrored_strategy = tf.distribute.MirroredStrategy(devices=["/gpu:0", "/gpu:1"])

with mirrored_strategy.scope():
  model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(1,))])
  model.compile(loss='mse', optimizer='sgd')
  
dataset = tf.data.Dataset.from_tensors(([1.], [1.])).repeat(100).batch(10)
model.fit(dataset, epochs=2)
model.evaluate(dataset)

 

주석으로 처리한 부분은 특정 GPU만 사용할 때에 활용하시면 됩니다. 예를들어 gpu 0번과 1번만 사용하도록 하려면 devices에 ["/gpu:0", "/gpu:1"] 를 입력해주면 됩니다!


그런데 GPU는 두개 다 잡히고 에러 없이 잘 돌아가지만~ nvidia-smi로 살펴보면, 혹시 하나의 GPU만 돌고있는 것을 발견하실 수도 있습니다! 그러한 경우에는 아래와 같이 두 줄을 추가해주면 됩니다 :)

 

import tensorflow as tf 
tf.compat.v1.disable_eager_execution()

 

tf2.0에서는 eager mode가 default로 되어있는데, multi GPU를 위한 분산 strategy를 위해서는 disable해주어야합니다!

 

eager mode가 뭔지 궁금하신 분들은, eager execution (즉시 실행)이 설명되어있는 다음 포스트를 참고해주세요!

 

TensorFlow 2.0의 주요 기능 (TensorFlow와 Keras의 장점의 결합)

 

 

 

 


 

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
104 맥북 프로 M1 빅서 오류 "손상되었기 때문에 열 수 없습니다" 해결 방법 proin 2022.05.02 1
103 YOLOv4, YOLOv4-tiny 분석 proin 2021.12.16 3
102 OpenCV 4.5.1 Linux 설치 proin 2021.09.16 1
101 CUDA, CUDNN 설치 후 nvcc not found가 나올 때 proin 2021.07.15 4
100 %F0%9F%90%B3 Docker * 한글 설정, 한글 깨짐 해결하기 proin 2021.06.16 1
99 Darknet detector 여러가지 오류 처리하기 proin 2021.04.22 1
98 도커(Docker) 컨테이너 로케일 설정 proin 2021.03.31 1
97 리눅스 find -mtime 옵션 개념 익히기 file proin 2021.03.17 3
96 [리눅스/LInux] history 명령어 및 옵션- 이전에 수행한 명령어 리스트 확인, 동작원리 proin 2021.03.15 2
95 리눅스 파일 찾기, 파일속 문자열 찾기 proin 2021.03.03 1
94 [완료] Nvidia Docker (GPU 사용) 설치 proin 2021.02.18 1
93 How can I install pip for Python2.7 in Ubuntu 20.04 proin 2021.02.01 1
» [TF 2.x] TensorFlow 2.0 에서 multi GPU 사용하기 - 텐서플로우 문제 해결 proin 2021.01.26 1
91 Keras, Tensorflow에서 GPU 똑똑하게 사용하기 - 2부 proin 2021.01.26 2
90 Keras, Tensorflow에서 GPU 똑똑하게 사용하기 - 1부 proin 2021.01.26 1
89 Jupyter Notebook 사용법(주피터 노트북 설치 및 사용법) proin 2021.01.25 1
88 Raspberry Pi 3에 Extra Module(contrib) 포함하여 OpenCV 4.5.0 설치하는 방법 proin 2020.12.14 1
87 [Python] 데이터 베이스(mariaDB)를 연결하여 사용하는 방법 proin 2020.11.09 3
86 [Linux] sudo 실행 시 비밀번호 미리 입력하여 실행하기 proin 2020.11.04 1
85 bios 부팅 메뉴에서“Ubuntu”를 어떻게 제거합니까? (UEFI) proin 2020.09.04 1
위로