마이크로소프트 아시아연구소, AI컴파일러 분야 '인더스트리얼 헤비메탈 쿼텟' 발족

편집자 주: 컴파일러는 전통적인 컴퓨팅 과학에서 중요한 연구 주제였습니다. 오늘날 인공 지능 기술의 급속한 발전과 광범위한 적용으로 인공 지능 모델은 다양한 컴퓨터 하드웨어 아키텍처에 배포되어야 합니다. 동시에 대규모 인공 지능 모델을 훈련하고 배포할 때 하드웨어 성능에 대한 요구 사항이 더 높으며 때로는 하드웨어에 따라 코드를 사용자 정의해야 합니다. 이 모든 것은 인공 지능 시대의 컴파일러에 대한 새롭고 더 높은 요구 사항을 제시합니다.

Microsoft Research Asia는 빠르게 발전하는 인공 지능 모델과 가속화된 하드웨어의 요구 사항을 충족하기 위해 매우 유연하고 효율적이며 확장 가능한 AI 컴파일러 아키텍처를 설계 및 구축하고 국내외 공동 작업자와 연구를 수행하며 일련의 체계적인 제안을 목표로 합니다. Rammer, Roller, Welder 및 Grinder의 4가지 AI 컴파일러를 포함하는 솔루션은 하드웨어 병렬 활용 개선, 컴파일 효율성 개선, 전역 메모리 액세스 효율성 최적화 및 제어 흐름의 효율적인 실행 최적화와 같은 몇 가지 주요 문제를 해결할 것입니다. 4개의 관련 논문이 2020년, 2022년, 2023년 OSDI 컨퍼런스에서 채택되었습니다.


컴파일은 프로그램 개발에서 중요한 단계로서 고급 언어로 작성된 소스 코드를 컴퓨터 하드웨어에서 실행 가능한 기계 코드로 번역하는 것이며 컴파일러는 이 기능을 구현하는 특수 응용 프로그램입니다. 오늘날 인공 지능 기술과 대형 모델은 의심할 여지 없이 오늘날 컴퓨터 분야의 C비트이며, 그 자체의 특성도 컴파일러에 새로운 도전을 제기합니다.

원래 RNN, CNN에서 Transformer에 이르기까지 인공 지능의 주류 모델 아키텍처는 끊임없이 변화하고 있으며, 이는 상위 수준 응용 프로그램도 그에 따라 변화하고 있음을 의미합니다. 동시에 GPU, NPU 등과 같은 기본 가속기 하드웨어도 빠르게 반복적으로 업데이트되며 일부 새로운 하드웨어 설계는 이전 아키텍처를 전복하기도 합니다. 그런 다음 새로운 인공 지능 모델이 새로운 칩 및 기타 컴퓨터 하드웨어에서 더 잘 실행되도록 하려면 새로운 AI 컴파일러가 필요합니다.

이와 관련하여 마이크로소프트 아시아연구소 연구원들과 국내외 협력자들은 AI 컴파일러의 핵심 문제를 중심으로 일련의 연구 작업을 수행했으며, AI 컴파일러 세계에서 "산업용 중금속 4부작"을 연달아 출시했다. : Rammer, Roller, Welder, Grinder는 현재 주류인 인공지능 모델과 하드웨어 컴파일을 위한 체계적이고 혁신적인 솔루션을 제공합니다.

통합 타일 추상화 기반의 4가지 핵심 AI 편집 기술

AI 컴파일 "Rammer" Rammer: 하드웨어 병렬 활용 개선

DNN(심층 신경망)은 현재 이미지 분류, 자연어 처리 및 기타 여러 인공 지능 작업에서 널리 채택되는 방법입니다. 그 중요성 때문에 CPU, GPU, FPGA 및 특별히 설계된 DNN 가속기와 같은 많은 컴퓨팅 장치가 DNN 계산을 수행하는 데 사용됩니다. DNN의 계산 효율성에 영향을 미치는 핵심 요소 중 하나는 스케줄링으로, 대상 하드웨어에서 다양한 계산 작업이 실행되는 순서를 결정하는 것입니다. 기존 DNN 프레임워크와 컴파일러는 일반적으로 데이터 흐름 그래프의 DNN 연산자를 불투명한 라이브러리 함수로 취급하고 별도의 실행을 위해 가속기에 디스패치합니다. 동시에 이 프로세스는 연산자에서 사용할 수 있는 병렬 처리를 활용하기 위해 다른 계층의 스케줄러(일반적으로 하드웨어로 구현됨)에 의존합니다. 이러한 2계층 접근 방식은 상당한 스케줄링 오버헤드를 발생시키며 종종 사용 가능한 하드웨어 리소스를 완전히 활용하지 않습니다.

