es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede utilizar Pytorch con CUDA en la tarea de Celery.

Tengo una tarea de celery que utiliza la biblioteca torch, que internamente utiliza CUDA. Cuando ejecuto la tarea, falla y muestra el siguiente mensaje: “No se puede volver a inicializar CUDA en un subproceso bifurcado. Para usar CUDA con multiprocessing, debes usar el método de inicio ‘spawn'”.

Cuando investigué un poco sobre esto, encontré esto en el enlace: https://github.com/celery/celery/issues/6036. Este problema indica que Celery solo admite fork y no spawn.

¿Hay alguna solución alternativa a esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, como se mencionó en el hilo del problema que encontraste, la solución recomendada es utilizar directamente la clase Process de multiprocessing en lugar de utilizar el grupo de trabajadores de Celery. Esto implicaría crear un script separado en Python que utilice PyTorch con CUDA y el método de inicio spawn, y luego lanzarlo como un subprocess utilizando el módulo subprocess.

    Otra alternativa es utilizar un paquete como Dask, que admite computación distribuida mientras permite un uso eficiente de CUDA. Dask utiliza un enfoque diferente a Celery para el procesamiento paralelo, por lo que no sufre del mismo problema de inicialización de CUDA.

Comments are closed.