Skip to main content
QUICK REVIEW

[논문 리뷰] Parallelizing Word2Vec in Multi-Core and Many-Core Architectures

Shihao Ji, Nadathur Satish|arXiv (Cornell University)|2016. 11. 18.
Topic Modeling참고 문헌 7인용 수 8
한 줄 요약

이 논문은 히그워일드(Hogwild)의 벡터-벡터 연산을 미니배칭과 음성 샘플 공유를 통해 행렬-행렬 곱셈(GEMM)으로 대체함으로써, 다중 코어 및 멀티코어 시스템에서 거의 선형적인 스케일링을 가능하게 한 고도로 최적화된 word2vec 구현인 HogBatch를 제안한다. 이는 인텔 브로드웰에서 580만 단어/초, 노드 킬러 랜딩에서 890만 단어/초의 성능을 기록하여 현재까지 보고된 바 중 가장 빠른 성능이다.

ABSTRACT

Word2vec is a widely used algorithm for extracting low-dimensional vector representations of words. State-of-the-art algorithms including those by Mikolov et al. have been parallelized for multi-core CPU architectures, but are based on vector-vector operations with "Hogwild" updates that are memory-bandwidth intensive and do not efficiently use computational resources. In this paper, we propose "HogBatch" by improving reuse of various data structures in the algorithm through the use of minibatching and negative sample sharing, hence allowing us to express the problem using matrix multiply operations. We also explore different techniques to distribute word2vec computation across nodes in a compute cluster, and demonstrate good strong scalability up to 32 nodes. The new algorithm is particularly suitable for modern multi-core/many-core architectures, especially Intel's latest Knights Landing processors, and allows us to scale up the computation near linearly across cores and nodes, and process hundreds of millions of words per second, which is the fastest word2vec implementation to the best of our knowledge.

연구 동기 및 목표

  • 메모리 대역폭 제약과 낮은 계산 자원 활용도로 인해 현대의 다중 코어 및 멀티코어 시스템에서 히그워일드 기반 word2vec의 낮은 확장성 문제를 해결하기 위해.
  • 여러 문맥 단어와 공유되는 음성 샘플을 배치 처리함으로써 word2vec 업데이트의 데이터 국소성을 극대화하여 레벨-3 BLAS 연산을 가능하게 하기 위해.
  • 최소한의 정확도 손실로 클러스터 내 다수의 노드 간 강력한 확장성을 달성하기 위해 데이터 병렬성을 활용하기 위해.
  • 특히 노드 킬러 랜딩을 포함한 인텔 최신 아키텍처에서 거의 선형적인 성능 스케일링을 달성하여 기존의 CPU 및 GPU 기반 구현을 초월하기 위해.

제안 방법

  • 입력 문맥 단어를 미니배칭하여 여러 word2vec 업데이트를 하나의 행렬 연산으로 통합하기 위해.
  • 동일한 음성 샘플 세트를 배치 내의 여러 입력 단어 간에 공유함으로써 GEMM 기반 계산을 가능하게 하는 음성 샘플 공유를 구현하기 위해.
  • 기존의 벡터-벡터 내적 연산을 행렬-행렬 곱셈(GEMM) 연산으로 전환하여 메모리 대역폭 부담을 감소시키고 계산 자원 활용도를 향상시키기 위해.
  • 동일한 모델 항목에 대한 업데이트를 코alescing하여 캐시 라인 피ン퐁 현상을 줄이고 CPU 코어 간 공유 메모리 병렬 처리를 구현하기 위해.
  • 모델 수렴을 유지하기 위해 주기적인 모델 동기화를 통해 분산 메모리 시스템에 최적화된 데이터 병렬성 기반 확장 기능을 구현하기 위해.
  • 넓은 벡터 유닛과 높은 팩키지 내 메모리 대역폭을 활용하여 인텔의 노드 킬러 랜딩 아키텍처에 최적화된 최적화를 수행하기 위해.

실험 결과

연구 질문

  • RQ1GEMM 기반의 배치 처리가 현대의 다중 코어 CPU에서 메모리 대역폭 부담을 줄임으로써 word2vec 성능을 크게 향상시킬 수 있는가?
  • RQ2음성 샘플 공유가 모델 정확도를 희생시키지 않고 word2vec에서 효율적인 행렬-행렬 곱셈을 가능하게 하는가?
  • RQ3제안된 HogBatch 알고리즘이 36개 CPU 코어 및 클러스터 내 최대 32개 노드에서 거의 선형적인 확장성을 달성할 수 있는가?
  • RQ4Throughput 및 정확도 측면에서 HogBatch의 성능가 최신 CPU 및 GPU 기반 구현과 비교해 볼 때 어떻게 되는가?

주요 결과

  • HogBatch는 36코어 인텔 브로드웰 CPU에서 초당 580만 단어의 처리 속도를 기록하여 원본 히그워일드 구현 대비 3.6배의 성능 향상을 달성했다.
  • 인텔의 노드 킬러 랜딩 프로세서에서는 초당 890만 단어의 처리 속도를 기록하여 현재까지 보고된 바 중 CPU에서 가장 높은 throughput을 기록했다.
  • 브로드웰 CPU의 모든 36 스레드에 걸쳐 알고리즘이 거의 선형적으로 확장되며, 원본 히그워일드 구현은 8개 스레드를 초과하면 성능이 크게 저하된다.
  • 분산 모드에서 HogBatch는 최대 16대의 브로드웰 노드 또는 8대의 노드 킬러 랜딩 노드에서 거의 선형적으로 확장되며, 정확도 손실이 1% 이내로 유지되면서 1억 단어/초 이상의 처리 속도를 기록했다.
  • 4대의 노드 킬러 랜딩 노드에서의 성능은 2940만 단어/초에 달하며, 최고의 GPU 기반 구현(4대의 Titan-X GPU 기준 2000만 단어/초)을 뛰어넘었다.
  • GEMM 연산의 사용으로 캐시 라인 경쟁과 스레드 간 통신 빈도가 감소하여 계산 자원 활용도가 향상되고 확장성이 향상되었다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.