1. 29 Nov, 2023 3 commits
    • hidenorly's avatar
      Fix the Ruff error about unused import · 81c00728
      hidenorly authored
      81c00728
    • 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
    • hidenorly's avatar
      Revert "Add FP32 fallback support on sd_vae_approx" · 39eae9f0
      hidenorly authored
      This reverts commit 58c19545.
      Since the modification is expected to move to mac_specific.py
      (https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/14046#issuecomment-1826731532)
      39eae9f0
  2. 21 Nov, 2023 1 commit
    • hidenorly's avatar
      Add FP32 fallback support on sd_vae_approx · 58c19545
      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 submodule may require additional modifications. The following is the example modification on the other submodule.
      
      ```repositories/stable-diffusion-stability-ai/ldm/modules/diffusionmodules/openaimodel.py
      
      class Upsample(nn.Module):
      ..snip..
          def forward(self, x):
              assert x.shape[1] == self.channels
              if self.dims == 3:
                  x = F.interpolate(
                      x, (x.shape[2], x.shape[3] * 2, x.shape[4] * 2), mode="nearest"
                  )
              else:
                  try:
                      x = F.interpolate(x, scale_factor=2, mode="nearest")
                  except:
                      x = F.interpolate(x.to(th.float32), scale_factor=2, mode="nearest").to(x.dtype)
              if self.use_conv:
                  x = self.conv(x)
              return x
      ..snip..
      ```
      
      You can see the FP32 fallback execution as same as sd_vae_approx.py.
      58c19545
  3. 20 Nov, 2023 6 commits
  4. 19 Nov, 2023 12 commits
  5. 17 Nov, 2023 4 commits
  6. 16 Nov, 2023 1 commit
  7. 15 Nov, 2023 2 commits
  8. 14 Nov, 2023 1 commit
  9. 13 Nov, 2023 1 commit
  10. 12 Nov, 2023 4 commits
  11. 11 Nov, 2023 5 commits