You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Добрый день! В моей видеокарте мало памяти и модель умещается только если хранить её с понижением точности в float16, однако в таком случае не работает transcribe. Мои версии библиотек:
Я попытался просто перед переносом на видеокарту вызвать .to(torch.float16) и обернуть model.transcribe в torch.autocast(dtype=torch.float16), но это вызвало ошибку:
torchaudio/transforms/_transforms.py", line 412, in forward
mel_specgram = torch.matmul(specgram.transpose(-1, -2), self.fb).transpose(-1, -2)
RuntimeError: expected scalar type Half but found Float
Тогда я перегрузил метод forward класса FilterbankFeaturesTA и вставил между signals = self._apply_preemphasis(signals=signals) и features = self._extract_spectrograms(signals=signals) явное преобразование signals = signals.to(torch.float16) и отредакторовал yaml файл конфигурации, сделав n_fft равным 512, так как иначе не выполняется FFT на видеокарте, но получаю в качестве транскрипции множество сдвоенных вопросительных знаков. При этом я отдельно на CPU проверил, что изменение размера окна преобразования Фурье в препроцессоре не влияет на качество распознавания речи (по крайней мере на моих примерах).
При этом если не делать with torch.autocast(dtype=torch.float16), то код вываливается с ошибкой в энкодере:
.../nemo/collections/asr/models/rnnt_models.py", line 670, in forward
encoded, encoded_len = self.encoder(audio_signal=processed_signal, length=processed_signal_length)
...
return F.conv1d(input, weight, bias, self.stride,
RuntimeError: Input type (float) and bias type (c10::Half) should be the same
Существует ли способ выполнять вычисления в float16?
The text was updated successfully, but these errors were encountered:
Добрый день! В моей видеокарте мало памяти и модель умещается только если хранить её с понижением точности в float16, однако в таком случае не работает transcribe. Мои версии библиотек:
Я попытался просто перед переносом на видеокарту вызвать
.to(torch.float16)
и обернутьmodel.transcribe
вtorch.autocast(dtype=torch.float16)
, но это вызвало ошибку:Тогда я перегрузил метод
forward
классаFilterbankFeaturesTA
и вставил междуsignals = self._apply_preemphasis(signals=signals)
иfeatures = self._extract_spectrograms(signals=signals)
явное преобразованиеsignals = signals.to(torch.float16)
и отредакторовал yaml файл конфигурации, сделавn_fft
равным 512, так как иначе не выполняется FFT на видеокарте, но получаю в качестве транскрипции множество сдвоенных вопросительных знаков. При этом я отдельно на CPU проверил, что изменение размера окна преобразования Фурье в препроцессоре не влияет на качество распознавания речи (по крайней мере на моих примерах).При этом если не делать
with torch.autocast(dtype=torch.float16)
, то код вываливается с ошибкой в энкодере:Существует ли способ выполнять вычисления в float16?
The text was updated successfully, but these errors were encountered: