> 기술 주변기기 > 일체 포함 > AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

WBOY
풀어 주다: 2023-04-12 18:55:10
앞으로
1539명이 탐색했습니다.

이 공유에서는 AI 모델 훈련 과정의 주요 성능 병목 현상과 이러한 병목 현상에 대한 현재의 주요 가속 솔루션 및 기술 원리를 체계적으로 분석하고 이와 관련하여 Baidu Intelligent Cloud의 몇 가지 실제 결과를 소개합니다.

오늘 공유는 크게 세 부분으로 구성됩니다.

먼저 AI 훈련을 가속화해야 하는 이유, 즉 전반적인 배경과 출발점이 무엇인지 소개하겠습니다.

두 번째 부분에서는 AI 교육의 가능성을 체계적으로 분석합니다. 실제 훈련 과정 직면하게 될 성능 병목 문제와 이러한 문제를 해결하기 위한 현재의 주요 가속 솔루션을 소개합니다.

세 번째 부분에서는 Baidu Baige 플랫폼의 AI 훈련 가속 제품군 AIAK-훈련의 실제 효과를 소개합니다. 훈련.

1. AI 훈련 가속화가 필요한 이유는 무엇인가요?

AI 시스템에서 모델 생산부터 적용까지의 프로세스에는 일반적으로 오프라인 훈련과 추론 배포의 두 단계가 포함됩니다.

오프라인 훈련 단계는 모델을 생성하는 과정입니다. 사용자는 자신의 작업 시나리오에 따라 모델 훈련에 필요한 데이터 세트와 신경망 알고리즘을 준비해야 합니다.

알고리즘은 많은 변수와 매개변수를 포함하는 매우 복잡한 비볼록 수학 함수로 이해될 수 있습니다. 모델 훈련 과정은 실제로 신경망 모델의 매개변수를 학습하는 것입니다.

모델 훈련이 시작된 후 데이터를 읽은 다음 순방향 계산을 위해 모델로 전송하고 실제 값과의 오류가 계산됩니다. 그런 다음 역계산을 수행하여 매개변수 기울기를 얻고 마지막으로 매개변수를 업데이트합니다. 훈련에는 여러 차례의 데이터 반복이 포함됩니다.

훈련이 완료된 후 훈련된 모델을 저장한 다음 모델을 온라인에 배포하고 사용자의 실제 입력을 받아들인 다음 순방향 계산을 통해 추론을 완료합니다.

따라서 훈련이든 추론이든 핵심은 데이터 계산입니다. 컴퓨팅 효율성을 높이기 위해 훈련과 추론은 일반적으로 GPU와 같은 이기종 가속 칩을 통해 수행됩니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

또한, 딥러닝 모델의 개발 역사로 볼 때, 모델 정확도의 상한선을 계속해서 돌파하기 위해 실제로 모델 매개변수의 수가 급속히 늘어나고 있습니다. 그러나 매개변수 수가 많을수록 계산이 더 복잡해집니다.

아래 그림의 왼쪽은 공개 논문에서 가져온 것입니다. 이 요약을 보면 2010년 이전에는 모델의 계산량이 약 20개월 만에 두 배로 늘어났음을 알 수 있습니다. 2010년부터 2015년까지 기존 모델 계산은 5~6개월마다 두 배로 늘어났습니다. 2015년 이후에는 대규모 모델 학습 추세가 나타나며 계산량이 10~100배 증가했습니다.

모델 교육에는 컴퓨팅 성능과 인프라에 대한 요구 사항이 점점 더 높아지고 있습니다. 교육에는 더 많은 컴퓨팅 성능이 필요하고 시간이 더 오래 걸리므로 리소스 비용도 더 많이 듭니다. 여기에는 모델 학습 비용이 매우 높다는 것을 반영하는 일부 논문이나 연구에서 공개된 비용 데이터가 나열되어 있습니다.

따라서 어떻게 모델 훈련을 안정적으로 진행하는지, 지속적으로 비용을 절감하고 효율성을 높이는 방법이 중요합니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

이런 맥락에서 Baidu Intelligent Cloud는 AI 시나리오를 위한 통합 소프트웨어 및 하드웨어 솔루션 제공을 목표로 Baidu Baige·AI 이기종 컴퓨팅 플랫폼을 출시했습니다. AI 컴퓨팅, AI 스토리지, AI 가속 및 AI 컨테이너의 4계층 기술 스택을 통해 상위 수준 비즈니스 시나리오의 요구 사항을 충족합니다.

  • AI 컴퓨팅 레이어는 고성능 GPU, Kunlun 및 기타 이기종 칩 리소스는 물론 고성능 RDMA 또는 IB 네트워크, 자체 개발한 슈퍼 AI 컴퓨터 X-MAN 등을 제공합니다.
  • AI 스토리지 레이어, 데이터 레이크 스토리지 요구 사항을 충족하는 객체 스토리지 BOS 및 AI용으로 특별히 설계된 고성능 병렬 파일 시스템 PFS 포함
  • AI 가속 레이어, 데이터 레이크 스토리지 가속 제품군 RapidFS, AI 훈련 가속 제품군 AIAK-Training, AI 추론 가속 제품군 AIAK-Inference;
  • 리소스 스케줄링 레이어라고도 알려진 AI 컨테이너 레이어는 클라우드 네이티브의 기술 기능을 사용하여 GPU, AI 작업 등의 유연한 스케줄링 요구 사항을 충족합니다. 클라우드 네이티브 AI의 내용은 지난 기술 오픈 클래스에서 특별히 공유되었습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

성능 가속화에 대해 생각할 때 가장 먼저 떠오르는 것은 더 나은 하드웨어를 사용하는 것일 수 있습니다.

이로 인해 어느 정도 성능이 향상되지만 대부분의 경우 하드웨어의 컴퓨팅 성능이 완전히 활용되지 않을 수 있습니다. 핵심 이유는 훈련 코드의 실행 효율성이 최적 또는 더 나은 상태로 조정되지 않았기 때문입니다.

  • 우선, 더 많은 요구 사항과 호환되기 위해 프레임워크는 일반적으로 좀 더 일반적인 최적화 기능을 제공하고 사용 편의성, 생태학적 구성 등에 더 많은 관심을 기울입니다.
  • 두 번째로, 알고리즘 엔지니어가 알고리즘을 설계할 때, 그들의 핵심 에너지는 모델의 정확성을 향상시키는 방법이며, 성능 효율성에 대한 관심이 부족하며, 프레임워크에서 제공하는 일부 일반적인 최적화 기능이 활용되지 않는 경우도 있습니다.

