programing tip

Tensorflow에서 Poolallocator 메시지를 해석하는 방법은 무엇입니까?

itbloger 2020. 11. 21. 14:35
반응형

Tensorflow에서 Poolallocator 메시지를 해석하는 방법은 무엇입니까?


tensorflow seq2seq 모델을 훈련하는 동안 다음 메시지가 표시됩니다.

W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 27282 요청 수신 후 put_count = 9311 evicted_count = 1000 eviction_rate = 0.1074 및 충족되지 않은 할당 비율 = 0.699032
I tensorflow / core / common_runtime / gpu / pool_allocator.cc : 239] pool_size_limit_를 100에서 110으로 올리기
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 13715 get 요청 후 put_count = 14458 evicted_count = 10000 eviction_rate = 0.691659 및 충족되지 않은 할당 비율 = 0.675684
I tensorflow / core / common_runtime / gpu / pool_allocator.cc : 239] pool_size_limit_를 110에서 121로 올리기
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 6965 get 요청 후 put_count = 6813 evicted_count = 5000 eviction_rate = 0.733891 및 충족되지 않은 할당 비율 = 0.741421
I tensorflow / core / common_runtime / gpu / pool_allocator.cc : 239] pool_size_limit_를 133에서 146으로 올리기
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 44 회 get 요청 후 put_count = 9058 evicted_count = 9000 eviction_rate = 0.993597 및 충족되지 않은 할당 속도 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 46 개의 get 요청 후 put_count = 9062 evicted_count = 9000 eviction_rate = 0.993158 및 만족스럽지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 4 개의 get 요청 후 put_count = 1029 evicted_count = 1000 eviction_rate = 0.971817 및 만족스럽지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 2 개의 get 요청 후 put_count = 1030 evicted_count = 1000 eviction_rate = 0.970874 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 44 회 get 요청 후 put_count = 6074 evicted_count = 6000 eviction_rate = 0.987817 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 12 개의 get 요청 후 put_count = 6045 evicted_count = 6000 eviction_rate = 0.992556 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 2 개의 get 요청 후 put_count = 1042 evicted_count = 1000 eviction_rate = 0.959693 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 44 개의 get 요청 후 put_count = 6093 evicted_count = 6000 eviction_rate = 0.984737 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 4 개의 get 요청 후 put_count = 1069 evicted_count = 1000 eviction_rate = 0.935454 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 17722 get 요청 후 put_count = 9036 evicted_count = 1000 eviction_rate = 0.110668 및 충족되지 않은 할당 비율 = 0.550615
I tensorflow / core / common_runtime / gpu / pool_allocator.cc : 239] pool_size_limit_를 792에서 871로 올리기
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 6 개의 get 요청 후 put_count = 1093 evicted_count = 1000 eviction_rate = 0.914913 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 6 개의 get 요청 후 put_count = 1101 evicted_count = 1000 eviction_rate = 0.908265 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 3224 개 요청 후 put_count = 4684 evicted_count = 2000 eviction_rate = 0.426985 및 충족되지 않은 할당 비율 = 0.200062
I tensorflow / core / common_runtime / gpu / pool_allocator.cc : 239] pool_size_limit_를 1158에서 1273으로 올리기
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 17794 개 요청 후 put_count = 17842 evicted_count = 9000 eviction_rate = 0.504428 및 충족되지 않은 할당 비율 = 0.510228
I tensorflow / core / common_runtime / gpu / pool_allocator.cc : 239] pool_size_limit_를 1400에서 1540으로 올리기
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 31 개의 get 요청 후 put_count = 1185 evicted_count = 1000 eviction_rate = 0.843882 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 40 개의 get 요청 후 put_count = 8209 evicted_count = 8000 eviction_rate = 0.97454 및 충족되지 않은 할당 비율 = 0
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 0 개 요청 후 put_count = 2272 evicted_count = 2000 eviction_rate = 0.880282 및 만족스럽지 않은 할당 비율 = -nan
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 0 개 요청 후 put_count = 2362 evicted_count = 2000 eviction_rate = 0.84674 및 충족되지 않은 할당 비율 = -nan
W tensorflow / core / common_runtime / gpu / pool_allocator.cc : 227] PoolAllocator : 38 개의 get 요청 후 put_count = 5436 evicted_count = 5000 eviction_rate = 0.919794 및 충족되지 않은 할당 비율 = 0

무슨 뜻인가요? 리소스 할당 문제가 있다는 뜻인가요? Titan X 3500+ CUDA, 12GB GPU에서 실행 중


TensorFlow에는 다양한 방식으로 사용될 메모리를위한 여러 메모리 할당자가 있습니다. 그들의 행동에는 적응적인 측면이 있습니다.

특정 경우에는 GPU를 사용하고 있기 때문에 빠른 DMA를 위해 GPU에 사전 등록 된 CPU 메모리 용 PoolAllocator가 있습니다. 예를 들어 CPU에서 GPU로 전송 될 것으로 예상되는 텐서는이 풀에서 할당됩니다.

PoolAllocators는 즉시 재사용 할 수있는 할당 된 후 해제 된 청크 풀을 유지하여 더 비싼 기본 할당자를 호출하는 비용을 상각하려고합니다. 기본 동작은 퇴거 속도가 일정 수준 이하로 떨어질 때까지 천천히 성장하는 것입니다. (퇴거 비율은 크기 제한을 초과하지 않기 위해 풀에서 기본 풀로 사용되지 않은 청크를 반환하는 무료 호출의 비율입니다.) 위의 로그 메시지에서 풀을 표시하는 "Raising pool_size_limit_"줄을 볼 수 있습니다. 크기 증가. 프로그램이 실제로 필요한 최대 크기의 청크 모음을 사용하여 안정된 상태 동작을한다고 가정하면 풀은이를 수용 할 수 있도록 증가한 다음 더 이상 증가하지 않습니다. 할당 된 모든 청크를 단순히 유지하여 크기가 거의 필요하지 않도록 유지하는 대신 이러한 방식으로 작동합니다.

이러한 메시지는 메모리가 부족한 경우에만 문제의 원인이됩니다. 이 경우 로그 메시지가 문제 진단에 도움이 될 수 있습니다. 또한 최대 실행 속도는 메모리 풀이 적절한 크기로 커진 후에 만 ​​달성 될 수 있습니다.


tl; dr

당신은 OOM입니다 .. 네트워크의 크기를 줄이거 나 더 적은 수의 모델을 동시에 훈련 시키거나 배치 크기 등으로 놀아보십시오.

참고 URL : https://stackoverflow.com/questions/35151207/how-to-interpret-poolallocator-messages-in-tensorflow

반응형