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

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

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)

Your need to confirm your account before you can post a new comment.

Sign up or log in to comment