따라서 특정 모델 알고리즘을 사용하기로 결정할 때 더 나은 리소스 효율성과 교육 효율성을 달성하려면 의식적으로 이를 최적화해야 합니다. 그러나 여기에는 많은 기술적인 과제도 있습니다.

  • 성능에 영향을 미치는 많은 요소가 있으며, 이를 다양한 모델의 작동 특성에 따라 분석해야 합니다. 완전히 고정된 최적화 계획은 없습니다.
  • 성능 최적화에는 원리 이해가 필요합니다. 이기종 칩 컴퓨팅을 최적화하려면 전문적인 이기종 R&D 경험이 필요하며 기술적 한계가 상대적으로 높습니다.
  • 어떤 경우에는 분산 교육을 수행할 때 클러스터 하드웨어와 네트워크 토폴로지를 결합해야 할 수도 있습니다. 배포를 최적화합니다. 기존 교육 시나리오의 확장성 문제입니다.

이러한 과제는 모델 훈련 성능 조정에 큰 영향을 미쳤기 때문에 추상적이고 사용하기 쉬운 인터페이스를 통해 최적화 비용을 줄이고 소프트웨어 및 하드웨어 협업 최적화 방법을 완벽하게 활용하고자 AIAK-Training 가속 제품군을 출시했습니다. Baidu Smart Cloud에서 고객의 모델 훈련 성능을 가속화하세요.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

2. 훈련 성과 오버헤드 분석 및 가속화 솔루션

AIAK-Training의 구체적인 효과를 소개하기 전에 먼저 훈련 가속화를 주제로 핵심 기술 아이디어와 솔루션 원리를 소개합니다.

모델 훈련 최적화 자체는 소프트웨어와 하드웨어의 포괄적인 작업이고 기술 스택이 상대적으로 복잡하기 때문에 오늘의 콘텐츠에서는 핵심 아이디어를 모두 다룰 수는 없습니다.

먼저 현재 모델 학습 솔루션을 살펴보겠습니다. 과거 개발 단계에서 모델 훈련 솔루션에는 두 가지 주요 변화가 있었습니다. 하나는 단일 카드 훈련에서 분산 훈련으로의 변화이고, 다른 하나는 데이터 병렬 훈련에서 다차원 하이브리드 병렬 훈련으로의 변화입니다. 여기서 핵심 추진 포인트는 훈련 데이터의 양과 모델 매개변수의 양입니다.

  • 단일 카드 훈련 방법: 실제로 이 모드를 사용할 때 모델 매개변수의 양과 데이터 양은 일반적으로 상대적으로 적으며 단일 카드의 훈련 시간은 허용됩니다. 모델 매개변수 규모는 단일 카드의 비디오 메모리가 학습 프로세스 동안 저장 상한을 충족할 수 있도록 보장해야 합니다. 새로운 GPU 카드의 비디오 메모리 용량 구성에 따르면 일반적으로 배치할 수 있는 최대 크기는 10억 개의 매개변수입니다.
  • 전체 데이터 세트를 여러 번 통과해야 하기 때문에 데이터 세트의 크기가 상대적으로 큰 경우; 훈련 과정에서 단일 카드 훈련은 시간이 오래 걸릴 것입니다. 이때 단일 카드에서 다중 카드로 확장하여 분산 접근 방식을 통해 훈련 속도를 높일 수 있습니다.

여기서 가장 널리 사용되는 것은 데이터 병렬성입니다. 데이터 병렬 방식에서는 데이터 세트를 여러 부분으로 균등하게 나눈 다음 전체 모델을 각 카드에 저장하고 분할된 하위 데이터 세트를 독립적으로 병렬로 처리합니다.

예를 들어 모델 매개변수 수가 충분히 크면 매개변수 수가 수백억 또는 수천억에 도달하고 단일 카드로는 전체 모델을 맞출 수 없습니다. 여기서도 모델 병렬성 또는 하이브리드 병렬 솔루션을 사용합니다. 데이터 병렬성과 모델 병렬성이 모두 나타납니다.

모델 병렬성은 모델을 여러 카드로 분할하고 각 카드에 모델의 일부를 배치합니다. 여기서 Tensor는 계층 내 분할 또는 계층 간 분할과 같은 다양한 분할 방법에 따라 세분화됩니다. 파이프라인 병렬 접근 방식.

일반 모델 훈련에서는 데이터 병렬화가 더 많이 사용되기 때문에 성능 최적화 아이디어를 소개하기 위해 데이터 병렬성을 예로 집중하겠습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

우리는 먼저 소프트웨어와 하드웨어의 전반적인 관점에서 단일 카드 훈련 과정에 존재하는 성능 오버헤드를 이해합니다.

아래 그림의 왼쪽은 소프트웨어 관점에서 본 우리의 훈련 과정입니다. 단일 카드 학습 프로세스에는 주로 데이터 읽기, 데이터 전처리, 순방향 계산 출력 및 손실 계산, 각 레이어 매개변수의 기울기를 얻기 위한 손실 함수에 따른 역방향 계산, 마지막으로 기울기에 따라 모델 매개변수 업데이트가 포함됩니다. 훈련이 수렴될 때까지 이 과정을 계속합니다.

아래 그림의 오른쪽은 단순화된 노드 하드웨어 토폴로지 다이어그램입니다. 상단은 데이터 저장소로, 로컬 저장소 또는 네트워크 저장소일 수 있습니다. 그 다음에는 CPU와 메모리가 있습니다. 0부터 7까지 번호가 매겨진 여러 개의 PCIe 스위치를 통해 CPU에 연결된 8개의 GPU 카드가 있으며, 8개의 카드는 NVSwitch를 통해 상호 연결됩니다. 컴퓨팅 인스턴스마다 하드웨어 토폴로지가 다릅니다.

  • 훈련이 시작되면 데이터가 먼저 읽혀지며, 여기에는 주로 저장 I/O 오버헤드인 저장 매체에서 메모리로 데이터를 읽는 작업이 포함됩니다. 저장 매체에 따라 읽어야 할 데이터의 양이 다르며, 이 부분에 드는 시간 비용도 다릅니다.
  • 다음 단계는 주로 읽은 데이터에 대해 일부 데이터 향상 작업을 수행하는 데이터 전처리입니다. 크기 조정, 대비, 채도 조정 등 이 작업은 대부분 CPU에서 수행됩니다. CPU에서 데이터 전처리 작업이 완료된 후 호스트 메모리에서 GPU 메모리로 복사해야 하며, 이는 호스트와 장치 간의 메모리 복사 오버헤드를 포함합니다.
  • 그런 다음 순방향 계산, 역방향 계산 및 매개변수 업데이트, 이 부분은 주로 GPU를 통해 더 많은 작업이 수행되며, 주요 시간은 GPU 계산에 소요됩니다. 이 프로세스는 CPU의 일부 작업과 함께 분산될 수도 있으며 호스트와 장치 메모리 간의 복사가 필요할 수도 있습니다.

따라서 단일 카드 관점에서 보면 주로 I/O, CPU 전처리, CPU와 GPU 간 데이터 복사, GPU 계산 등에 오버헤드가 발생합니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

그럼 데이터 병렬 처리 과정을 살펴보겠습니다.

