• hidenorly's avatar
    Add FP32 fallback support on torch.nn.functional.interpolate · a0096c58
    hidenorly authored
    This tries to execute interpolate with FP32 if it failed.
    
    Background is that
    on some environment such as Mx chip MacOS devices, we get error as follows:
    
    ```
    "torch/nn/functional.py", line 3931, in interpolate
            return torch._C._nn.upsample_nearest2d(input, output_size, scale_factors)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        RuntimeError: "upsample_nearest2d_channels_last" not implemented for 'Half'
    ```
    
    In this case, ```--no-half``` doesn't help to solve. Therefore this commits add the FP32 fallback execution to solve it.
    
    Note that the ```upsample_nearest2d``` is called from ```torch.nn.functional.interpolate```.
    And the fallback for torch.nn.functional.interpolate is necessary at
    ```modules/sd_vae_approx.py``` 's ```VAEApprox.forward```
    ```repositories/stable-diffusion-stability-ai/ldm/modules/diffusionmodules/openaimodel.py``` 's ```Upsample.forward```
    a0096c58
mac_specific.py 5.8 KB