텐서플로우 백엔드를 가진 케라스가 CPU나 GPU를 마음대로 사용하도록 강요할 수 있습니까?
Tensorflow 백엔드와 CUDA가 설치된 Keras가 있습니다. 가끔 Keras에게 CPU를 사용하도록 요구하고 싶습니다. 가상 환경에 별도의 CPU 전용 Tensorflow를 설치하지 않아도 가능합니까?만약 그렇다면, 어떻게?백엔드가 테아노인 경우에는 플래그를 설정할 수 있었지만, 케라스를 통해 접근할 수 있는 텐서플로우 플래그에 대해서는 들어본 적이 없습니다.
Keras에게 CPU를 강제로 사용하도록 하려면
1번길
import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"] = ""
Keras / Tensorflow를 가져오기 전에.
2번길
스크립트 실행:
$ CUDA_VISIBLE_DEVICES="" ./your_keras_code.py
참고 항목
이는 keras를 가져오기 전에 사용할 수 있었습니다(win10).
import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
이를 위한 다소 분리 가능한 방법은
import tensorflow as tf
from keras import backend as K
num_cores = 4
if GPU:
num_GPU = 1
num_CPU = 1
if CPU:
num_CPU = 1
num_GPU = 0
config = tf.ConfigProto(intra_op_parallelism_threads=num_cores,
inter_op_parallelism_threads=num_cores,
allow_soft_placement=True,
device_count = {'CPU' : num_CPU,
'GPU' : num_GPU}
)
session = tf.Session(config=config)
K.set_session(session)
자, 여기에.booleans
GPU
그리고.CPU
, Tensorflow 세션이 액세스할 수 있는 GPU 및 CPU의 수를 엄격하게 정의하여 GPU 또는 CPU로 코드를 실행할지 여부를 나타냅니다.변수들은num_GPU
그리고.num_CPU
이 값을 정의합니다.num_cores
다음을 통해 사용할 수 있는 CPU 코어의 수를 설정합니다.intra_op_parallelism_threads
그리고.inter_op_parallelism_threads
.
그intra_op_parallelism_threads
variable은 계산 그래프의 단일 노드에서 병렬 연산이 사용할 수 있는 스레드 수를 나타냅니다(intra).그 동안에inter_ops_parallelism_threads
variable은 계산 그래프(inter)의 노드에 걸쳐 병렬 연산을 위해 액세스할 수 있는 스레드 수를 정의합니다.
allow_soft_placement
는 다음 기준 중 하나에 해당하는 경우 CPU에서 작업을 실행할 수 있도록 허용합니다.
작업을 위한 GPU 구현이 없습니다.
알려진 또는 등록된 GPU 장치가 없습니다.
CPU의 다른 입력과 함께 위치를 조정할 필요가 있습니다.
이 모든 것은 다른 작업 이전에 내 클래스의 생성자에서 실행되며, 내가 사용하는 어떤 모델이나 다른 코드와도 완전히 분리할 수 있습니다.
참고: 다음이 필요합니다.tensorflow-gpu
그리고.cuda
/cudnn
GPU를 사용할 수 있는 옵션이 주어지기 때문에 설치됩니다.
참조:
ConfigProto의 allow_soft_placement 및 log_device_placement 옵션은 무엇을 의미합니까?
inter_op_parallelism_threads 및 intra_op_parallelism_threads의 의미
그냥 10개의 소트 플로우를 수입해서 케라를 사용하면 됩니다, 그만큼 쉽습니다.
import tensorflow as tf
# your code here
with tf.device('/gpu:0'):
model.fit(X, y, epochs=20, batch_size=128, callbacks=callbacks_list)
케라스 튜토리얼에 따라, 당신은 단순히 같은 것을 사용할 수 있습니다.tf.device
일반 텐서 흐름과 같은 범위:
with tf.device('/gpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on GPU:0
with tf.device('/cpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on CPU:0
시간을 좀 들여서 알아냈어요.토마의 대답은 완전하지 않습니다.을 ㅇㅇ라고 .test.py
하여 이자유롭게 . gpu0 하여 을 하고 를 gpu 하지 를 를 를 하지 를
당신은 글을 써야합니다.CUDA_VISIBLE_DEVICES=0 python test.py
에 DEVICES
것은 아니다.DEVICE
PyCharm에서 작업하는 사람과 CPU를 강제로 사용하는 경우 실행/디버그 구성의 환경 변수 아래에 다음 행을 추가할 수 있습니다.
<OTHER_ENVIRONMENT_VARIABLES>;CUDA_VISIBLE_DEVICES=-1
2 설정하려면 (tensor flow 2.9)를 사용합니다.tf.config.set_visible_devices([], 'GPU')
는 이 보이는 입니다. 빈 목록 인수는 이 실행에 대해 보이는 GPU가 없을 것이라는 것입니다.
Keras가 tf 구성을 초기화하기 전에 코드 초기에 이 작업을 수행합니다.
문서 참조 https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/config/set_visible_devices
언급URL : https://stackoverflow.com/questions/40690598/can-keras-with-tensorflow-backend-be-forced-to-use-cpu-or-gpu-at-will
'source' 카테고리의 다른 글
Jquery live() vs delegate() (0) | 2023.09.09 |
---|---|
Spring-Security의 기본 Authentication Manager는 무엇입니까?인증 방법은 무엇입니까? (0) | 2023.09.09 |
버튼 음영(안드로이드) 제거 방법 (0) | 2023.09.09 |
C에서 C++ 테이블 인라인 정의 (0) | 2023.09.09 |
JdbcStatement와 동등한 Mariadb 커넥터 세트LocalInfileInputStream입니다. (0) | 2023.09.09 |