이를 위해 연구원들은 대규모 병렬 가속기에서 DNN 워크로드 실행을 최적화할 수 있는 새로운 DNN 컴파일러인 Rammer를 제안했습니다. 실제로 우리는 AI 컴파일을 위한 스케줄링 공간을 2차원 공간으로 상상할 수 있고 컴퓨팅 작업을 다양한 크기와 모양으로 분할할 수 있는 "브릭"으로 생각할 수 있습니다. 한 번 틈이 나면 기존 공간이 효과적으로 사용되지 않을 뿐만 아니라 "벽" "속도"에도 영향을 미치기 때문에 컴퓨팅 장치는 틈을 남기지 않고 최대한 사용됩니다. 그리고 Rammer는 이 2차원 공간에서 "래밍 머신"입니다. DNN 프로그램을 "브릭"으로 변환한 후 칩의 다른 컴퓨팅 유닛에 배치하여 압축할 수 있습니다.

램머 기술 프레임워크

즉, Rammer는 컴파일 시간에 DNN에 대한 효율적인 정적 시공간 일정을 생성하여 일정 오버헤드를 최소화합니다. 동시에 컴퓨팅 작업 및 하드웨어 가속기에 대한 몇 가지 새로운 하드웨어 독립적 추상화를 제안함으로써 Rammer는 더 풍부한 스케줄링 공간을 확보하고 연산자 간 및 연산자 내에서 협력 스케줄링을 실현하여 병렬성을 완전히 활용할 수 있습니다. 이러한 참신하고 휴리스틱한 방법을 통해 Rammer는 공간을 더 잘 탐색하고 효율적인 일정을 찾을 수 있으므로 하드웨어 활용도가 크게 향상됩니다.

연구원들은 NVIDIA GPU, AMD GPU 및 Graphcore IPU를 포함한 여러 하드웨어 백엔드에서 Rammer를 테스트했습니다. 실험에 따르면 Rammer는 NVIDIA 및 AMD GPU에서 XLA 및 TVM과 같은 최신 컴파일러보다 최대 20.1배 더 빠른 성능을 보입니다. NVIDIA의 독점 DNN 추론 라이브러리인 TensorRT와 비교할 때 속도 향상 비율은 3.1배입니다.

论文:Rammer: rTasks로 전체적인 딥 러닝 컴파일러 최적화 활성화

AI 편집 "롤러" 롤러: 편집 효율성 향상

컴퓨터 칩에는 병렬 컴퓨팅 장치뿐만 아니라 여러 레이어의 메모리도 있습니다.대형 컴퓨팅 작업은 레이어별로 전달되어야 하며 프로세스에서 작업은 레이어별로 더 작은 "벽돌"로 분할됩니다. 마지막으로 계산을 위해 최상위 프로세서로 전달됩니다. 어려움은 메모리를 더 잘 사용하고 효율성을 향상시키기 위해 메모리 공간을 큰 "벽돌"로 채우는 방법에 있습니다. 기존의 방법은 더 나은 "벽돌" 세분화 전략을 찾기 위해 기계 학습을 통해 검색하는 것이지만 이것은 일반적으로 수천 개의 검색 단계가 필요하며 각 단계는 가속기에서 평가되어 합리적인 솔루션 솔루션을 찾기 때문에 많은 시간이 소요됩니다. , 완전한 모델을 컴파일하는 것과 같이 며칠 또는 몇 주가 걸릴 수도 있습니다.

연구원들은 컴퓨팅 로직과 각 메모리 계층의 매개 변수, 즉 소프트웨어 및 하드웨어 정보를 알고 나면 실제로 "벽돌" 절단의 가장 좋은 방법과 크기를 추정하여 더 빨리 달성할 수 있다고 믿습니다. 엮다. 이것도 Roller의 설계 이념이다 로드롤러에 해당한다 메모리의 특성을 고려한다는 전제 하에 고차원 텐서 데이터를 바닥을 깔듯이 2차원 메모리에 타일링하고 최적의 절단 블록(타일) 크기. 동시에 기본 가속기의 하드웨어 특성과 일치하는 텐서 모양을 캡슐화하고 모양 선택을 제한하여 효율적인 컴파일을 달성합니다.

롤러 기술 프레임워크