아래 그림의 왼쪽은 여전히 ​​훈련의 주요 프로세스이고 오른쪽은 3머신 24카드 트레이닝 클러스터의 하드웨어 토폴로지를 보여줍니다. 3개의 머신은 네트워크를 통해 상호 연결됩니다.

또한 이전 부분에서 데이터 병렬화에서는 각 장치가 순방향 및 역방향 계산 프로세스를 병렬 및 독립적으로 수행한다는 점을 소개했습니다. 따라서 각 학습 프로세스는 앞서 언급한 단일 카드 학습에서도 성능 오버헤드 문제에 직면하게 됩니다.

데이터 병렬 처리가 단일 카드 훈련과 수학적으로 동일하도록 하려면 반복 프로세스 중에 각 카드의 모델 매개변수가 항상 일관되도록 해야 합니다. 한편, 각 GPU 카드의 모델 매개변수의 초기화 상태를 일관되게 만드는 것이 필요합니다. 이는 일반적으로 훈련 시작 전에 첫 번째 카드의 매개변수 상태를 다른 카드에 브로드캐스팅하여 수행됩니다.

학습 중에는 기기마다 처리하는 데이터가 다르기 때문에 순방향 계산으로 얻은 모델 손실 값도 다릅니다. 따라서 모델마다 기울기를 역방향으로 계산한 후 기울기를 평균화하는 것도 필요합니다. 매개변수는 최종 그라데이션 값으로 업데이트되어 반복 프로세스 중에 각 카드의 모델 매개변수가 일관되게 유지되도록 합니다.

그라디언트 평균화에는 노드 내 카드 간 통신은 물론 노드 간 네트워크 통신 오버헤드를 포함한 통신 프로세스가 포함됩니다. 여기서의 통신에는 동기식 통신과 비동기식 통신이 포함됩니다. 그러나 모델 훈련의 융합을 보장하기 위해 일반적으로 동기식 통신 솔루션이 사용되며 후속 최적화 작업도 동기식 통신을 기반으로 수행됩니다.

위에서 볼 수 있듯이 단일 카드 훈련과 비교할 때 데이터 병렬 처리는 주로 추가 통신 오버헤드를 추가합니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

위의 분석을 통해 우리는 AI 훈련 가속화가 단순히 업무의 특정 측면이 아니라 데이터 로딩, 모델 계산, 분산 통신 등 시스템 차원에서 종합적으로 고려되어야 함을 알 수 있습니다. 여기서 언급하는 데이터 로딩에는 데이터 I/O, 전처리, 메모리 복사 및 기타 프로세스가 포함됩니다.

특정 최적화 실습에서 최적화할 모델이 주어지면 모델 학습을 가속화한다는 것은 학습의 전체 처리량(초당 학습할 수 있는 샘플 수)을 지속적으로 향상시키는 것을 의미합니다. 이 과정에서 일반적으로 단일 카드의 훈련 처리량을 먼저 분석할 수 있습니다. 단일 카드의 훈련 처리량이 향상되면 단일 카드에서 여러 카드로 확장하여 훈련 가속 비율을 향상시키는 방법을 확인할 수 있습니다. 여러 카드.

우선, 단일 카드 훈련 최적화, 궁극적인 최적화 목표는 모든 시간을 GPU 컴퓨팅에 소비하는 것이며 가속기 활용률은 100%입니다. 물론 실제로 이 상태를 완전히 달성하는 것은 어렵지만 이 지표에 따라 작업을 안내하거나 측정할 수 있습니다.

단일 카드 성능 최적화의 핵심은 두 부분으로 구성됩니다.

  • 먼저, 데이터 로딩 효율성을 최적화합니다. 스토리지 시스템에서는 고성능 스토리지 미디어나 이러한 고속 스토리지 미디어를 기반으로 하는 병렬 파일 시스템 또는 일부 캐시 가속 시스템을 사용할 수 있습니다. 앞서 언급했듯이 Baidu Baige는 PFS, RapidFS 등과 같은 해당 스토리지 시스템 솔루션도 제공합니다. 또한 프레임워크 데이터 로더에서 데이터 읽기 프로세스를 최적화해야 합니다.
  • 두 번째는 모델 계산 효율성의 최적화입니다. 주요 고려사항은 계산 구현을 어떻게 최적화할 것인지, 계산 단위의 활용 효율성을 어떻게 높일 것인지이다. 이를 위해서는 모델과 연계한 상세한 분석이 필요할 수 있다.

그런 다음 단일 카드에서 여러 카드로 확장하면 목표는 선형 가속 비율을 달성하는 방법입니다. 선형 가속도 비율의 지표는 단순히 훈련을 1카드에서 2카드로 확장할 때 훈련 성능이 단일 카드의 2배인지 여부를 의미합니다.

여기서 핵심은 분산 통신 효율성을 최적화하는 것입니다. 한편으로는 하드웨어 수준의 최적화인 반면, 실제 통신에서는 네트워크의 대역폭 리소스를 어떻게 활용할 것인지 고려해야 합니다. 의사소통 과정을 숨길 수 있는지 여부 등

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

아래에서는 이러한 측면에 대해 자세히 설명하겠습니다.

첫 번째는 데이터 로딩 최적화입니다.

데이터로더를 인스턴스화한 후에는 데이터로더를 계속 반복하여 모델 교육을 위한 데이터 배치를 읽습니다.

여기서 최적화가 이루어지지 않으면 아래 그림의 상단과 같이 실제로는 각 배치의 데이터 로딩 과정과 각 배치의 모델 훈련 과정이 연속적으로 진행됩니다. GPU 관점에서는 데이터 로딩으로 인한 계산 공백이 발생하고, 컴퓨팅 리소스에 시간 낭비가 발생하게 됩니다.

앞서 언급한 것처럼 데이터 읽기의 효율성을 직접적으로 향상시키기 위해 더 나은 하드웨어를 사용하는 것 외에 어떻게 최적화할 수 있을까요?

실제로 AI 훈련 과정에서 데이터 액세스에는 두 가지 주요 기능이 있습니다.

  • 데이터 세트가 섞인 후 각 훈련 라운드에 필요한 배치 데이터와 액세스 순서가 알려집니다. 두 개의 데이터를 일괄적으로 읽는 것은 데이터 간의 종속성이 없기 때문에 병렬로 수행될 수 있습니다.
  • 따라서 하드웨어 수준 변경에 의존하지 않는 경우 우리가 할 수 있는 최적화 작업 중 하나는 데이터의 첫 번째 배치를 교육할 때 다음 데이터 배치를 미리 로드하여 I/O를 수행할 수 있습니다. process GPU에서 계산을 완전히 병렬화합니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유우선 데이터로더의 기존 최적화 솔루션을 잘 활용해야 합니다. 먼저 num_workers 하이퍼파라미터를 합리적으로 설정하고 여러 프로세스를 통해 데이터를 읽어야 합니다. 호스트 메모리. 두 번째는 호스트 메모리에서 GPU 메모리로 복사하는 것인데, 이는 고정된 메모리 메커니즘을 통해 가속화될 수 있습니다.

