#machine-learning #pytorch #gpu #conv-neural-network
#машинное обучение #pytorch #графический процессор #conv-neural-network
Вопрос:
Я создал CNN с нуля, используя только тензоры Pytorch и матричные операционные функции в надежде использовать графический процессор. К моему удивлению, графический процессор остается загруженным на 0%, и мое обучение, похоже, проходит не быстрее, чем на моем процессоре.
Перед обучением:
Во время обучения:
Я дважды проверил, доступна ли CUDA, и уже установил ее.
Видеокарта: Nvidia GEFORCE 2070 SUPER
Процессор: Intel i5 10400
Среда программирования: Jupyter Notebook
Версия Cuda amp; Cudnn: 11.0
Версия Pytorch: 1.6.0
Комментарии:
1. Один раз проверьте команду
nvidia-smi
внутри другого терминала во время выполнения кода. Возможно, ваш код использует слишком мало графического процессора. Использованиеnvidia-smi
лучше проверять использование графического процессора в моделях DL2. Я не вижу, чтобы мой графический процессор использовался после выполнения указанной вами команды. Я добавил результат команды в свой вопрос выше, пожалуйста, просмотрите.
3. на графике оптимизации GPU написано 3D, это означает, что график показан только для использования 3D, а не CUDA, есть стрелка вниз с использованием 3d, чтобы изменить его на CUDA, и вы сможете увидеть использование cuda.
4. @Mughees Да, теперь я вижу использование cuda, и оно составляет около 27% во время обучения. Спасибо, что указали на это. Но я тренировался с размером пакета 1000, как он мог использовать только 27% ядер cuda? И для вычисления прямого и обратного распространения одного пакета требуется почти час или около того.
5. В вашем коде все классы находятся на процессоре, поэтому используются CPU. Pytorch реализует использование графического процессора из серверной части. и
.cuda
будет работать, когда класс наследуетtorch.nn.Module
класс.
Ответ №1:
Вы должны переместить свою модель и данные на графический процессор с помощью
model.cuda()
# and
x = x.cuda()
y = y.cuda()
Кажется, вы делаете это с помощью вызовов forward и backward. Чтобы убедиться, что модель переходит на графический процессор, постоянно контролируйте использование графического процессора с помощью команды shell
watch -n 5 nvidia-smi
Комментарии:
1. Я добавил результат выполнения команды ‘nvidia-smi’ в свой вопрос выше. И я не могу выполнить model.cuda (), поскольку я создал модель с нуля и не использую ее из Pytorch. Я использовал только тензоры и функции матрицы из Pytorch. В остальном это простой код на Python.
2. поскольку вы переводите свои тензоры в cuda и поскольку он работает без сбоев, он должен быть переведен на графический процессор. Можете ли вы сделать скриншот вывода
nvidia-smi
перед запуском обучения и еще один после запуска обучения. Во время обучения дождитесь завершения одной эпохи, а затем сделайте остановку экрана.3. Добавлены скриншоты выше в вопросе. Похоже, что нагрузка ложится на центральный процессор, а не на графический процессор.