XiangZ-0 / HiT-SR

[ECCV 2024 - Oral] HiT-SR: Hierarchical Transformer for Efficient Image Super-Resolution
Apache License 2.0
74 stars 2 forks source link

add support for mac mps #5

Open i18nsite opened 3 days ago

i18nsite commented 3 days ago

as title

XiangZ-0 commented 2 days ago

Hi, thanks for your interest! We have updated the code and tested the inference pipeline. HiT-SR should support mac mps now :)

i18nsite commented 1 day ago

@XiangZ-0 多谢 我还想问一句,你们这个放大模型支持的最大输入分辨率是多少?我在我的mac m2上跑,我发现对4096的图片做放大会被kill,即使这时候还有很多空闲内存。

i18nsite commented 1 day ago

Hi, thanks for your interest! We have updated the code and tested the inference pipeline. HiT-SR should support mac mps now :)您好,感谢您的关注!我们更新了代码并测试了推理管道。 HiT-SR 现在应该支持 mac mps :)

多谢,不过我说的是huggingface的推理模型,现在暴露的参数是cuda_flag,能不能改为暴露一个device="cuda" 或者 device="mps" 这种,或者干脆 device=None 的时候自动推断用什么设备。 https://huggingface.co/XiangZ/hit-sr

我对一个 4096 2528 分辨率的图片做2倍放大的时候(我的MAC M2 的一体化内存有64GB),程序会被kill(内存还有很多)。

报错是: /Users/z/.local/share/mise/installs/python/3.12.7/lib/python3.12/multiprocessing/resource_tracker.py:254: UserWarning: resource_tracker: There appear to be 1 leaked semaphore objects to clean up at shutdown

小图片都正常

这可能是一个mac mps的问题(参见 https://github.com/apple/ml-stable-diffusion/issues/8 ),但是我的确不知道如何修复


+ exec mise exec -- ./scale.py test test 2
/Users/z/.local/share/mise/installs/python/3.12.7/lib/python3.12/site-packages/timm/models/layers/__init__.py:48: FutureWarning: Importing from timm.models.layers is deprecated, please import via timm.layers
  warnings.warn(f"Importing from {__name__} is deprecated, please import via timm.layers", FutureWarning)

%s
 XiangZ/hit-sir-2x
config.json: 100%|█████████████████████████████████████████████████████████████████| 579/579 [00:00<00:00, 492kB/s]
model.safetensors: 100%|██████████████████████████████████████████████████████| 3.19M/3.19M [00:00<00:00, 8.38MB/s]
ZWEyNmFjYTZjYmJjMzQyM2Y5NTJjNzAzM2NmN2U2OTEK.png
  0%|                                                                                        | 0/1 [00:00<?, ?it/s]/Users/z/.local/share/mise/installs/python/3.12.7/lib/python3.12/site-packages/torch/functional.py:534: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/native/TensorShape.cpp:3596.)
  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]
zsh: killed     ./scale.sh test test 2
/Users/z/.local/share/mise/installs/python/3.12.7/lib/python3.12/multiprocessing/resource_tracker.py:254: UserWarning: resource_tracker: There appear to be 1 leaked semaphore objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d '
i18nsite commented 13 hours ago

我倒是想到一个绕过去的方案, 我可以切成小图,然后放大之后再合并 边缘做一些透明融合。

XiangZ-0 commented 54 minutes ago

您好,感谢您的反馈!我们也更新了hugging face上的版本以支持Apple mps,且您可以在HuggingFace页面的样例中修改device参数以选择不同运行设备。

对于大图像的推理,有一个与您想法类似的技术叫self-ensemble,可以设置yaml文件中的use_chop=True(此处)来调用。该方法使用滑动窗口的方式处理图片局部,最后将结果拼接起来,因此运行时间相对较长,但应该能够节省内存开销。

希望对您有帮助!