고정 메모리 가속의 주요 원리를 간략하게 소개하겠습니다. 메모리 데이터에는 페이징 가능 메모리와 고정 메모리의 두 가지 유형이 있습니다. 페이징 가능 메모리의 데이터는 디스크로 스왑 아웃될 수 있습니다. 이 경우 H2D를 실행할 때 먼저 디스크에서 메모리로 읽은 다음 메모리에서 비디오 메모리로 복사해야 할 수도 있습니다. 또한 페이징 가능한 메모리 데이터를 GPU 메모리로 복사할 때 임시 고정 메모리 버퍼를 먼저 생성하고 페이징 가능한 메모리의 데이터를 고정 메모리로 복사한 다음 GPU로 전송해야 하며, 이 작업에도 추가 데이터 전송 작업이 필요합니다.

그러나 위 솔루션을 활성화했을 때 스토리지 시스템에서 호스트 메모리로의 프리페칭만 구현하여 호스트에서 장치로의 데이터 복사 속도가 빨라졌습니다. 그러나 호스트에서 장치로의 메모리 복사와 실제 계산 커널은 여전히 ​​GPU에서 직렬로 실행됩니다. 즉, GPU에는 여전히 작은 시간 차이가 있습니다.

AIAK는 이 문제를 해결하기 위해 추가 최적화를 수행하여 H2D와 순방향 계산의 중첩을 실현할 수 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유데이터 병렬 시나리오에서 주의해야 할 점은 데이터를 균등하게 분할해야 한다는 것입니다.

각 학습 프로세스에 할당된 데이터의 균형이 맞지 않으면 계산량이 달라지며, 이로 인해 각 프로세스의 순방향 계산과 역방향 계산이 완료되는 시간이 달라지게 됩니다. 그러면 계산을 먼저 완료하는 프로세스가 달라집니다. 역방향 프로세스에서는 먼저 그라데이션 통신 링크에 들어가지만 Allreduce 통신은 동기식 통신 작업이므로 모든 프로세스가 동시에 시작되고 종료되어야 하므로 먼저 통신을 시작한 프로세스는 다른 모든 프로세스를 기다립니다. 통신 작업을 함께 완료하기 전에 AllReduce를 시작하는 프로세스도 있습니다. 다양한 속도로 인해 리소스 유휴 문제가 발생합니다.

이 문제를 해결하려면 각 프로세스에서 동일한 배치 크기를 사용하여 데이터를 읽어야 하며 각 배치의 데이터 양이 균형을 이루어야 합니다. 이미지 데이터는 일반적으로 훈련을 위해 고정된 크기인 반면, NLP 모델은 특수한 처리가 필요할 수 있는 가변 길이 명령문을 처리해야 합니다. 예를 들어 데이터를 동일한 길이로 채우거나 샘플 길이를 정렬하여 균등하게 배포할 수 있습니다. .

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유다음은 컴퓨팅 효율성의 최적화를 소개합니다.

계산에는 정방향, 역방향 및 매개변수 업데이트가 포함됩니다. 계산 최적화의 목표는 이기종 하드웨어의 컴퓨팅 성능을 최대한 활용하는 것입니다. 이상적인 상황은 GPU 칩의 실제 컴퓨팅 성능이 이론상 최고 수준에 도달하도록 하는 것입니다.

먼저 단일 연산자의 관점에서 분석해 보겠습니다. GPU에서 계산 작업을 준비할 때 단순화된 프로세스에는 4가지 단계가 있습니다.

  • 먼저 CPU에서 GPU 계산 커널을 비동기적으로 시작합니다.
  • 커널 실행이 예약되면 GPU의 전역 메모리에서 계산에 필요한 데이터를 읽어야 합니다.
  • 계산을 시작합니다. 계산이 완료되면 계산된 결과를 글로벌 메모리에 다시 써야 합니다.
  • 컴퓨팅 및 메모리 액세스 오버헤드의 비율에 따라 운영자는 일반적으로 컴퓨팅 병목 현상 또는 메모리 액세스 병목 현상으로 분류됩니다.

연산자에서 완전한 모델 훈련으로 확장할 때 많은 계산 커널을 지속적으로 실행해야 하기 때문에 커널 실행으로 인한 커널 계산과 중간 결과 읽기 및 쓰기 사이에 계산 공백 문제가 많이 발생하게 됩니다.

위에서 알 수 있듯이 모델 컴퓨팅 효율성을 최적화하려면 메모리 액세스 최적화, 계산 최적화, 기타 오버헤드 최적화까지 포괄적인 고려가 필요합니다.

메모리 액세스 최적화는 주로 비디오 메모리와 컴퓨팅 장치 간의 데이터 전송 시간을 줄이는 방법을 고려합니다. 운영자 구현의 관점에서 볼 때 공유 메모리와 같은 더 빠른 저장소로 데이터를 이동하고 글로벌 메모리에 대한 액세스를 줄여 메모리 액세스 시간을 절약하는 등 GPU 저장소 계층 구조를 잘 활용해야 합니다. 또는 계산 명령과 메모리 액세스 명령을 적절히 겹쳐서 계산 메모리 액세스 비율을 향상시킵니다. 단일 연산자에서 다중 연산자로 확장할 때 중간 결과의 읽기 및 쓰기를 줄이는 방법도 고려해야 합니다. 이 문제는 일반적으로 연산자 융합을 통해 최적화될 수 있습니다. 작업을 여러 개의 덩어리로 나누거나 GPU 병렬 컴퓨팅을 활용하지 못해 병렬성이 낮아집니다. 또한, 결합된 명령어 세트를 사용하지 않아 컴퓨팅 효율성이 낮아지거나, 텐서 코어와 같은 고성능 컴퓨팅 유닛을 사용하지 않아 리소스가 낭비될 가능성도 있습니다. 다양한 문제는 다양한 최적화 방법에 해당합니다.
  • Kernel Launch 및 기타 오버헤드, 메모리 액세스 또는 계산, 연산자 융합, Cuda Graph 등과 같이 고려할 수 있는 최적화 방법에 많은 시간이 소요됩니다.
첫번째는 오퍼레이터 융합입니다. 연산자가 기본 GPU에서 실행되면 하나 이상의 커널 시작이 시작되고 커널 간의 대화형 데이터도 비디오 메모리를 통과해야 합니다. 연산자 융합은 통합 시작을 위해 여러 GPU 커널을 하나의 큰 커널로 융합하는 것입니다. 실행.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

실행해야 하는 연산자 수가 줄어들기 때문에 커널 스케줄링 및 초기화의 오버헤드를 줄일 수 있습니다.

