제퍼넷 로고

사용 중인 GPU: 샘플링 및 파이프라이닝 방법으로 대규모 그래프에서 딥 러닝 속도 향상

시간

에지로 연결된 노드의 잠재적으로 광범위한 웹인 그래프는 사회적 연결, 금융 거래, 교통, 에너지 그리드 및 분자 상호 작용과 같은 데이터 간의 관계를 표현하고 조사하는 데 사용할 수 있습니다. 연구자들이 더 많은 데이터를 수집하고 이러한 그래픽 그림을 구축함에 따라 연구자들은 그래프 신경망(GNN) 방식으로 딥 러닝을 수행하기 위해 더 빠르고 효율적인 방법과 더 많은 계산 능력이 필요합니다.  

이제 MIT와 IBM Research의 연구원들이 개발한 SALIENT(SAmpling, sLIcing, and data movemeNT)라는 새로운 방법은 계산의 세 가지 주요 병목 현상을 해결하여 훈련 및 추론 성능을 향상시킵니다. 이는 예를 들어 100억 개의 노드와 1억 개의 에지를 포함하는 대규모 데이터 세트에서 GNN의 실행 시간을 크게 줄입니다. 또한 팀은 계산 능력이 16에서 XNUMX 그래픽 처리 장치(GPU)로 추가될 때 이 기술이 잘 확장된다는 것을 발견했습니다. 이 작업은 기계 학습 및 시스템에 관한 제XNUMX차 회의에서 발표되었습니다.

“우리는 그래프를 위한 최첨단 기계 학습 기술을 정말 큰 데이터 세트로 확장할 때 현재 시스템이 경험하는 문제를 살펴보기 시작했습니다. 많은 기존 시스템이 주로 GPU 메모리에 맞는 더 작은 데이터 세트에서 우수한 성능을 달성했기 때문에 수행해야 할 작업이 많았습니다. 및 인공 지능 연구소(CSAIL).

방대한 데이터세트란 특정 패턴과 데이터 관계가 추세나 반칙을 설명할 수 있는 전체 비트코인 ​​네트워크와 같은 규모를 의미합니다. "블록체인에는 거의 XNUMX억 개의 비트코인 ​​거래가 있으며, 그러한 공동 네트워크 내에서 불법 활동을 식별하려면 그러한 규모의 그래프에 직면하고 있습니다."라고 수석 연구 과학자이자 관리자인 공동 저자 Jie Chen은 말합니다. IBM Research 및 MIT-IBM Watson AI Lab. "우리는 이러한 종류의 그래프를 처리할 수 있고 가능한 한 효율적으로 처리할 수 있는 시스템을 구축하고 싶습니다. 매일 생성되는 새로운 데이터의 속도를 따라잡기를 원하기 때문입니다."

Kaler와 Chen의 공동 저자에는 대학원 작업의 일부로 SALIENT를 개발한 Jump Trading의 Nickolas Stathas MEng '21; 전 MIT-IBM Watson AI Lab 인턴 및 MIT 대학원생 Anne Ouyang; MIT CSAIL 박사후 연구원 Alexandros-Stavros Iliopoulos; MIT CSAIL 연구 과학자 Tao B. Schardl; MIT 전기공학과 Edwin Sibley Webster 교수이자 MIT-IBM Watson AI Lab의 연구원인 Charles E. Leiserson이 있습니다.     

이 문제에 대해 팀은 방법을 개발할 때 시스템 지향 접근 방식을 취했습니다. SALIENT라고 Kaler는 말합니다. 이를 위해 연구원들은 기계 학습 모델을 구축하기 위한 인터페이스인 PyTorch Geometric 및 DGL(심층 그래프 라이브러리)과 같은 기존 기계 학습 프레임워크에 맞는 구성 요소의 기본 최적화와 중요하다고 생각하는 것을 구현했습니다. Stathas는 프로세스가 더 빠른 자동차를 만들기 위해 엔진을 교체하는 것과 같다고 말합니다. 그들의 방법은 기존 GNN 아키텍처에 맞도록 설계되었으므로 도메인 전문가가 이 작업을 특정 분야에 쉽게 적용하여 모델 교육을 촉진하고 추론 중에 통찰력을 더 빨리 얻을 수 있습니다. 팀이 결정한 비결은 모든 하드웨어(CPU, 데이터 링크 및 GPU)를 항상 바쁘게 유지하는 것이었습니다. CPU가 그래프를 샘플링하고 데이터 링크를 통해 전송될 데이터의 미니 배치를 준비하는 동안 , 더 중요한 GPU는 기계 학습 모델을 훈련하거나 추론을 수행하는 데 사용됩니다. 

