"为什么modelscope里面的pipeline 对传入的device参数,不起做用啊?多卡的机器,传入指定的显卡,但是只使用0卡。
inference_pipeline = pipeline(
task=Tasks.auto_speech_recognition,
model='damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch',
device='cuda:2')
OutOfMemoryError: AutomaticSpeechRecognitionPipeline: CUDA out of memory. Tried to allocate 2.00 MiB (GPU 0; 23.87 GiB total capacity; 876.36 MiB already allocated; 2.75 MiB free; 900.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
"
在 Modelscope 中,pipeline 的 device 参数用于指定模型运行的设备(例如 GPU)。然而,如果您传入了指定的显卡设备参数,但仍然只使用了 0 卡,可能有几个原因:
检查设备编号:确保您在传入设备参数时使用了正确的设备编号。在 Modelscope 中,设备编号通常从 0 开始,表示第一个设备。如果您指定了错误的设备编号,系统将无法正确选择要使用的设备。
确认设备可用性:在多卡机器上运行模型之前,请确保所有指定的显卡设备都是可用的,并且没有被其他任务或进程占用。您可以使用相关命令(如 nvidia-smi)来检查显卡的状态和可用性。
检查平台支持:某些情况下,特定的硬件、驱动程序或操作系统版本可能会导致设备参数不起作用。建议查阅 Modelscope 的文档、讨论区或联系支持团队,以了解是否存在与设备兼容性相关的问题。
调整代码逻辑:有时,pipeline 的实现可能需要调整,以正确处理设备参数。您可以检查 pipeline 相关的代码和配置,确保设备参数正确传递给模型并起到相应的作用。
如果问题仍然存在,建议您查阅 Modelscope 的文档、示例代码,或联系支持团队以获取更具体和定制化的帮助。
在 ModelScope 的 pipeline 中,可以通过设置 device 参数指定使用的设备。例如,可以设置 device="cuda:0" 指定使用 GPU 设备进行计算。如果您在多卡机器上,可以设置 device="cuda:0,1" 指定使用两个 GPU 设备进行计算。
如果您在设置 device 参数后发现只有一个 GPU 设备被使用,可能是因为模型或数据的大小超出了单个 GPU 的内存限制。在这种情况下,可以尝试使用分布式训练等方法,将计算任务分配到多个 GPU 设备上进行计算。
另外,如果您在使用 pipeline 进行训练或推断时发现设备设置不起作用,可以检查是否正确设置了设备参数,并确保设备参数与您的硬件和软件环境兼容。同时,还可以尝试更新相关的依赖库和驱动程序,以确保设备参数能够正确地被识别和使用。
不支持,指定特定卡,可以通过命令行,在外面指定特定卡。比如想要指定第3块卡,直接 CUDA_VISIBLE_DEVICES=3 python infer.py。此回答整理自钉群“魔搭ModelScope开发者联盟群 ①”