융합을 통해 중간 결과를 레지스터 등을 통해 전송할 수 있으므로 뒤로 이동하거나 실행할 필요가 없습니다.
  • 일부 시나리오에서는 연산자 융합을 사용하여 컴퓨팅 리소스를 최대한 활용하고 리소스 및 컴퓨팅 효율성을 향상시킬 수 있습니다.
연산자 융합을 구체적으로 구현하는 방법은 무엇입니까?

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유전문가 경험을 바탕으로 손으로 쓴 융합 연산자를 사용하여 모델의 비효율적인 작업을 분석하는 방법입니다. GPU에서는 주로 CUDA 연산자 연구 및 개발에 관한 것이며 여기에는 특정 임계값이 있습니다. AIAK-Training은 일반적인 모델 구조나 고객 요구 사항을 기반으로 효율적이고 최적화된 운영자 구현을 제공합니다.

또 다른 방법은 솔루션을 컴파일하고 최적화하는 것입니다. 컴퓨팅 최적화는 컴파일을 통해 수행되며 코드가 자동으로 생성되므로 다양한 하드웨어에서 수동으로 최적화하는 비용이 줄어듭니다. 그러나 현재의 많은 컴파일 솔루션은 추론에 더욱 최적화되어 있으며 교육 솔루션은 여전히 ​​급속한 발전 과정에 있습니다. 그러나 궁극적인 성능이라는 관점에서 볼 때 필기 융합 운영자의 작업은 앞으로도 여전히 뗄래야 뗄 수 없을 것입니다.

다음에서는 연산자 융합의 실제 사례를 소개합니다. 첫 번째는 일반적인 모델 네트워크 구조의 최적화입니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유아래 그림은 SwinTransformer 모델의 핵심 모듈 WindowAttention에 대한 계산 융합 최적화를 보여줍니다.

WindowAttention 구조, 핵심 연산식은 아래 그림과 같습니다. 계산 과정에서 7개의 계산 커널을 순차적으로 실행해야 합니다. 일부 재구성 및 기타 변환 작업과 함께 총 10개의 커널을 실행해야 합니다. 성능 분석을 통해 실제 실행 과정에서 실행 커널의 간격 중복 오버헤드가 전체 시간의 80% 이상을 차지하여 이 모듈에 대한 최적화 공간이 큰 것으로 나타났습니다.

이러한 커널을 하나로 융합하면 전체 모듈의 실행 시간이 392마이크로초에서 13마이크로초로 줄어들고 단일 연산자가 30배 가속화됩니다. 전체 모델의 학습 효율성이 엔드 투 엔드(end-to-end) 20% 이상 가속화되었습니다.

이 최적화의 핵심 아이디어는 주로 세 가지입니다:

  • GPU의 3단계 메모리 액세스 파이프라인(비디오 메모리, 공유 메모리, 레지스터)을 잘 활용하는 것입니다.
  • 블로킹을 사용합니다. 2개의 행렬 곱셈과 소프트맥스를 통합하는 전략
  • 순방향 중간 결과의 최적화를 위해 Tensor Core를 최대한 활용하고 역방향 계산에서 다시 로드하는 대신 재계산을 사용하여 메모리 액세스 오버헤드를 크게 줄입니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

아래 그림은 FCOS3D 모델에서 좌표 압축 연산을 최적화한 데이터 연산 융합의 예입니다.

성능 분석을 통해 이 작업 중에 GPU 공백이 많이 발생하고 GPU 활용도가 낮은 것으로 나타났습니다. 이 작업의 주요 기능은 3D-Tensor를 인덱스를 기반으로 2D-Tensor로 압축하는 것입니다. 네이티브 구현에서는 먼저 호스트 측에서 인덱스가 생성된 후 H2D 복사가 수행되고 마지막으로 Tensor 압축이 완료되므로 추가 복사 및 대기 오버헤드가 발생합니다.

이를 위해 우리는 이 작업 부분을 다시 구현했습니다. 핵심 아이디어는 모든 작업을 GPU로 마이그레이션하고, GPU에서 직접 Tensor의 인덱스 생성 및 압축을 완료하고, CPU 참여를 줄이고, 불필요한 CPU를 방지하는 것입니다. -GPU 메모리 복사 사이.

단일 연산자의 실행 시간이 9.69밀리초에서 32마이크로초로 단축되어 전체 모델의 엔드투엔드 훈련이 10% 이상 향상됩니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

다음으로 계산의 병렬성을 향상하고 GPU 병렬 컴퓨팅의 장점을 최대한 활용하는 컴퓨팅 최적화의 또 다른 아이디어를 몇 가지 실제 사례를 통해 소개하겠습니다. .

일부 모델에서는 일부 작업이 순차적으로 수행되는 것을 발견했습니다. 예를 들어, 일부 타겟 감지 모델에서는 손실 계산 프로세스 중에 일부 작업이 배치에 따라 수행되지 않고 각 그림이나 샘플에 대한 루프가 수행됩니다. 우리가 원하는 성과를 달성하세요.

YOLOv7의 SimOTA 작업을 예로 들어보겠습니다. 기본 구현에서는 배치의 각 이미지가 for 루프를 통해 탐색된 다음 이미지의 gtbox에 대해 SimOTA 라벨 할당이 수행됩니다. 이러한 직렬 구현으로 인해 이 작업 부분에서는 GPU 활용이 매우 비효율적입니다.

각 사진을 처리할 때 데이터 간에 종속성은 없습니다. 따라서 우리가 수행한 작업 중 하나는 직렬 계산을 배치 병렬 계산으로 변경하고 데이터 배치에 대한 레이블 할당을 병렬화하여 계산의 이 부분의 효율성을 높이는 것입니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

최종 효과에서 SimOTA 작업 시간은 384밀리초에서 69밀리초로 감소했고 컴퓨팅 효율성은 5.5배 증가했으며 전체 모델의 엔드투엔드 훈련 효율성은 18% 이상 증가했습니다.

모델 훈련 과정 중에 매개변수 업데이트와 같은 다른 유사한 시나리오가 있습니다. 매개변수가 업데이트되면 기본적으로 각 매개변수는 루프를 통해 순회되며, 각 매개변수는 매개변수 업데이트를 위해 Cuda 커널을 시작한 후 순차적으로 실행합니다.

이러한 상황을 고려하여 AIAK는 매개변수 업데이트 연산자를 융합하여 매개변수를 일괄 업데이트하고 커널 실행 횟수를 크게 줄일 수 있는 FusedOptimizer의 최적화도 추가했습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

다음에서는 주로 CPU Launch Kernel의 오버헤드를 줄이기 위한 또 다른 최적화 방법인 CUDA Graph를 소개합니다.

CUDA 그래프는 CUDA 10 버전에 도입된 기능으로, 단일 CPU 실행 작업을 통해 여러 GPU 커널을 단일 단위로 캡슐화할 수 있으므로 CPU 실행 커널의 오버헤드가 줄어듭니다.

