9월 12일, Taotian Group과 Aicheng Technology는 대규모 모델 훈련 프레임워크인 Megatron-LLaMA를 공식적으로 오픈 소스로 공개했습니다. 이는 기술 개발자가 보다 편리하게 대규모 언어 모델의 훈련 성능을 개선하고 훈련 비용을 절감하며 LLaMA와의 호환성을 유지할 수 있도록 하는 것을 목표로 합니다. 지역 사회. 테스트 결과에 따르면 Megatron-LLaMA는 HuggingFace에서 직접 얻은 코드 버전에 비해 176%의 가속을 달성할 수 있으며 대규모 교육에서는 32개 카드에 비해 거의 선형 확장성을 보여줍니다. 네트워크 불안정 때문입니다. 현재 Megatron-LLaMA는 오픈 소스 커뮤니티에서 온라인 상태입니다.
오픈 소스 주소: https://github.com/alibaba/Megatron-LLaMA
대형 언어 모델의 뛰어난 성능은 사람들의 상상을 몇 번이고 뛰어넘었습니다. 지난 몇 달 동안 LLaMA와 LLaMA2는 오픈 소스 커뮤니티에 완전히 공개되어 자신만의 대규모 언어 모델을 훈련하려는 사람들에게 좋은 선택이 되었습니다. 오픈 소스 커뮤니티에는 지속적인 훈련/SFT(예: Alpaca, Vicuna, WizardLM, Platypus, StableBegula, Orca, OpenBuddy, Linly, Ziya 등) 및 처음부터 훈련(예:)을 포함하여 LLaMA 출력을 기반으로 하는 많은 모델이 이미 있습니다. Baichuan, QWen, InternLM, OpenLLaMA). 이러한 작업은 다양한 대형 모델 기능의 현재 객관적인 평가 목록에서 좋은 성능을 발휘할 뿐만 아니라 긴 텍스트 이해, 긴 텍스트 생성, 코드 작성 및 수학적 해결과 같은 실제 시나리오에서도 탁월한 성능을 보여줍니다. 이 밖에도 Whisper의 음성 채팅 로봇과 결합된 LLaMA, Stable Diffusion의 페인팅 소프트웨어와 결합된 LLaMA, 의료/법률 분야의 보조 상담 로봇 등 흥미로운 제품이 업계에 많이 등장했습니다. HuggingFace에서 LLaMA 모델 코드를 얻을 수 있지만, 자신의 데이터로 LLaMA 모델을 훈련시키는 것은 개인 사용자나 중소 규모 조직에게는 저렴하고 간단한 작업이 아닙니다. 대형 모델의 양과 데이터의 규모로 인해 일반적인 컴퓨팅 리소스로는 효과적인 학습을 완료할 수 없으며 컴퓨팅 성능과 비용이 심각한 병목 현상이 되었습니다. Megatron-LM 커뮤니티 사용자들은 이와 관련하여 매우 긴급한 요구를 갖고 있습니다. Taotian Group과 Aicheng Technology는 대형 모델 애플리케이션에 대한 매우 광범위한 애플리케이션 시나리오를 보유하고 있으며 대형 모델의 효율적인 교육에 많은 투자를 해왔습니다. LLaMA의 출현은 Taotian Group 및 Aicheng Technology를 포함한 많은 회사에 데이터 처리, 모델 설계, 미세 조정 및 강화 학습 피드백 조정 측면에서 많은 영감을 주었으며 비즈니스 애플리케이션 시나리오에서 새로운 돌파구를 달성하는 데도 도움이 되었습니다. . 따라서 전체 LLaMA 오픈 소스 커뮤니티에 환원하고 중국의 사전 훈련된 대형 모델 오픈 소스 커뮤니티의 발전을 촉진하여 개발자가 보다 쉽게 대형 언어 모델의 훈련 성능을 향상하고 훈련 비용을 절감할 수 있도록 Taotian 그룹과 Aicheng Technology는 내부 기술 최적화 및 오픈 소스를 결합하고 Megatron-LLaMA를 출시하며 모든 파트너와 함께 Megatron 및 LLaMA 생태계 구축을 기대합니다. Megatron-LLaMA는 표준 Megatron-LM 구현 LLaMA 세트를 제공하고 HuggingFace 형식으로 무료 전환을 위한 도구를 제공하여 커뮤니티 생태 도구와의 호환성을 용이하게 합니다. Megatron-LLaMA는 Megatron-LM의 역과정을 재설계하여 노드 수가 적고 큰 Gradient Aggregation(GA)을 켜야 하는 곳이나 노드 수가 많고 작은 GA를 사용해야 합니다. 우수한 훈련 성능을 발휘해야 합니다.
- 32개 카드 트레이닝에서 HuggingFace에서 직접 얻은 코드 버전과 비교하여 Megatron-LLaMA는 DeepSpeed 및 FlashAttention으로 최적화된 버전에서도 176% 가속을 달성할 수 있지만 Megatron-LLaMA는 여전히 훈련 시간을 최소 19% 단축합니다.
- 대규모 훈련에서 Megatron-LLaMA는 32개 카드에 비해 거의 선형 확장성을 갖습니다. 예를 들어 LLaMA-13B의 훈련을 재현하기 위해 512 A100을 사용하면 Megatron-LLaMA의 역방향 메커니즘은 기본 Megatron-LM의 DistributedOptimizer에 비해 정확도 손실 없이 최소 2일을 절약할 수 있습니다.
- Megatron-LLaMA는 네트워크 불안정성에 대한 높은 내성을 보여줍니다. 4x200Gbps 통신 대역폭을 갖춘 현재 비용 효율적인 8xA100-80GB 훈련 클러스터에서도(이 환경은 일반적으로 혼합 배포 환경이므로 네트워크는 대역폭의 절반만 사용할 수 있으며 네트워크 대역폭은 심각한 병목 현상이 발생하지만 임대 가격은 상대적으로 저렴합니다) 낮음) Megatron-LLaMA는 여전히 0.85의 선형 확장 성능을 달성할 수 있지만 Megatron-LM은 이 지표에서 0.7 미만의 성능만 달성할 수 있습니다. -MEGATRON-LM 기술은 고성능 LLAMA 교육 기회를 제공합니다. Llama는 대규모 언어 모델의 오픈 소스 커뮤니티에서 중요한 작업입니다. LLaMA는 BPE 문자 인코딩, RoPE 위치 인코딩, SwiGLU 활성화 함수, RMSNorm 정규화, Untied Embedding 등의 최적화 기술을 LLM의 구조에 도입하여 수많은 객관적, 주관적 평가에서 우수한 결과를 얻었습니다. LLaMA는 다양한 대형 모델 수요 시나리오에 적합하고 대다수 개발자가 선호하는 7B, 13B, 30B, 65B/70B 버전을 제공합니다. 많은 오픈소스 대형 모델과 마찬가지로 공식적으로는 코드의 추론 버전만 제공하기 때문에 가장 저렴한 비용으로 효율적인 학습을 수행하는 방법에 대한 표준 패러다임이 없습니다.
Megatron-LM은 품격 있는 고성능 교육 솔루션입니다.Megatron-LM은 텐서 병렬성(병렬 컴퓨팅을 위해 여러 카드에 큰 곱셈을 할당하는 Tensor Parallel, TP), 파이프라인 병렬성(처리를 위해 모델의 서로 다른 레이어를 서로 다른 카드에 할당하는 파이프라인 병렬, PP) 및 시퀀스 병렬성(Pipeline Parallel, PP)을 제공합니다. Sequence Parallel, SP, 시퀀스의 다른 부분이 다른 카드로 처리되어 비디오 메모리 절약) DistributedOptimizer 최적화(DeepSpeed Zero Stage-2와 유사, 모든 컴퓨팅 노드에 그라디언트 및 최적화 매개 변수 분할) 및 기타 기술을 통해 크게 줄일 수 있습니다. 비디오 메모리 사용량을 늘리고 GPU 활용도를 향상시킵니다. Megatron-LM은 활발한 오픈 소스 커뮤니티를 운영하고 있으며, 새로운 최적화 기술과 기능 설계가 프레임워크에 계속 통합되고 있습니다. 그러나 Megatron-LM을 기반으로 개발하는 것은 간단하지 않으며 값비싼 멀티 카드 머신에서의 디버깅 및 기능 검증은 훨씬 더 비쌉니다. Megatron-LLaMA는 먼저 Megatron-LM 프레임워크를 기반으로 한 LLaMA 교육 코드 세트를 제공하고 다양한 크기의 모델 버전을 지원하며 HuggingFace 형식의 Tokenizer에 대한 직접 지원을 포함하여 LLaMA의 다양한 변형을 지원하도록 쉽게 조정할 수 있습니다. 따라서 Megatron-LLaMA는 과도한 적응 없이 기존 오프라인 훈련 링크에 쉽게 적용될 수 있습니다. LLaMA-7b 및 LLaMA-13b의 중소 규모 교육/미세 조정 시나리오에서 Megatron-LLaMA는 54% 이상의 업계 최고의 하드웨어 활용도(MFU)를 쉽게 달성할 수 있습니다. ???? | Microsoft에서 출시한 기술은 이후의 많은 프레임워크에 매우 중요했습니다. 임팩트에 도달. DeepSpeed ZeRO Stage-2 (이하 ZeRO-2)는 추가적인 계산 및 통신 작업 부하를 추가하지 않고 메모리 사용량을 절약하는 프레임워크 내 기술입니다. 위 그림에 표시된 것처럼 계산 요구 사항으로 인해 각 순위에는 모든 매개변수가 있어야 합니다. 그러나 옵티마이저 상태의 경우 각 순위는 일부만 담당하며 모든 순위가 동시에 완전히 반복되는 작업을 수행할 필요는 없습니다. 따라서 ZeRO-2는 옵티마이저 상태를 각 순위로 균등하게 나눌 것을 제안합니다(각 변수가 특정 순위에서 균등하게 분할되거나 완전히 유지되는지 확인할 필요는 없습니다). 각 순위는 훈련 과정 중에만 사용하면 됩니다. .해당 부품의 최적화 상태 및 모델 매개변수 업데이트를 담당합니다. 이 설정에서는 그라데이션을 이런 방식으로 분할할 수도 있습니다. 기본적으로 ZeRO-2는 Reduce 메서드를 사용하여 모든 Rank 간의 기울기를 역으로 집계한 다음 각 Rank는 자신이 담당하는 매개변수의 일부만 유지하면 되므로 중복된 반복 계산을 제거할 뿐만 아니라 메모리도 줄어듭니다. 용법. . ㅋㅋ Megatron-LM DistributedOptimizer
네이티브 Megatron-LM은 DistributedOptimizer를 통해 ZeRO-2와 유사한 그라데이션 및 최적화 상태 분할을 구현하여 훈련 중 메모리 사용량을 줄입니다. 위 그림과 같이 DistributedOptimizer는 미리 설정된 Gradient로 집계된 Gradient를 모두 얻은 후 ReduceScatter 연산자를 사용하여 이전에 누적된 Gradient를 모두 다른 Rank로 분산시킵니다. 각 순위는 처리해야 하는 그래디언트의 일부만 얻은 다음 최적화 상태와 해당 매개변수를 업데이트합니다. 마지막으로 각 Rank는 AllGather를 통해 다른 노드로부터 업데이트된 매개변수를 획득하고, 최종적으로 모든 매개변수를 획득합니다. 실제 훈련 결과는 Megatron-LM의 기울기 및 매개변수 통신이 다른 계산과 연속적으로 수행되는 것을 보여줍니다. 대규모 사전 훈련 작업의 경우 전체 배치 데이터 크기가 변경되지 않도록 하기 위해 일반적으로 불가능합니다. 더 큰 GA를 엽니다. 따라서, 기계의 증가에 따라 통신의 비중도 증가하게 되는데, 이때 직렬 통신의 특성상 확장성이 매우 약하게 됩니다. 지역사회 내에서도 필요성이 절실합니다. ㅋㅋ Megatron-LLaMA OverlappedDistributedOptimizer
이 문제를 해결하기 위해 Megatron-LLaMA는 기본 Megatron-LM 이미저의 DistributedOpt를 개선하여 기울기 통신 연산자가 계산과 병렬화될 수 있도록 합니다. 특히 Megatron-LLaMA는 ZeRO의 구현에 비해 확장성이 더 뛰어난 집단 통신 방식을 사용하여 병렬성을 전제로 한 최적화 파티셔닝 전략의 영리한 최적화를 통해 확장성을 향상시킵니다.OverlappedDistributedOptimizer의 주요 설계는 다음 사항을 보장합니다. a) 단일 세트 통신 사업자의 데이터 볼륨은 통신 대역폭을 완전히 활용할 수 있을 만큼 충분히 큽니다. b) 새로운 분할 방법에 필요한 통신 데이터의 양은 최소와 같아야 합니다. 데이터 병렬성에 필요한 통신 데이터 볼륨 c) 전체 매개변수 또는 기울기 및 분할된 매개변수 또는 기울기의 변환 프로세스 중에 너무 많은 비디오 메모리 복사본을 도입할 수 없습니다. 구체적으로 Megatron-LLaMA는 DistributedOptimizer의 메커니즘을 개선하고 새로운 분할 방법과 결합하여 훈련의 역과정을 최적화하는 데 사용되는 OverlappedDistributedOptimizer를 제안합니다. 위 그림과 같이 OverlappedDistributedOptimizer가 초기화되면 모든 파라미터는 해당 파라미터가 속한 Bucket에 미리 할당됩니다. 버킷의 매개변수는 완전합니다. 매개변수는 하나의 버킷에만 속합니다. 버킷에는 여러 매개변수가 있을 수 있습니다. 논리적으로 각 Bucket은 연속적으로 P(P는 데이터 병렬 그룹의 수) 동일한 부분으로 나누어지며, 데이터 병렬 그룹의 각 Rank는 그 중 하나를 담당합니다. Bucket은 통신 순서를 보장하기 위해 로컬 큐(Local grad bucket queue)에 배치됩니다. 학습 및 계산 과정에서 데이터 병렬 그룹은 버킷 단위의 집단 통신을 통해 필요한 기울기를 교환합니다. Megatron-LLaMA에서 Bucket 구현은 가능한 주소 인덱싱을 사용하고, 필요한 값이 변경될 때만 공간을 새로 할당하여 비디오 메모리 낭비를 방지합니다. 위 설계와 수많은 엔지니어링 최적화가 결합되어 Megatron-LLaMA는 대규모 훈련 중에 하드웨어를 최대한 활용하여 기본 Megatron-LM보다 더 나은 가속을 달성할 수 있습니다. 32개의 A100 카드에서 512개의 A100 카드로 훈련할 때 Megatron-LLaMA는 일반적으로 사용되는 혼합 네트워크 환경에서 여전히 0.85의 확장 비율을 달성할 수 있습니다. -Megatron-Llama의 향후 계획
Megatron-Llama는 Tao Tian Group과 Ai Orange Technology가 공통으로 공개하고 후속 유지 관리 지원을 제공하는 교육 프레임워크로 널리 사용되는 내부 애플리케이션입니다. 점점 더 많은 개발자들이 LLaMA의 오픈 소스 커뮤니티에 모여들고 서로 배울 수 있는 경험을 제공함에 따라 앞으로 교육 프레임워크 수준에서 더 많은 도전과 기회가 있을 것이라고 믿습니다. Megatron-LLaMA는 커뮤니티의 발전에 세심한 주의를 기울이고 개발자와 협력하여 다음 방향을 추진할 것입니다.
적응형 최적 구성 선택
더 많은 모델 구조 또는 로컬 설계 변경 지원
- 더 궁극적인 성능 교육 다양한 하드웨어 환경에서의 솔루션프로젝트 주소: https://github.com/alibaba/Megatron-LLaMA
-
위 내용은 Taotian Group과 Aicheng Technology가 협력하여 오픈 소스 대규모 모델 훈련 프레임워크인 Megatron-LLaMA 출시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!