Я использую пользовательский контейнер Docker для использования с SageMaker на экземпляре ml.p2.xlarge
.
Базовое изображение - tiangolo / python - машинное обучение: cuda9.1- python3 .7 , которое обычно поставляется с необходимым инструментарием CUDA. Пакеты python устанавливаются через conda с использованием следующего минимализма environment.yaml
:
dependencies:
- boto3
- joblib
- keras
- numpy
- pandas
- scikit-learn
- scipy
- tensorflow=2.0
Но когда я запускаю учебное задание для небольшого lenet5
CNN, я не вижу никакой активности GPU в журналы (и обучение длится столько же, сколько на экземпляре без графического процессора).
Больше беспокойства, len(tf.config.experimental.list_physical_devices('GPU')
возвращает 0
, а K.tensorflow_backend._get_available_gpus()
пусто. Наконец, если я проверяю размещение устройства (используя tf.debugging.set_log_device_placement(True)
) на базовой операции c, такой как следующее:
a = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
b = tf.constant([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]])
c = tf.matmul(a, b)
print(c)
, я получаю
Executing op _MklMatMul in device /job:localhost/replica:0/task:0/device:CPU:0
Подтверждение того, что операция имеет происходит на процессоре.
Сначала я подумал, что мой сценарий использования слишком мал для запуска использования графического процессора, но кажется, что графический процессор вообще не обнаружен! Я пропускаю какие-либо шаги или компоненты, необходимые для этого, чтобы работать?