【问题标题】:How to find what is using the CPU for indices pytorch / numpy : indices should be either on cpu or on the same device as the indexed tensor (cpu)How to find what is using the CPU for indices pytorch / numpy :索引应该在cpu上或与索引张量(cpu)在同一设备上
【发布时间】:2023-01-03 19:00:10
【问题描述】:

我正在尝试找到对 RuntimeError 的修复:索引应该在 cpu 上或与索引张量 (cpu) 在同一设备上 所以我可以运行图像扩散模型: https://github.com/kakaobrain/karlo

完整的错误输出在这里: https://github.com/kakaobrain/karlo/issues/12

当我明确设置 gpu 时出现错误 os.environ["CUDA_VISIBLE_DEVICES"]="1"

我已将 cpu 更改为 "cuda"cuda(),其中 "cpu"cpu() 是,但是当我尝试运行模型时仍然会抛出错误 (gradio 开始于python demo/product_demo.py --host 0.0.0.0 --port 8085 --root-dir .

关于我可以探索哪些内容仍在使用 cpu 进行索引的任何建议? 还是发生了其他事情?

【问题讨论】:

  • 似乎 self.timestep_map 在 CPU 上,而 ts 在 GPU 上。尝试使用调试器跟踪执行并确认我所说的是否属实。如果是这样,请找出您的张量中的哪个对应于 self.timestep_map 并将其移至 GPU。
  • 谢谢;我试过 timestep_map_tensor = th.tensor(timestep_map) cuda_device = th.device("cuda") timestep_map_tensor = timestep_map_tensor.to(cuda_device) 但是 vram 加载东西用完了(我在一张卡上有 24GB)这可能是一个单独的问题让一切都适合
  • 能够使用 set 'PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512' 将东西加载到 VRAM 中,甚至开始看到图像生成 :) 但在生成时用完了 VRAM;进步 :)
  • 降低“最大批量大小”我能够成功运行东西:)在这两个变化之后
  • 很高兴你解决了它!考虑将您的 cmets 作为答案发布,然后接受它以将问题标记为已解决。

标签: pytorch


【解决方案1】:

实施的

timestep_map_tensor = th.tensor(timestep_map)   
cuda_device = th.device("cuda")   
timestep_map_tensor = timestep_map_tensor.to(cuda_device) 

但是 vram 加载东西用完了(我在一张卡上有 24GB)。

能够使用 set 将东西加载到 VRAM 中

'PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512'

甚至开始看到生成的图像 :) 但在生成时用完了 VRAM。

降低“最大批量大小”我能够成功运行东西:)在这两个变化之后

【讨论】:

    猜你喜欢
    • 2023-02-25
    • 2022-11-12
    • 2022-12-10
    • 2022-10-03
    • 1970-01-01
    • 2020-03-28
    • 2019-11-26
    • 1970-01-01
    • 2010-12-29
    相关资源
    最近更新 更多