아래 그림과 같이 기본적으로 CPU는 여러 커널을 순차적으로 실행해야 합니다. 커널 계산 시간이 상대적으로 짧은 경우 커널 간의 실행 간격으로 인해 성능 병목 현상이 발생할 수 있습니다. CUDA 그래프를 사용하면 그래프를 작성하는 데 약간의 추가 시간만 투자하면 되며, 이후 그래프를 내보내면 실제 실행 중에 커널 간의 간격을 크게 줄일 수 있습니다.

이제 많은 프레임워크에 CUDA 그래프에 대한 지원이 추가되었으며 K는 일부 코드를 삽입하여 이 기능을 활성화할 수 있습니다. 그러나 동적 형상을 지원하지 않거나, 동적 제어 흐름을 지원하지 않거나, 프로세스 중 CPU 작업을 캡처할 수 없는 등 몇 가지 사용 제한이 있습니다. 모델 상황에 따라 이 최적화 기능을 사용해 볼 수 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

다음은 Tensor Core 컴퓨팅 유닛을 최대한 활용하기 위한 마지막 계산 최적화 방법입니다.

GPU에는 일반적으로 여러 SM이 포함되어 있으며 각 SM에는 다양한 데이터 유형의 컴퓨팅 코어와 다양한 스토리지 리소스가 포함되어 있습니다. 아래 그림의 왼쪽에는 NVIDIA A100 SM의 개략도가 나와 있습니다. SM에는 64개의 FP32 CUDA 코어와 4개의 Tensor 코어가 포함되어 있습니다.

모델 훈련 중에는 FP32 CUDA Core 계산이 기본적으로 주로 사용되며, Tensor Core는 Volta 시리즈 GPU에서 도입된 특수 하드웨어 실행 장치로 주로 행렬 또는 컨볼루션 작업의 효율성을 높이는 데 사용됩니다.

한 번에 두 개의 스칼라에 대해서만 계산을 수행할 수 있는 FP32 CUDA Core에 비해 Tensor Core는 한 번에 두 개의 행렬에 대해 계산을 수행할 수 있으므로 Tensor Core의 계산 처리량은 FP32 CUDA Core보다 훨씬 높습니다.

A100에서 Tensor Core는 딥 러닝 훈련을 위해 다양한 부동 소수점 데이터 유형을 지원하며 FP16, BF16 및 TF32 모드가 포함될 수 있습니다.

TF32는 주로 단정밀도 교육 시나리오에 사용됩니다. FP32 교육과 비교하여 동일한 메모리 액세스 대역폭 요구 사항을 유지하면서 이론적 컴퓨팅 처리량은 8배 증가합니다.

FP16/BF16은 주로 혼합 정밀도 훈련 시나리오에 사용됩니다. FP32 훈련에 비해 메모리 액세스 요구 사항은 절반으로 줄어들고 이론적인 컴퓨팅 처리량은 16배 증가합니다.

Tensor Core를 사용하면 프로그래밍에 기본 cublas 또는 cuda 인터페이스를 사용할 수 있습니다. 알고리즘 개발자의 경우 프레임워크에서 제공되는 TF32 교육 또는 혼합 정밀도 교육 솔루션을 사용하는 것이 더 간단합니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

첫 번째는 TF32 훈련 모드로, TF32는 Ampere에서 선보였습니다.

TF32에는 부동 소수점 수 표현에서 8개의 지수 비트, 10개의 가수 비트 및 1개의 부호 비트가 있습니다. 지수 비트는 FP32와 동일하다. 즉, 데이터 표현 범위는 동일하지만 가수 비트는 FP32보다 낮고 FP16과 동일하다.

TF32는 개방형 숫자형이 아니라 Tensor Core의 계산 모드라는 점에 유의해야 합니다. 즉, 사용자가 TF32형 부동 소수점 숫자를 직접 생성할 수 없습니다.

TF32가 활성화되면 Tensor Core는 행렬이나 컨볼루션 연산을 계산할 때 자동으로 FP32를 TF32로 변환합니다. 계산이 완료된 후에도 출력 데이터 유형은 여전히 ​​FP32 유형입니다.

TF32 훈련은 일부 프레임워크 버전에서 기본적으로 활성화됩니다. 일부 프레임워크 버전에서는 환경 변수 또는 매개변수 구성을 통해 수동으로 활성화해야 할 수도 있습니다. 자세한 내용은 프레임워크의 사용 설명서를 참조하세요.

단, TF32의 정확도 범위는 FP32에 비해 줄어들기 때문에 실제 학습 시 모델의 수렴 정확도에 미치는 영향에 주의해야 합니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

혼합 정밀도 훈련은 모델 정확도 손실을 최소화하면서 FP32 및 FP16 혼합 정밀도를 사용하는 훈련을 의미합니다.

혼합 정밀 훈련의 주요 이점은 FP32 훈련에 비해 메모리 요구 사항이 줄어들고 더 큰 네트워크를 훈련하거나 더 큰 배치 크기를 사용할 수 있다는 것입니다. 더 적은 메모리 대역폭을 사용하면 데이터 전송 속도가 빨라질 수 있고, 반정밀도 계산도 수학 연산이 더 빨라질 수 있습니다.

그러나 FP16의 지수 비트와 가수 비트의 범위는 FP32의 범위, 수치 표현 범위 및 가수 비트의 범위보다 작습니다. 실제 사용 시 표현 범위가 좁아 수치 오버플로 문제가 발생하거나, 정밀도가 부족하여 반올림 오류가 발생할 수 있습니다.

유사한 문제를 최적화하기 위해 혼합 정밀도 교육 솔루션에는 몇 가지 핵심 기술 작업이 있습니다.

  • 오퍼레이터 블랙 및 화이트 목록 메커니즘, 프레임워크는 블랙 및 화이트 목록을 사용하여 모델 교육 프로세스 중에 개발자 개입 없이 유형 변환을 위해 캐스트 작업이 자동으로 삽입됩니다. 수치 정확도에 민감한 계산에는 FP32가 계속 사용되고, 행렬 곱셈과 같은 수치적으로 안전한 계산에는 FP16이 사용됩니다.
  • 훈련 과정에서 매개변수 업데이트를 위해 FP32 가중치 매개변수의 사본이 저장됩니다.
  • FP16이 오버플로되기 쉬운 문제를 고려하여 손실 스케일링 솔루션이 사용됩니다. 예를 들어 체인 규칙에 따라 기울기도 확대됩니다. n회이므로 FP16의 표현범위에 속하게 되며, 구체적인 과정은 아래 그림의 왼쪽과 같습니다.

현재 모든 프레임워크는 혼합 정밀도를 지원합니다. AIAK-Training 구성 요소는 NVIDIA Apex에 AMP O2 혼합 정밀도 모드를 추가로 도입하여 훈련 속도를 높이기 위해 더 많은 계산을 FP16으로 더욱 적극적으로 전송합니다. 기본 O1 모드와 비교하면 속도가 더욱 향상되지만 정확도가 영향을 받을 수 있으므로 특정 모델을 사용하여 검증해야 합니다.