연구자들은 GNN(PyTorch Geometric)에 일반적으로 사용되는 기계 학습 라이브러리의 성능을 분석하는 것으로 시작했는데, 이는 사용 가능한 GPU 리소스의 활용도가 놀라울 정도로 낮았습니다. 연구원들은 간단한 최적화를 적용하여 GPU 활용도를 10%에서 30%로 개선하여 공개 벤치마크 코드에 비해 성능이 1.4배에서 50.4배 향상되었습니다. 이 빠른 기본 코드는 XNUMX초 안에 알고리즘(에포크)을 통해 대규모 교육 데이터 세트에 대해 하나의 완전한 패스를 실행할 수 있습니다.                          

추가적인 성능 향상을 위해 연구원들은 데이터 파이프라인의 시작 부분에서 발생하는 병목 현상인 그래프 샘플링 및 미니 배치 준비를 위한 알고리즘을 조사하기 시작했습니다. 다른 신경망과 달리 GNN은 그래프의 다른 인근 노드에 있는 정보(예: 소셜 네트워크 그래프에서 사용자 친구의 친구 정보)를 사용하여 노드에 대한 정보를 계산하는 이웃 집계 작업을 수행합니다. GNN의 계층 수가 증가함에 따라 정보를 얻기 위해 네트워크가 도달해야 하는 노드 수가 폭발적으로 증가하여 컴퓨터의 한계를 초과할 수 있습니다. 이웃 샘플링 알고리즘은 수집할 노드의 더 작은 무작위 하위 집합을 선택하여 도움을 줍니다. 그러나 연구원들은 이것의 현재 구현이 최신 GPU의 처리 속도를 따라잡기에는 너무 느리다는 것을 발견했습니다. 이에 대한 응답으로 그들은 샘플링 속도를 향상시키는 데이터 구조, 알고리즘 최적화 등의 혼합을 식별하여 궁극적으로 샘플링 작업만 약 50.4배 향상시켜 에포크당 실행 시간을 34.6초에서 XNUMX초로 단축했습니다. 그들은 또한 추론 중에 적절한 속도로 샘플링을 수행하여 전반적인 에너지 효율성과 성능을 향상시킬 수 있음을 발견했으며, 이는 문헌에서 간과된 점이라고 팀은 지적합니다.      

이전 시스템에서 이 샘플링 단계는 다중 프로세스 접근 방식이었으며 프로세스 간에 추가 데이터와 불필요한 데이터 이동을 생성했습니다. 연구원들은 CPU의 데이터를 공유 메모리에 보관하는 경량 스레드로 단일 프로세스를 만들어 SALIENT 방법을 더 민첩하게 만들었습니다. 또한 SALIENT는 CPU 코어 캐시의 공유 메모리 내에서 관심 있는 노드와 주변 이웃 및 에지에서 관련 정보를 추출하는 기능 슬라이싱을 병렬화하는 최신 프로세서의 캐시를 활용한다고 Stathas는 말합니다. 이것은 다시 전체 에포크당 실행 시간을 34.6초에서 27.8초로 줄였습니다.

연구원들이 해결한 마지막 병목 현상은 데이터가 필요하기 직전에 데이터를 준비하는 프리페칭 단계를 사용하여 CPU와 GPU 사이의 미니 배치 데이터 전송을 파이프라인하는 것이었습니다. 팀은 이것이 데이터 링크에서 대역폭 사용을 최대화하고 방법을 완벽하게 사용할 것이라고 계산했습니다. 그러나 그들은 약 90%만 보았습니다. 그들은 CPU와 GPU 간의 불필요한 왕복 통신을 유발하는 인기 있는 PyTorch 라이브러리의 성능 버그를 식별하고 수정했습니다. 이 버그를 수정하여 팀은 SALIENT를 사용하여 에포크당 16.5초의 런타임을 달성했습니다.

