我试图运行的Whisper动物园模型从DJL的例子在GPU。
在第一次运行中,我得到的错误是发现了两个设备- Cuda和CPU。
据我所知,发生此错误是由于模型在GPU中而不是输入,作为修复,我创建了两个扩展WhisperTranslator和WhisperTranslatorFactory的类,即WhisperGPUTranslator和WhisperGPUTranslatorFactory。制作这些类以便NDArray.to对处理后的输入图像数据执行www.example.com(gpu(0))。
这有助于我启动应用程序。然而,当我做出推断时,我得到了这个错误:
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f971f918000, pid=22329, tid=22431
#
# JRE version: OpenJDK Runtime Environment (11.0.20+8) (build 11.0.20+8-post-Ubuntu-1ubuntu123.04)
# Java VM: OpenJDK 64-Bit Server VM (11.0.20+8-post-Ubuntu-1ubuntu123.04, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# C [0.23.0-libdjl_torch.so+0x118000] c10::intrusive_ptr<c10::TensorImpl, c10::UndefinedTensorImpl>::operator->() const+0xc
已尝试将DJL和DJL-Pytorch-Engine版本从23.0更改为21.1(低于21.1,示例代码不会编译)。每次都有同样的错误。
希望这里有人能知道如何解决这个问题。请帮帮我
1条答案
按热度按时间ni65a41a1#
想出来了,在这里发帖以防其他人也遇到这种情况。
在WhisperTranslator的processInput函数中,更改以下行:
与
当然,toDevice(gpu(0),copy=true)也必须在WhisperTranslator类的扩展中添加。(对我来说是WhisperGPU Translator,正如问题中所描述的那样)