Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

441
Vistas
Comprender el uso de la memoria por parte de PyTorch DataLoader Workers

Al ejecutar un programa de capacitación de PyTorch con num_workers=32 para DataLoader , htop muestra 33 procesos de python, cada uno con 32 GB de VIRT y 15 GB de RES .

¿Significa esto que el entrenamiento de PyTorch usa 33 procesos X 15 GB = 495 GB de memoria? htop muestra solo alrededor de 50 GB de RAM y 20 GB de intercambio se utilizan en toda la máquina con 128 GB de RAM. Entonces, ¿cómo explicamos la discrepancia?

¿Existe una forma más precisa de calcular la cantidad total de RAM utilizada por el programa PyTorch principal y todos sus procesos de trabajo secundarios de DataLoader?

Gracias

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Hay una función de python llamada tracemalloc que se usa para rastrear bloques de memoria asignados a python. https://docs.python.org/3/library/tracemalloc.html

  • Rastreos
  • Estática en la memoria por nombre de archivo
  • Calcule la diferencia entre instantáneas
 import tracemalloc tracemalloc.start() do_someting_that_consumes_ram_and releases_some() # show how much RAM the above code allocated and the peak usage current, peak = tracemalloc.get_traced_memory() print(f"{current:0.2f}, {peak:0.2f}") tracemalloc.stop()

https://discuss.pytorch.org/t/measuring-peak-memory-usage-tracemalloc-for-pytorch/34067

over 4 years ago · Santiago Trujillo Denunciar

0

¿Significa esto que el entrenamiento de PyTorch usa 33 procesos X 15 GB = 495 GB de memoria?

No es necesario. Tiene un proceso de trabajo (con varios subprocesos - trabajadores) y la CPU tiene varios núcleos. Un trabajador suele cargar un lote. El siguiente lote ya puede estar cargado y listo para cuando el proceso principal esté listo para otro lote. Este es el secreto de la aceleración.

Supongo que deberías usar mucho menos num_workers.

También sería interesante conocer el tamaño de su lote, que también puede adaptar para el proceso de capacitación.

¿Existe una forma más precisa de calcular la cantidad total de RAM utilizada por el programa PyTorch principal y todos sus procesos de trabajo secundarios de DataLoader?

Busqué en Google pero no pude encontrar una fórmula concreta. Creo que es una estimación aproximada de cuántos núcleos tiene su CPU, memoria y tamaño de lote.

Elegir num_workers depende del tipo de computadora que esté utilizando, el tipo de conjunto de datos que esté tomando y la cantidad de preprocesamiento sobre la marcha que requieran sus datos.

HTH

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda