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.

DataLoader de pytorch num_workers.

Actualmente estoy viendo este tutorial: https://deeplizard.com/learn/video/kWVgvsejXsE sobre cuál es el valor ideal para num_workers (atributo opcional de la clase DataLoader).
Si entiendo bien, si tienes 2 CPUs, una puede utilizarse para cargar los datos y la otra para realizar las tareas (ajustar los pesos, realizar la retropropagación, etc.). Sin embargo, ¿por qué limitan sus pruebas a 1 época? Siento que deberían hacer sus pruebas con varias épocas, porque en cada época necesitamos cargar nuevos lotes, etc…

Siento que pueda estar perdiéndome algo sobre cómo funciona exactamente esto. Cualquier respuesta es bienvenida, soy bastante nuevo, así que no dudes en dar detalles que puedan parecer demasiado obvios para ti.

Acabo de lanzar mis propias pruebas para ver si sus resultados cambian cuando pongo 500 épocas para mi red neuronal. He lanzado 20 tareas con 2 CPUs y 20 tareas con 1 CPU, y varié el número de num_workers, dejando todo lo demás igual (incluido el tamaño del lote). ¿El num_workers ideal debería ser 0 para las tareas con 1 CPU y 2 para las tareas con 2 CPUs, verdad?
Lo extraño es que no tengo el comportamiento esperado:
enter image description here
enter image description here

En promedio, sin embargo, 2 CPUs son más rápidos que 1 CPU, así que al menos eso está bien.

Mi tamaño de lote es 32, ¿debo variar también el tamaño del lote? Sus resultados fueron que es igual para cualquier tamaño de lote.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es práctica común limitar las pruebas a una única época con el fin de mantener el tutorial conciso y fácil de seguir. Sin embargo, es importante tener en cuenta que en la práctica, normalmente se ejecutan múltiples épocas para entrenar completamente la red neuronal. Cada época implica cargar nuevos lotes de datos, por lo que es importante el atributo num_workers en la clase DataLoader.

    En cuanto a tus pruebas, el número ideal de num_workers dependería del número de CPU disponibles. Se recomienda establecer el num_workers igual al número de CPU disponibles. Por lo tanto, si tienes 2 CPU, el número ideal de num_workers sería 2.

    No es sorprendente ver que el uso de 2 CPU es más rápido que el uso de 1 en promedio. Sin embargo, los resultados de tus pruebas sugieren que variar el num_workers puede no tener un impacto significativo en la velocidad de entrenamiento.

    En cuanto a variar el tamaño del lote (batch_size), vale la pena experimentar con diferentes tamaños de lotes para encontrar el tamaño óptimo para tu problema específico. El tutorial mencionó que sus resultados fueron los mismos para cada tamaño de lote, pero esto no siempre es el caso. Se recomienda experimentar con diferentes tamaños de lotes y comparar los resultados para determinar el tamaño óptimo para tu problema.

Comments are closed.