lshqqytiger / stable-diffusion-webui-amdgpu

Stable Diffusion web UI
GNU Affero General Public License v3.0
1.8k stars 186 forks source link

[Bug]: TypeError: 'NoneType' object is not iterable after calling /sdapi/v1/txt2img api endpoint #355

Open rique opened 8 months ago

rique commented 8 months ago

Checklist

What happened?

Calling the /sdapi/v1/txt2img api end point always produces the same error :

File "C:\Users\enrique\git\stable-diffusion-webui-directml\modules\sd_hijack.py", line 317, in apply_circular for layer in [layer for layer in self.layers if type(layer) == torch.nn.Conv2d]: TypeError: 'NoneType' object is not iterable

Steps to reproduce the problem

1 make a POST call to /sdapi/v1/txt2img with the proper payload as follow:

curl -X POST -v --data '{"prompt":"Nice weather","negative_prompt":"Bad weather","styles":[],"seed":-1,"subseed":-1,"subseed_strength":0,"seed_resize_from_h":-1,"seed_resize_from_w":-1,"sampler_name":"pndm","batch_size":1,"n_iter":1,"steps":50,"cfg_scale":7,"width":512,"height":512,"restore_faces":true,"tiling":true,"do_not_save_samples":false,"do_not_save_grid":false,"eta":0,"denoising_strength":0,"s_min_uncond":0,"s_churn":0,"s_tmax":0,"s_tmin":0,"s_noise":0,"override_settings":{},"override_settings_restore_afterwards":true,"refiner_checkpoint":"","refiner_switch_at":0,"disable_extra_networks":false,"comments":{},"enable_hr":false,"firstphase_width":0,"firstphase_height":0,"hr_scale":2,"hr_upscaler":"","hr_second_pass_steps":0,"hr_resize_x":0,"hr_resize_y":0,"hr_checkpoint_name":"","hr_sampler_name":"","hr_prompt":"","hr_negative_prompt":"","sampler_index":"Euler","script_name":"","script_args":[],"send_images":true,"save_images":true,"alwayson_scripts":{}}' -H "Content-type: application/json" http://127.0.0.1:7862/sdapi/v1/txt2img

2 Server responds with a 500 status code : {"error":"TypeError","detail":"","body":"","errors":"'NoneType' object is not iterable"}

What should have happened?

And image generation should have been execute and then a 200 status code should have been sent as a response with the image result.

What browsers do you use to access the UI ?

Mozilla Firefox

Sysinfo

sysinfo-2024-01-11-21-05.json

Console logs

API error: POST: http://127.0.0.1:7862/sdapi/v1/txt2img {'error': 'TypeError', 'detail': '', 'body': '', 'errors': "'NoneType' object is not iterable"}
    Traceback (most recent call last):
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\anyio\streams\memory.py", line 98, in receive
        return self.receive_nowait()
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\anyio\streams\memory.py", line 93, in receive_nowait
        raise WouldBlock
    anyio.WouldBlock

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\base.py", line 78, in call_next
        message = await recv_stream.receive()
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\anyio\streams\memory.py", line 118, in receive
        raise EndOfStream
    anyio.EndOfStream

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "C:\Users\me\git\stable-diffusion-webui-directml\modules\api\api.py", line 186, in exception_handling
        return await call_next(request)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
        raise app_exc
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
        await self.app(scope, receive_or_disconnect, send_no_error)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\base.py", line 108, in __call__
        response = await self.dispatch_func(request, call_next)
      File "C:\Users\me\git\stable-diffusion-webui-directml\modules\api\api.py", line 150, in log_and_time
        res: Response = await call_next(req)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\base.py", line 84, in call_next
        raise app_exc
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\base.py", line 70, in coro
        await self.app(scope, receive_or_disconnect, send_no_error)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\cors.py", line 84, in __call__
        await self.app(scope, receive, send)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\gzip.py", line 26, in __call__
        await self.app(scope, receive, send)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
        raise exc
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
        await self.app(scope, receive, sender)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
        raise e
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
        await self.app(scope, receive, send)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\routing.py", line 718, in __call__
        await route.handle(scope, receive, send)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\routing.py", line 276, in handle
        await self.app(scope, receive, send)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\routing.py", line 66, in app
        response = await func(request)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\fastapi\routing.py", line 237, in app
        raw_response = await run_endpoint_function(
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\fastapi\routing.py", line 165, in run_endpoint_function
        return await run_in_threadpool(dependant.call, **values)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\starlette\concurrency.py", line 41, in run_in_threadpool
        return await anyio.to_thread.run_sync(func, *args)
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\anyio\to_thread.py", line 33, in run_sync
        return await get_asynclib().run_sync_in_worker_thread(
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 877, in run_sync_in_worker_thread
        return await future
      File "C:\Users\me\git\stable-diffusion-webui-directml\venv\lib\site-packages\anyio\_backends\_asyncio.py", line 807, in run
        result = context.run(func, *args)
      File "C:\Users\me\git\stable-diffusion-webui-directml\modules\api\api.py", line 379, in text2imgapi
        processed = process_images(p)
      File "C:\Users\me\git\stable-diffusion-webui-directml\modules\processing.py", line 735, in process_images
        res = process_images_inner(p)
      File "C:\Users\me\git\stable-diffusion-webui-directml\modules\processing.py", line 780, in process_images_inner
        modules.sd_hijack.model_hijack.apply_circular(p.tiling)
      File "C:\Users\me\git\stable-diffusion-webui-directml\modules\sd_hijack.py", line 317, in apply_circular
        for layer in [layer for layer in self.layers if type(layer) == torch.nn.Conv2d]:
    TypeError: 'NoneType' object is not iterable

Additional information

My GPU Drivers are up to date.

CodeingJack commented 8 months ago

Try this?

--no-half