
나는 당신에게 공개 질문이 있습니다 :
저는 ML 모델을 훈련시키기 위해 사무실에 중고 서버를 설치했습니다. 4개의 Xeon E7 4820(https://ark.intel.com/products/53675/Intel-Xeon-Processor-E7-4820-18M-Cache-2_00-GHz-5_86-GTs-Intel-QPI) - 2,00GHz, 8개 코어, 각각 16개 스레드 -, 128Gbs RAM 및 128GB SWAP(SSD 스왑).
그러나 나는 그것에 대해 첫 번째 테스트 학습을 수행했고 매우 놀랍게도 놀라울 정도로 느렸습니다. 훈련하는 데 11분, 8GB RAM 및 8GB 스왑을 갖춘 8세대 i5 CPU(1,6GHz, 4코어, 8스레드)에서 훈련하는 데 5분이 걸립니다.
Htop은 병렬 컴퓨팅이 켜져 있고 CPU 로드 스파이크가 i5의 경우 약 3, 4 E7의 경우 22라고 알려줍니다. 그렇다면 왜 그렇게 성능 차이가 나는지 아시나요? 나는 무어의 법칙이 거부할 수 없는 현상이라는 것을 알고 있지만, 1년 된 중간급 CPU가 47년 된 Xeon E7보다 성능이 뛰어나기 때문에 이 문제에 대해 머리를 감쌀 수가 없습니다. 당신이 도울 수 있기를 바랍니다! :)
추신: 이미 Cuda와 CuDNN을 설치했는데 아직 작동하지 않아 CPU로만 학습을 수행했습니다. 나는 결과에 너무 당황해서 문제를 해결하기 위해 GPU 가속 작업(서버에 작은 1050Ti가 설치되어 있음) 작업을 모두 중단했습니다. 두 컴퓨터 모두에서 똑같은 코드가 실행되고 있는지 확인했습니다.
미리 감사드립니다! :)
서리
답변1
귀하의 문제(대부분의 기계 학습 문제와 마찬가지로)는 아마도 메모리 대역폭과 관련이 있을 것입니다.
기계 학습은 특별히 CPU 계산을 많이 사용하지 않고 "쉬운" 계산을 많이 수행하지만 메모리 대역폭에 따라 크게 제한됩니다. 이것이 그래픽 카드 스트림 프로세서가 좋은 이유 중 하나입니다. 각 스트림 프로세서는 (CPU에 비해) 상대적으로 제한되어 있지만 간단한 작업을 위해서는 엄청난 대역폭과 엄청난 수의 프로세서가 한계를 상쇄합니다.
무작위로 선택하려면8세대 i5:
Max Memory Bandwidth 41.6 GB/s
CPU보스1세대 E7-4820의 메모리 대역폭은 23GB/s(23,464MB/s)인 것으로 추정됩니다.
다중 프로세서 시스템은 CPU 간에 메모리를 지속적으로 복사하거나 한 CPU에서 다른 CPU로 메모리에 대한 액세스를 공유해야 합니다.
공유 메모리와 상당히 낮은 대역폭의 조합은 아마도 이전 시스템에 해를 끼치는 것일 수 있습니다.
최신 Xeon은 85GB/s 이상의 대역폭을 요구합니다.