开发者社区 > ModelScope模型即服务 > 正文

modelscope调用的模型如何指定在特定gpu上运行?排除使用CUDA_VISIBLE_DEVI

当我这样操作时,传入device为0或者“cuda:0”,都无法让其运行到指定gpu
self.skin_retouching = pipeline(Tasks.skin_retouching, model='damo/cv_unet_skin-retouching',device=device)
默认直接加载到多张卡上。
而且我发现对于不同的damo模型,使用这样的device传参方法,有的还会报错?难道达摩院内部的接口不统一吗?

对于我的需求我该如何修改我的代码?

展开
收起
游客jylnbcvdoiqxg 2023-12-18 15:32:18 133 0
1 条回答
写回答
取消 提交回答
  • 在ModelScope中,你可能无法直接通过参数指定模型在特定GPU上运行,因为这通常取决于ModelScope服务端的配置和实现。通常情况下,这样的资源分配和设备管理是在服务器端进行的。如果你在本地环境中使用ModelScope的模型,并且你有多个GPU,你可以尝试以下方法来控制模型在特定GPU上运行:

    1. 设置CUDA_VISIBLE_DEVICES环境变量:
      尽管你希望排除这种方法,但这是最直接的方式。在运行你的Python脚本之前,设置CUDA_VISIBLE_DEVICES环境变量为你要使用的GPU编号。
    2. 使用CUDA上下文管理器:
      如果你正在使用深度学习框架(如TensorFlow或PyTorch),你可以创建一个CUDA上下文管理器来指定在哪个GPU上运行模型。以下是一个使用PyTorch的例子:

      import torch
      
      device = torch.device('cuda:0')  # 或者使用你想要的GPU编号
      with torch.cuda.device(device):
          self.skin_retouching = pipeline(Tasks.skin_retouching, model='damo/cv_unet_skin-retouching')
      
    3. 检查模型实现:
      对于不同的达摩院模型,如果使用上述方法仍然无法指定GPU或者报错,可能是由于模型实现的不同或者内部接口的不统一。在这种情况下,你可能需要查阅相关模型的文档或者联系达摩院的支持以获取更具体的信息。
    2023-12-18 15:54:57
    赞同 展开评论 打赏

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!欢迎加入技术交流群:微信公众号:魔搭ModelScope社区,钉钉群号:44837352

相关电子书

更多
DeepStream: GPU加速海量视频数据智能处理 立即下载
阿里巴巴高性能GPU架构与应用 立即下载
GPU在超大规模深度学习中的发展和应用 立即下载