6개의 주류 DNN 모델과 119개의 인기 있는 DNN 연산자에 대한 평가는 Roller가 특히 크고 값비싼 사용자 지정 연산자에 대해 몇 초 만에 고도로 최적화된 커널을 생성할 수 있음을 보여줍니다. 궁극적으로 Roller는 기존 컴파일러에 비해 컴파일 시간이 3배 이상 향상되었습니다. Roller가 생성한 커널의 성능은 DNN 라이브러리를 포함한 최신 텐서 컴파일러의 성능과 비슷하며 일부 연산자는 더 나은 성능을 보입니다. 동시에 Roller는 마이크로소프트가 내부적으로 개발한 커스텀 DNN 커널에도 사용되었으며, 실제 개발에서는 개발 주기를 획기적으로 단축할 수 있는 Roller의 우수한 성능을 검증했습니다.

论文:ROLLER: 딥 러닝을 위한 빠르고 효율적인 텐서 컴파일

AI 컴파일 "전기 용접기" 용접기: 메모리 액세스 감소 및 계산 효율성 향상

최신 DNN 모델은 고속 메모리에 대한 요구 사항이 점점 더 높아지고 있습니다.최신 DNN 모델 중 일부를 분석한 후 연구원들은 현재 DNN 컴퓨팅 병목 현상의 대부분이 주로 이러한 모델의 메모리 대역폭 사용과 같은 GPU 메모리 액세스에 있음을 발견했습니다. 96.7%까지 높지만 컴퓨팅 코어의 평균 활용도는 51.6%에 불과하며 하드웨어와 DNN 모델의 지속적인 발전으로 둘 사이의 격차는 계속해서 벌어질 것이다. 특히 현재 AI 모델은 더 큰 이미지, 더 긴 문장, 고화질 그래픽과 같이 계산에서 더 많은 메모리 대역폭을 차지하는 고화질 데이터를 처리해야 합니다. 동시에 보다 효율적인 독점 컴퓨팅 코어(예: TensorCore)는 메모리 압력을 더욱 증가시켰습니다.

메모리 문제를 해결하기 위해 연구원들은 일반 연산자로 구성된 end-to-end DNN 모델의 메모리 접근 효율을 완벽하게 최적화한 Welder 딥러닝 컴파일러를 제안했다. 사실 DNN 모델은 여러 연산자로 구성된 그래프라고 볼 수 있는데 전체 계산 과정은 여러 단계, 즉 데이터가 서로 다른 연산자를 거쳐야 하고 각 단계에서 텐서를 블록으로 나누어야 한다. 계산을 위해 프로세서로 이동한 다음 다시 메모리로 이동하면 많은 처리 오버헤드가 발생합니다. 전체 계산 프로세스에는 여러 프로세스가 포함되므로 이 프로세스는 "벽돌"을 한 층씩 이동하는 장면으로 상상할 수도 있으며, 첫 번째 "작업자"는 처리를 위해 "벽돌"을 가져간 다음 다시 넣습니다. "노동자"는 그것을 조각하기 위해 가져 갔다가 다시 넣은 다음 세 번째, 네 번째 ... 반복 처리, 비용은 자명하다고 예상 할 수 있습니다. 그렇다면 첫 번째 "작업자"가 최상위 수준에서 하위 작업의 일부를 완료하고 다음 "작업자"에게 넘겨 처리를 계속한 다음 여러 작업을 함께 "결합"하여 간소화된 작업을 달성할 수 있습니까? 용접기는 전기 용접기의 역할을 하며, 서로 다른 작업자를 연결하여 조립 라인에서 데이터 블록을 처리할 수 있어 메모리 액세스 양을 크게 줄일 수 있습니다.최근 몇 년 동안 인공 지능 모델은 메모리 액세스 효율성에 대한 요구 사항이 점점 더 높아지고 있습니다. 의 경우 계산 효율을 크게 높일 수 있습니다.

용접기 기술 프레임워크

10개의 주류 DNN 모델(비전, 자연어 처리, 3D 그래픽 등과 같은 다양한 작업을 위한 클래식 및 최신 모델 구조 포함)을 평가한 결과 Welder가 NVIDIA 및 AMD GPU의 성능을 훨씬 능가한다는 것을 알 수 있습니다. PyTorch, ONNXRuntime 및 Ansor와 같은 기존 주류 프레임워크 및 컴파일러의 속도 증가는 각각 21.4배, 8.7배 및 2.8배에 달했습니다. Welder의 자동 최적화는 TensorRT 및 Faster Transformer를 능가하여 최대 3.0배 및 1.7배의 속도 향상을 달성합니다. 또한 이러한 모델의 성능은 TensorCore와 같은 더 빠른 컴퓨팅 코어가 있는 하드웨어에서 실행할 때 훨씬 더 향상되어 미래 AI 가속기에 대한 메모리 최적화의 중요성을 강조합니다.