AIAK-Training은 토치 앰프의 기본 사용과 호환되는 사용 방법을 제공하여 O2 모드를 쉽게 활성화할 수 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

커뮤니케이션 최적화에 대해 소개하겠습니다. 이것도 매우 큰 주제이고 많은 내용이 포함됩니다.

앞서 언급했듯이 단일 카드에서 여러 카드로 확장하려면 여러 카드 간의 일부 데이터 동기화가 필요하기 때문에 통신은 주로 분산 교육에 도입됩니다.

다음 그림에는 통신 최적화를 위한 전체 아키텍처가 나열되어 있습니다.

  • 최하위 계층은 네트워크 프로토콜 계층으로, 기존 TCP 네트워크와 교육 시나리오에 사용되는 RoCE 또는 IB의 고성능 RDMA 네트워크를 포함합니다. Baidu Baige는 이러한 기본 네트워크 솔루션에 대한 지원도 제공합니다. 분명히 네트워크 대역폭을 늘리고 대기 시간을 줄이기 위해 하드웨어 인프라를 개선하는 것이 통신 성능을 최적화하는 가장 직접적이고 효과적인 방법입니다.
  • 그리고 커뮤니케이션 라이브러리 레이어가 있습니다. 통신을 위해서는 기본 네트워크 프로토콜을 사용해야 하고 실제 애플리케이션에는 지점 간 통신, 집단 통신 등과 같은 여러 통신 기본 요소가 포함될 수 있으므로 고도로 캡슐화되고 최적화된 일부 통신 라이브러리도 등장했습니다. GPU 훈련 시나리오에서는 일반적으로 성능이 더 좋은 NCCL 통신 라이브러리를 사용합니다.
  • 기본 통신 라이브러리를 기반으로 상위 계층 프레임워크는 분산 교육 통신 아키텍처를 보다 쉽게 ​​구축할 수 있습니다. 일반적인 것에는 매개변수 서버 아키텍처와 집단 통신 아키텍처가 포함됩니다. 현재 CV/NLP 및 기타 분야의 모델은 주로 집단 커뮤니케이션 아키텍처를 채택합니다.
  • 통신 전략 계층은 주로 통신 숨기기, 통신 융합, 통신 압축, 통신 빈도 감소 및 기타 다양한 아이디어와 같은 응용 계층에서 통신 효율성을 최적화합니다. 이러한 방법의 대부분은 중첩되어 함께 사용될 수도 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

먼저 커뮤니케이션 전략 차원의 최적화 아이디어를 살펴보겠습니다. 첫 번째는 커뮤니케이션 숨겨진 최적화입니다.

데이터 병렬화에서는 훈련의 역과정에서 기울기 동기화 통신이 수행되며, 역방향으로 기울기를 계산한 후 전역 기울기 평균을 수행할 수 있습니다.

메커니즘 최적화가 이루어지지 않으면 역계산과 통신이 순차적으로 진행되어 계산에 시간차가 발생하게 됩니다.

역방향 과정에서 이전 그라디언트의 통신과 다음 그라디언트의 계산 사이에 데이터 종속성이 없기 때문에 이전 그라디언트의 통신과 다음 그라디언트의 계산을 병렬화하여 두 작업의 시간 소모를 줄일 수 있습니다. . 서로 겹쳐서 통신 시간의 일부를 숨깁니다.

구현 수준에서 통신 및 계산 연산자는 일반적으로 서로 다른 Cuda 스트림에 예약되어 구현되며, 계산 연산자는 서로 다른 스트림에 예약되어 동시에 실행될 수 있습니다. . 실행을 통해 그라디언트 통신과 역방향 계산의 병렬 중첩을 달성합니다.

현재 이 최적화 기능은 프레임워크에서 기본적으로 활성화되어 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

둘째, 커뮤니케이션 통합 최적화입니다.

기본적으로 모델의 각 그라데이션은 통신 작업을 시작해야 합니다. 단일 그래디언트의 크기가 상대적으로 작은 경우 작은 데이터 패킷이 실제로 통신될 때 네트워크 대역폭 활용도가 매우 낮고 통신 성능이 저하됩니다.

통신 융합은 하나의 통신에 대해 여러 기울기를 융합하는 것입니다. 통신 오버헤드 모델 분석을 통해 대역폭 활용도를 향상시킬 수 있을 뿐만 아니라 통신의 초기화 지연 시간도 줄일 수 있습니다.

현재 많은 분산 교육 프레임워크는 기본적으로 그라데이션 융합 전략을 지원합니다. 일부 구현에서는 통신 순서를 먼저 결정하기 위해 그라데이션 협상이 필요하지만 다른 구현에서는 정적 통신 버케팅을 직접 사용합니다.

프레임워크는 기본적으로 통신 융합을 지원하지만 일반적으로 그라디언트 융합의 크기는 매개변수를 통해 구성할 수 있습니다. 사용자는 물리적 환경 및 모델의 요구에 따라 적절한 융합 임계값을 조정할 수 있으며 더 나은 이점을 얻을 수 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

저대역폭 TCP 환경과 같이 네트워크 대역폭이 낮은 교육 시나리오에서는 그라데이션 동기화 지연이 교육의 주요 성능 병목 현상이 될 수 있습니다.

  • 이 경우 고려할 수 있는 최적화 방법 중 하나는 통신 압축입니다. 통신 압축에는 세 가지 주요 압축 아이디어가 있습니다.
  • 낮은 정밀도를 사용하여 그래디언트를 표현하는 등의 양자화 압축 이 방법은 압축률이 낮고 32비트에서 최대 1비트까지 압축할 수 있습니다. 32번.
  • Sparse 압축, DGC 알고리즘과 같은 일반적인 알고리즘의 핵심 아이디어는 각 반복에서 중요한 기울기, 즉 기울기 값이 설정된 임계값을 초과하는 동시에 정보 손실을 줄이기 위해 나머지 중요하지 않은 기울기가 전송됩니다. 기울기는 로컬로 누적됩니다. 충분한 시간이 있는 한 누적된 기울기는 결국 설정된 임계값을 초과한 다음 기울기 교환이 수행됩니다. 이러한 방식으로 통신 데이터의 양이 줄어들고 네트워크 대역폭에 대한 수요가 줄어듭니다. 동시에 모델 수렴에 미치는 영향을 줄이기 위해 운동량 보정, 경사 클리핑, 운동량 인자 마스킹, 워밍업 훈련 등 다양한 방법을 통해 완화되기도 합니다. 이 솔루션은 현재 주로 SGD 최적화 프로그램을 지원합니다.
  • PowerSGD와 같은 일반적인 알고리즘의 핵심 아이디어는 큰 기울기 행렬을 여러 개의 작은 기울기 행렬로 분해하고 작은 행렬을 전송하여 통신량을 줄이는 것입니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