Kaler는 "우리의 작업은 악마가 세부 사항에 있다는 것을 보여주었다고 생각합니다."라고 말합니다. “그래프 신경망을 교육할 때 성능에 영향을 미치는 세부 사항에 세심한 주의를 기울이면 수많은 성능 문제를 해결할 수 있습니다. 우리의 솔루션을 사용하면서 우리는 이러한 시스템의 이상적인 목표인 GPU 계산에 의해 완전히 병목 현상이 발생했습니다.”

SALIENT의 속도는 세 가지 표준 데이터 세트 ogbn-arxiv, ogbn-products 및 ogbn-papers100M과 다양한 수준의 팬아웃(CPU가 GPU에 대해 준비하는 데이터의 양) 및 다중 머신 설정에서 평가되었습니다. 최신 아키텍처인 GraphSAGE-RI를 비롯한 여러 아키텍처에서 사용할 수 있습니다. 각 설정에서 SALIENT는 특히 100억 개의 노드와 100억 개가 넘는 에지를 포함하는 대규모 ogbn-papers16M 데이터 세트에서 PyTorch Geometric을 능가했습니다. 여기서는 원래 용으로 생성된 최적화된 기준선보다 XNUMX개의 GPU에서 실행되는 속도가 XNUMX배 더 빠릅니다. 이 일; XNUMX개의 GPU를 사용하는 SALIENT는 추가로 XNUMX배 더 빠릅니다. 

다른 시스템은 하드웨어 및 실험 설정이 약간 다르기 때문에 항상 직접적인 비교는 아니었지만 SALIENT는 여전히 성능이 뛰어났습니다. 유사한 정확도를 달성한 시스템 중 대표적인 성능 수치는 GPU 99개와 CPU 32개를 사용한 13초, CPU 1,536개를 사용한 20초입니다. 대조적으로, 16.5개의 GPU와 16개의 CPU를 사용하는 SALIENT의 실행 시간은 320초였으며 16개의 GPU와 XNUMX개의 CPU를 사용하는 경우에는 XNUMX초에 불과했습니다. "이전 작업에서 보고한 최종 수치를 보면 XNUMX개의 GPU 런타임(XNUMX초)이 이전에 이 데이터 세트에서 보고된 다른 수치보다 훨씬 빠릅니다."라고 Kaler는 말합니다. 연구원들은 부분적으로 분산 설정으로 이동하기 전에 단일 시스템에 대한 코드를 최적화하는 접근 방식 덕분에 성능이 향상되었다고 생각했습니다. Stathas는 여기에서 얻은 교훈은 "여러 대의 컴퓨터로 확장을 시작하기 전에 가지고 있는 하드웨어를 효율적으로 사용하는 것이 더 합리적이고 극단적으로" 비용과 탄소 배출량을 크게 절감할 수 있다는 것입니다. 모델 교육과 함께 제공될 수 있습니다.

이 새로운 용량을 통해 이제 연구자들은 더 크고 더 큰 그래프를 다루고 더 깊이 파고들 수 있습니다. 예를 들어 앞서 언급한 비트코인 ​​네트워크에는 100,000개의 노드가 포함되어 있습니다. SALIENT 시스템은 1,000배(또는 XNUMX배) 더 큰 그래프를 처리할 수 있습니다.

“앞으로 우리는 각 노드의 속성을 분류하거나 예측하기 위해 구현한 기존 알고리즘에서 이 그래프 신경망 교육 시스템을 실행하는 것뿐만 아니라 다음과 같은 보다 심층적인 작업을 수행하고자 합니다. 금융 범죄를 나타내는 데 실제로 흥미로울 수 있는 그래프의 공통 패턴(하위 그래프 패턴)을 식별합니다.”라고 Chen은 말합니다. “우리는 또한 그래프에서 금융 범죄의 동일한 악당에 해당할 가능성이 있다는 점에서 유사한 노드를 식별하고자 합니다. 이러한 작업에는 추가 알고리즘과 신경망 아키텍처를 개발해야 합니다.”

이 연구는 MIT-IBM Watson AI Lab의 지원을 받았으며 부분적으로는 미 공군 연구소와 미 공군 인공 지능 가속기의 지원을 받았습니다.

<!–
–>

spot_img

최신 인텔리전스

spot_img