论文:WELDER: 타일 그래프를 통한 딥 러닝 메모리 액세스 스케줄링

AI Compilation "Grinder" Grinder: 제어 흐름이 가속기에서 효율적으로 실행되도록 합니다.

계산 프로그램에서 데이터 블록을 이동하는 프로세스는 때때로 더 복잡한 제어 논리를 도입해야 합니다. 이는 인공 지능 프로그램의 데이터 흐름 외부의 제어 흐름입니다. 입력 실행할 프로그램 부분을 동적으로 결정합니다. 현재 대부분의 컴파일러는 데이터 흐름 문제를 해결하고 있으며 제어 흐름에 대한 지원이 효율적이지 않아 제어 흐름이 많은 모델은 가속기 성능을 효율적으로 활용할 수 없습니다. 연구원들은 보다 효율적인 최적화를 위해 제어 흐름과 데이터 흐름을 세분화하고 재구성할 수 있다고 믿고 Grinder[1]를 출시했습니다. 그라인더는 휴대용 그라인딩 머신과 같아서 데이터 흐름을 서로 다른 크기의 병렬 컴퓨팅 블록으로 나눈 후 제어 흐름을 데이터 흐름에 통합하여 가속기에서도 제어 흐름을 효율적으로 실행할 수 있습니다.

그라인더 기술 프레임워크

Grinder는 하드웨어 가속기에서 제어 흐름 및 데이터 흐름의 실행을 공동으로 최적화할 수 있으며 새로운 추상화를 통해 제어 흐름 및 데이터 흐름을 포함한 인공 지능 모델의 표현을 통합하여 Grinder가 하드웨어 병렬 처리 수준을 낮출 수 있도록 합니다.전체 디스패치 공간을 노출합니다. 제어 흐름을 재조정하기 위해. Grinder는 휴리스틱 전략을 사용하여 효과적인 스케줄링 체계를 찾고 제어 흐름을 장치 커널로 자동으로 이동하여 제어 흐름 경계를 넘어 최적화를 달성할 수 있습니다. 실험 결과 Grinder는 제어 흐름이 집중된 DNN 모델의 속도를 8.2배까지 높일 수 있으며 현재 제어 흐름을 위한 DNN 프레임워크 및 컴파일러 중 가장 빠릅니다.

论文:Cocktailer: 딥 러닝에서 동적 제어 흐름 분석 및 최적화

[1] Grinder는 프로젝트 이름이고 논문의 시스템 이름은 Cocktailer입니다.

동일한 추상화 세트 및 통합 중간 표현 계층(IR)을 기반으로 하는 이 4개의 AI 컴파일러는 현재 AI 컴파일러에서 병렬 처리, 컴파일 효율성, 메모리 및 제어 흐름과 같은 다양한 문제를 해결하여 완전한 컴파일 솔루션 세트를 형성합니다. 연구를 추진하는 과정에서 Microsoft Asia Research Institute의 컴파일 프로토타입 시스템은 Office, Bing, Xbox 등 Microsoft 제품의 배포 및 모델 최적화를 지원하고 Microsoft의 새로운 연산자.

"오늘날 대형 모델이 주류가 되면서 인공 지능 모델은 효율성과 컴퓨팅 성능에 대한 요구 사항이 더 높아졌습니다. 한편으로는 AI 컴파일러가 하드웨어 리소스에 대한 극단적인 연산자 융합, 사용자 정의 및 최적화를 수행해야 합니다. 온칩 네트워크 상호 연결(NoC) 칩, 하이브리드 메모리 아키텍처 등과 같은 새로운 대규모 하드웨어 아키텍처도 필요하며 화이트 박스 컴파일 방법을 통해 하드웨어 사용자 정의를 안내합니다.우리가 제안한 AI 컴파일러 세트는 AI 컴파일의 효율성을 크게 개선하면 인공 지능 모델의 교육 및 배포를 보다 용이하게 할 수 있습니다.동시에 대형 모델의 개발은 AI 컴파일의 기회도 제공합니다.미래에는 대형 모델 자체가 Microsoft Research Asia의 수석 연구원인 Xue Jilong은 이렇게 말했습니다.

추천

출처blog.csdn.net/helendemeng/article/details/131706224