AttributeError: Can't pickle local object 'get_activation.<locals>.hook'

#11
by CharlieAmalet - opened
ZeroGPU Explorers org
edited Mar 20

Everything start with spaces, i don't know what to do
space : CharlieAmalet/tools3ox_api
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/spaces/utils.py", line 42, in put
super().put(obj)
File "/usr/local/lib/python3.10/multiprocessing/queues.py", line 371, in put
obj = _ForkingPickler.dumps(obj)
File "/usr/local/lib/python3.10/multiprocessing/reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
AttributeError: Can't pickle local object 'get_activation..hook'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/gradio/queueing.py", line 489, in call_prediction
output = await route_utils.call_process_api(
File "/usr/local/lib/python3.10/site-packages/gradio/route_utils.py", line 232, in call_process_api
output = await app.get_blocks().process_api(
File "/usr/local/lib/python3.10/site-packages/gradio/blocks.py", line 1561, in process_api
result = await self.call_function(
File "/usr/local/lib/python3.10/site-packages/gradio/blocks.py", line 1179, in call_function
prediction = await anyio.to_thread.run_sync(
File "/usr/local/lib/python3.10/site-packages/anyio/to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
File "/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 2144, in run_sync_in_worker_thread
return await future
File "/usr/local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 851, in run
result = context.run(func, *args)
File "/usr/local/lib/python3.10/site-packages/gradio/utils.py", line 678, in wrapper
response = f(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/spaces/zero/wrappers.py", line 147, in gradio_handler
worker.arg_queue.put(((args, kwargs), GradioPartialContext.get()))
File "/usr/local/lib/python3.10/site-packages/spaces/utils.py", line 50, in put
raise PicklingError(message)
_pickle.PicklingError: Can't pickle local object 'get_activation..hook'

ZeroGPU Explorers org

seems to work now.. i was using Partial.. by reading this https://stackoverflow.com/questions/72766345/attributeerror-cant-pickle-local-object-in-multiprocessing i think it was the problem

CharlieAmalet changed discussion status to closed
ZeroGPU Explorers org

Yes it's simpler to not use partial
But this can still be done though :

def generate(pipe, prompt):
    return pipe(prompt)
pipe = ...
gpu_generate = spaces.GPU(partial(generate, pipe)) # can then be passed to Gradio

(it's of course simpler to create pipe before the generate function and simply drop the pipe arg)

Sign up or log in to comment