Я столкнулся с очень интересной проблемой при обучении модели глубокого обучения с использованием Python и Pytorch. Я разработал простой TCN следующим образом: < /p>
import torch
import torch.nn as nn
class TCN(nn.Module):
def __init__(self, input_size, output_size):
super(TCN, self).__init__()
self.convres = nn.Conv1d(input_size, output_size, kernel_size=1) ## 1x1 convolution
self.reluRes = nn.ReLU()
self.conv1 = nn.Conv1d(input_size, output_size, kernel_size=3, dilation=1, padding=1)
self.relu1 = nn.ReLU()
self.conv2 = nn.Conv1d(output_size, output_size, kernel_size=3, dilation=2, padding=2)
self.relu2 = nn.ReLU()
self.pool = nn.AdaptiveAvgPool1d(1)
self.fc = nn.Linear(output_size, 1)
def forward(self, x):
# Input shape: BatchSize x Seq_Len x FeatureSize
# Transpose to: BatchSize x FeatureSize x Seq_Len
x = x.permute(0, 2, 1)
residual = self.reluRes(self.convres(x))
x = self.relu1(self.conv1(x))
x = self.relu2(self.conv2(x))
x = x + residual
x = self.pool(x)
x = x.view(x.size(0), -1)
x = self.fc(x)
return x
< /code>
Я обеспечил воспроизводимость, установив случайные семена следующим образом: < /p>
import torch
import numpy as np
import random
def setup_seed(seed):
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)
np.random.seed(seed)
random.seed(seed)
torch.backends.cudnn.deterministic = True
< /code>
Проблема:
Когда я начал тренировать модель, я заметил очень медленную скорость тренировок. Даже через один или два часа, потеря первой эпохи еще не была напечатана. Тем не менее, мой GPU - это RTX 4090, поэтому я ожидал, что обучение будет очень быстрой, учитывая, что структура модели довольно проста. < /P>
Исследовать, я провел некоторое тестирование: < /p>
Я прокомментировал одну строку в прямом проходе: < /li>
x = self.relu2(self.conv2(x))< /code> < /p>
После этого тренировка внезапно стала чрезвычайно быстрой (всего несколько минут на эпоху). < /p>
Я понял, что реальная проблема была следующей строкой: < /li>
< /ol>
torch.backends.cudnn.deterministic = True
Когда я устанавливаю torch.backends.cudnn.deterministic = true, обучение было мучительно медленным. Когда я установил его на ложь, модель очень быстро обучалась. /> Почему настройка torch.backends.cudnn.deterministic = true приводит к тому, что модель TCN обучается чрезвычайно медленным? Несмотря на то, что модель содержит только стандартные слои Conv1d, я не ожидал такого драматического падения производительности. < /P>
< /li>
Почему комментирует один слой свертки быстрее, даже когда torch.backends.cudnn.deterministic = true? воспроизводимость) без жертвоприношения скорости тренировок, как мне настроить код? Мне очень любопытно относительно основной причины. Большое спасибо!
Я столкнулся с очень интересной проблемой при обучении модели глубокого обучения с использованием Python и Pytorch. Я разработал простой TCN следующим образом: < /p> [code]import torch import torch.nn as nn class TCN(nn.Module):
def forward(self, x): # Input shape: BatchSize x Seq_Len x FeatureSize # Transpose to: BatchSize x FeatureSize x Seq_Len x = x.permute(0, 2, 1) residual = self.reluRes(self.convres(x)) x = self.relu1(self.conv1(x)) x = self.relu2(self.conv2(x)) x = x + residual x = self.pool(x) x = x.view(x.size(0), -1) x = self.fc(x) return x < /code> Я обеспечил воспроизводимость, установив случайные семена следующим образом: < /p> import torch import numpy as np import random
def setup_seed(seed): torch.manual_seed(seed) torch.cuda.manual_seed_all(seed) np.random.seed(seed) random.seed(seed) torch.backends.cudnn.deterministic = True < /code> Проблема: Когда я начал тренировать модель, я заметил очень медленную скорость тренировок. Даже через один или два часа, потеря первой эпохи еще не была напечатана. Тем не менее, мой GPU - это RTX 4090, поэтому я ожидал, что обучение будет очень быстрой, учитывая, что структура модели довольно проста. < /P> Исследовать, я провел некоторое тестирование: < /p>
Я прокомментировал одну строку в прямом проходе: < /li>
x = self.relu2(self.conv2(x))< /code> < /p> После этого тренировка внезапно стала чрезвычайно быстрой (всего несколько минут на эпоху). < /p>
Я понял, что реальная проблема была следующей строкой: < /li> < /ol> torch.backends.cudnn.deterministic = True[/code] Когда я устанавливаю torch.backends.cudnn.deterministic = true, обучение было мучительно медленным. Когда я установил его на ложь, модель очень быстро обучалась. /> Почему настройка torch.backends.cudnn.deterministic = true приводит к тому, что модель TCN обучается чрезвычайно медленным? Несмотря на то, что модель содержит только стандартные слои Conv1d, я не ожидал такого драматического падения производительности. < /P> < /li> Почему комментирует один слой свертки быстрее, даже когда torch.backends.cudnn.deterministic = true? воспроизводимость) без жертвоприношения скорости тренировок, как мне настроить код? Мне очень любопытно относительно основной причины. Большое спасибо!
Я пытаюсь запустить cudnn через Cupy , но испытываю вышеупомянутую ошибку. Как мне разрешить эту ошибку? Чтобы использовать эту CUDA-11.4, необходимо использовать версию Python, не выше, чем версия 3.10.$ uv init cupy_cuda114_py310 --python 3.10...
Я пытаюсь запустить cudnn через Cupy , но испытываю вышеупомянутую ошибку. Как мне разрешить эту ошибку? Чтобы использовать эту CUDA-11.4, необходимо использовать версию Python, не выше, чем версия 3.10.$ uv init cupy_cuda114_py310 --python 3.10...
Я пытаюсь запустить cudnn через Cupy , но испытываю вышеупомянутую ошибку. Как мне разрешить эту ошибку? Чтобы использовать эту CUDA-11.4, необходимо использовать версию Python, не выше, чем версия 3.10.$ uv init cupy_cuda114_py310 --python 3.10...
Я хотел бы создать модель с TCN, за которой следует LSTM. Мне трудно понять, как использовать размеры каждого имеющегося у меня слоя.
мои данные можно просматривать в 3D с помощью (времени, пространства, объектов). время может варьироваться и...