• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

348
Views
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 3 years ago · Santiago Trujillo
2 answers
Answer question

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 3 years ago · Santiago Trujillo Report

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 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error