통신 빈도 감소 최적화를 위한 가장 간단한 아이디어는 배치 크기를 늘려 각 반복에서 더 많은 데이터가 사용되도록 하는 것입니다. 이는 반복 횟수를 줄여 통신량이 줄어드는 것을 의미합니다.

그러나 배치 크기가 클수록 모델 수렴 정확도가 떨어지거나 수렴 속도가 느려질 수 있습니다. 유사한 문제에 대해 업계에서는 계층을 통해 학습률을 적응적으로 조정하여 유사한 문제를 완화할 수 있는 LARS 및 LAMB와 같은 최적화 알고리즘도 제안했습니다. AIAK-Training도 지원을 추가했습니다.

배치 크기를 늘리려면 비디오 메모리가 충분하면 배치 크기 슈퍼 매개변수를 직접 조정할 수 있습니다. 비디오 메모리가 부족한 경우 그라데이션 누적을 통해 여러 그라데이션 통신을 건너뛸 수도 있으며 이는 실제로 배치 크기를 늘리는 것과 같습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

다음에서는 통신 토폴로지의 최적화 솔루션인 계층적 토폴로지 통신을 소개합니다. 이는 또한 기계 간 네트워크 대역폭이 상대적으로 낮은 상황을 목표로 합니다.

계층적 통신을 통해 기계 내의 높은 상호 연결 대역폭을 최대한 활용하는 동시에 기계 간 낮은 네트워크 대역폭의 영향을 약화시킬 수 있습니다.

이 통신 솔루션은 AIAK에서도 구현되었습니다. 25Gbps TCP 환경에서 SwinTransformer 교육을 위해 4개의 머신과 32개의 카드를 테스트했으며, 계층화된 AllReduce를 통해 성능을 85%까지 가속화할 수 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

마지막으로 기본 통신 라이브러리 수준의 최적화인 GPU Direct RDMA 통신 기술을 도입합니다. 이 기술을 사용하려면 RDMA 네트워크를 지원하는 하드웨어 환경이 필요합니다.

RDMA 통신을 통해 로컬 애플리케이션은 원격 애플리케이션의 사용자 모드 가상 메모리를 직접 읽고 쓸 수 있으며, CPU의 참여가 필요한 전송 요청 제출의 초기 단계를 제외한 전체 통신 프로세스는 네트워크에 의해 완료됩니다. 카드 하드웨어가 필요하지 않으며 메모리 복사, 시스템 인터럽트 및 소프트웨어 처리가 필요하지 않으므로 극도로 낮은 대기 시간과 높은 대역폭을 달성할 수 있습니다.

GPU 시나리오에서 GPU Direct RDMA 기술은 GPU 비디오 메모리에 직접 액세스할 수 있는 RDMA 지원을 추가하여 통신 중에 GPU 비디오 메모리와 호스트 메모리 간에 데이터가 앞뒤로 복사되는 것을 방지하고 시스템 간 통신 지연을 더욱 줄입니다.

그러나 실제 사례에서는 일부 사용자가 RDMA 환경을 구입했지만 실제로 GDR 기술을 사용하지 않아 통신 효율성이 떨어지는 것을 발견했습니다. 여기에는 몇 가지 주요 구성 항목이 나열되어 있습니다. 비슷한 문제가 있는 경우 문제를 해결하고 순서대로 설정할 수 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

현재 주요 성능 최적화 아이디어와 솔루션 중 일부를 소개했습니다. 전반적으로 I/O 최적화, 컴퓨팅 최적화, 통신 최적화에 관계없이 가장 간단한 최적화 아이디어는 주로 작업 자체를 최적화하는 방법인지 여부입니다. 작업이 발생하는 횟수나 작업을 다른 프로세스와 병렬화하여 오버헤드를 숨길 수 있는지 여부 등을 줄일 수 있습니다.

3. AIAK-Training Acceleration Kit Practice

이를 올바르게 활성화하려면 각 사용자가 프레임워크의 엔지니어링 구현 원리를 명확하게 이해해야 합니다. 훈련 최적화 비용을 단순화하기 위해 AIAK-Training Acceleration 패키지를 구축했습니다.

AIAK-Training은 데이터 로딩, 모델 계산, 통신 등에 관한 전체 링크 최적화 기능을 구축합니다. 동시에 이 최적화 기능을 간단하고 사용하기 쉬운 인터페이스로 캡슐화합니다. 사용자는 몇 가지를 삽입할 수 있습니다. 비교할 수 있는 코드 라인 편리한 통합 사용. 동시에 우리는 사용자가 효과적인 최적화 전략을 선택할 수 있도록 자동으로 전략 조합 최적화 메커니즘을 구축하고 있습니다.

특정 용도에서는 가속 라이브러리 구성 요소를 독립적으로 설치 및 배포할 수도 있고, 우리가 제공하는 컨테이너 이미지를 직접 사용할 수도 있습니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

다음은 구체적인 적용 사례입니다.

아래 그림과 같이 주로 데이터로더의 최적화를 위한 것입니다. 이 시나리오에서는 모델이 상대적으로 작고 데이터 세트 크기도 상대적으로 작으며 순수 계산 속도가 실제로 더 빠릅니다. 그러나 크로스 EPOCH 데이터 로딩 시간이 상대적으로 길어서 I/O 시간이 많이 소요됩니다. 주요 병목 현상.

AIAK에서 제공하는 프로세스 재사용 및 전체 프리페치 메커니즘을 사용하여 전체 모델 학습이 166% 가속화됩니다.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

아래 사진은 모델계산 최적화 사례입니다.

Transformer 클래스 모델 교육 시나리오, 실제 교육 중 통신 확장성은 선형에 가깝고 I/O 시간 소모 비율도 매우 낮으며 컴퓨팅이 주요 성능 병목 현상입니다.

이 모델에 대해 AIAK-Training은 주요 구조의 연산자 융합, 혼합 정밀도, 대규모 배치 튜닝 등을 포함하여 일련의 계산 수준 최적화를 수행했으며 전체 모델의 훈련 효율성이 169% 증가했습니다. .

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

아래 그림의 사례는 주로 통신 수준 최적화를 적용하여 클라우드 TCP 환경에서 낮은 대역폭 네트워크에 대한 최적화 전략을 가능하게 하며 resnet50, bert 및 vgg16과 같은 일부 클래식 모델에서는 다음을 통해 가속화될 수 있습니다. 26%~78%.

AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

자율 주행 시나리오에서 일반적인 2D 비전, 3D 비전, LiDAR 및 사전 융합 모델에 대한 일련의 모델 교육 성능 최적화를 수행했으며 교육 성능이 49%~391% 가속화되었습니다. .


AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유

위 내용은 AI 훈련 가속 원리 분석 및 엔지니어링 실무 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