Zephyrnet Logosu

Amazon SageMaker model paralel kitaplığı artık PyTorch FSDP iş yüklerini %20'ye kadar hızlandırıyor | Amazon Web Hizmetleri

Tarih:

Büyük dil modeli (LLM) eğitiminin popülaritesi geçen yıl Llama 2, Falcon ve Mistral gibi birçok popüler modelin piyasaya sürülmesiyle arttı. Müşteriler artık sağlık hizmetlerinden finans ve pazarlamaya kadar çeşitli sektörlerdeki uygulamalar için model performansını optimize etmek üzere 1 milyardan 175 milyarın üzerinde parametreye kadar LLM'leri önceden eğitiyor ve ince ayar yapıyor.

Bu ölçekte performans gösteren modelleri eğitmek zor olabilir. Yüksek doğruluklu LLM'ler, hedef doğruluğuna ulaşmak için terabaytlarca eğitim verisine ve binlerce hatta milyonlarca saatlik hızlandırıcı hesaplama süresine ihtiyaç duyabilir. Müşteriler, eğitimi tamamlamak ve ürünleri zamanında piyasaya sürmek için bu devasa iş yükünü binlerce hızlandırıcı cihaza dağıtmak amacıyla paralellik tekniklerine güveniyor. Ancak bu paralellik tekniklerinin kullanımı zor olabilir: farklı teknikler ve kitaplıklar yalnızca belirli iş yükleriyle uyumludur veya belirli model mimarileriyle sınırlıdır, eğitim performansı belirsiz yapılandırmalara karşı oldukça duyarlı olabilir ve son teknoloji hızla gelişmektedir. Sonuç olarak, makine öğrenimi uygulayıcılarının LLM iş yüklerini büyük GPU kümelerine ölçeklendirmek için haftalarca hazırlık yapması gerekiyor.

Bu yazıda, uygulamanın yeni özelliklerini vurguluyoruz. Amazon Adaçayı Yapıcı Büyük model eğitim sürecini basitleştiren ve LLM'leri daha hızlı eğitmenize yardımcı olan model paralel (SMP) kitaplığı. Özellikle, SMP kitaplığının açık kaynak PyTorch Tamamen Parçalanmış Veri Paralel (FSDP) API'lerini temel alan yeni basitleştirilmiş kullanıcı deneyimini, yüz milyarlarca parametreyle eğitim modellerine olanak tanıyan genişletilmiş tensör paralel işlevselliğini ve model eğitim süresini kısaltan performans optimizasyonlarını ele alıyoruz. ve %20'ye kadar maliyet.

SageMaker modeli paralel kitaplığı hakkında daha fazla bilgi edinmek için bkz. SageMaker model paralellik kitaplığı v2 belgeler. Ayrıca şuraya da başvurabilirsiniz: örnek defterler Başlamak için.

Büyük model eğitimini kolaylaştıran ve hızlandıran yeni özellikler

Bu yazıda SageMaker modeli paralel kitaplığının v2.0 sürümünde yer alan en son özellikler tartışılmaktadır. Bu özellikler kütüphanenin kullanılabilirliğini artırır, işlevselliği genişletir ve eğitimi hızlandırır. Aşağıdaki bölümlerde yeni özellikleri özetliyor ve büyük model eğitiminizi hızlandırmak için kitaplığı nasıl kullanabileceğinizi tartışıyoruz.

SMP'yi açık kaynak PyTorch ile hizalama

SMP, 2020'deki lansmanından bu yana SageMaker bilgi işlem bulut sunucularında yüksek performanslı, büyük ölçekli eğitime olanak sağladı. SMP'nin bu en son ana sürüm sürümüyle kitaplık, API'lerini açık kaynak PyTorch ile uyumlu hale getirerek kullanıcı deneyimini basitleştirir.

PyTorch teklifleri Tamamen Parçalanmış Veri Paralelliği (FSDP), birçok bilgi işlem cihazında büyük eğitim iş yükünü desteklemek için ana yöntem olarak kullanılır. Aşağıdaki kod parçacığında gösterildiği gibi, SMP'nin parçalanmış veri paralelliği gibi teknikler için güncellenmiş API'leri PyTorch'unkileri yansıtır. Basitçe koşabilirsiniz import torch.sagemaker ve onun yerine onu kullan torch.

## training_script.py
import torch.sagemaker as tsm
tsm.init()

# Set up a PyTorch model
model = ...

# Wrap the PyTorch model using the PyTorch FSDP module
model = FSDP(
model,
...
)

optimizer = ...
...

SMP API'lerine yapılan bu güncellemeler sayesinde, artık mevcut PyTorch FSDP eğitim komut dosyalarınızı elden geçirmeden SageMaker ve SMP kitaplığının performans avantajlarını fark edebilirsiniz. Bu paradigma aynı zamanda şirket içi eğitim sırasında SageMaker'da olduğu gibi aynı kod tabanını kullanmanıza olanak tanıyarak birden fazla ortamda eğitim veren müşteriler için kullanıcı deneyimini basitleştirir.

Mevcut PyTorch FSDP eğitim komut dosyalarınızla SMP'yi nasıl etkinleştireceğiniz hakkında daha fazla bilgi için bkz. SMP'yi kullanmaya başlayın.

Büyük kümeler üzerinde eğitim sağlamak için tensör paralelliğini entegre etme

SMP'nin bu sürümü aynı zamanda PyTorch FSDP'nin yeteneklerini tensör paralellik tekniklerini içerecek şekilde genişletiyor. Parçalanmış veri paralelliğini tek başına kullanmanın bir sorunu, küme boyutunuzu büyütürken yakınsama sorunlarıyla karşılaşabilmenizdir. Bunun nedeni, veri paralel sıralarındaki parçalama parametrelerinin, degradelerin ve optimize edici durumunun aynı zamanda genel toplu iş boyutunuzu da artırmasıdır; büyük kümelerde bu küresel parti büyüklüğü, modelin yakınsayacağı eşiğin ötesine itilebilir. Kümenizi ölçeklendirirken küresel toplu iş boyutunda artış gerektirmeyen ek bir paralellik tekniği eklemeniz gerekir.

Bu sorunu azaltmak için SMP v2.0, tensör paralelliğiyle parçalanmış veri paralelliği oluşturma yeteneğini sunar. Tensör paralelliği, küresel toplu iş boyutunu değiştirmeden veya model yakınsamasını etkilemeden küme boyutunun artmasına olanak tanır. Bu özellik sayesinde, 256 veya daha fazla düğüme sahip kümelerin temel hazırlığını yaparak eğitim verimini güvenli bir şekilde artırabilirsiniz.

Günümüzde PyTorch FSDP ile tensör paralelliği yalnızca SMP v2'de mevcuttur. SMP v2, birkaç satırlık kod değişikliğiyle bu tekniği etkinleştirmenize ve büyük kümelerde bile istikrarlı eğitimin kilidini açmanıza olanak tanır. SMP v2 ile entegre olur Trafo Motoru tensör paralelliğinin uygulanması için kullanılır ve onu PyTorch FSDP API'leriyle uyumlu hale getirir. PyTorch modelinizde veya PyTorch FSDP yapılandırmanızda herhangi bir değişiklik yapmadan PyTorch FSDP ve SMP tensör paralelliğini aynı anda etkinleştirebilirsiniz. Aşağıdaki kod parçacıkları, SMP yapılandırma sözlüğünün JSON formatında nasıl kurulacağını ve SMP başlatma modülünün nasıl ekleneceğini gösterir torch.sagemaker.init()Eğitim işini başlattığınızda arka uçtaki yapılandırma sözlüğünü eğitim betiğinize kabul eden .

SMP yapılandırması aşağıdaki gibidir:

{
"tensor_parallel_degree": 8,
"tensor_parallel_seed": 0
}

Eğitim betiğinizde aşağıdaki kodu kullanın:

import torch.sagemaker as tsm
tsm.init()

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_config(..)
model = tsm.transform(model)

SMP'de tensör paralelliğini kullanma hakkında daha fazla bilgi edinmek için bkz. tensör paralelliği belgelerimizin bir bölümü.

Model eğitimini %20'ye kadar hızlandırmak için gelişmiş özellikleri kullanın

Yüzlerce örnek içeren kümeler üzerinde dağıtılmış eğitim sağlamanın yanı sıra SMP, model eğitimini %20'ye kadar hızlandırabilen optimizasyon teknikleri de sunar. Bu bölümde bu optimizasyonlardan birkaçını vurgulayacağız. Daha fazla bilgi edinmek için bkz. çekirdek özellikleri belgelerimizin bir bölümü.

Hibrit parçalama

Parçalanmış veri paralelliği, bir modelin durumunu (model parametreleri, degradeler ve optimize edici durumları) cihazlar arasında bölen, bellekten tasarruf sağlayan dağıtılmış bir eğitim tekniğidir. Bu daha küçük bellek alanı, kümenize daha büyük bir model sığdırmanıza veya toplu iş boyutunu artırmanıza olanak tanır. Ancak parçalı veri paralelliği, eğitim işinizin iletişim gereksinimlerini de artırır çünkü parçalanmış model yapıları eğitim sırasında sıklıkla farklı cihazlardan toplanır. Bu şekilde parçalama derecesi, bellek tüketimi ve iletişim ek yükünü dengeleyen önemli bir yapılandırmadır.

Varsayılan olarak PyTorch FSDP, kümenizdeki tüm hızlandırıcı cihazlar genelinde model yapıtlarını parçalar. Eğitim işinize bağlı olarak bu parçalama yöntemi, iletişim yükünü artırabilir ve bir performans sorunu yaratabilir. Buna yardımcı olmak için SMP kütüphanesi, PyTorch FSDP'nin üzerinde yapılandırılabilir hibrit parçalı veri paralelliği sunar. Bu özellik, eğitim iş yükünüz için en uygun parçalama derecesini ayarlamanıza olanak tanır. Bir yapılandırma JSON nesnesinde parçalama derecesini belirtmeniz ve bunu SMP eğitim betiğinize eklemeniz yeterlidir.

SMP yapılandırması aşağıdaki gibidir:

{ "hybrid_shard_degree": 16 }

Hibrit parçalanmış veri paralelliğinin avantajları hakkında daha fazla bilgi edinmek için bkz. AWS'de devasa model eğitiminin doğrusala yakın ölçeklenmesi. Mevcut FSDP eğitim betiğinizle hibrit parçalamayı uygulamaya ilişkin daha fazla bilgi için bkz. hibrit paylaşılan veri paralelliği belgelerimizde.

AWS altyapısı için optimize edilmiş SMDDP toplu iletişim işlemlerini kullanın

SMP kütüphanesini aşağıdakilerle kullanabilirsiniz: SageMaker dağıtılmış veri paralelliği (SMDDP) kitaplığı Dağıtılmış eğitim iş yüklerinizi hızlandırmak için. SMDDP optimize edilmiş bir AllGather SageMaker p4d ve p4de hızlandırılmış bulut sunucularında en iyi performans için tasarlanmış toplu iletişim işlemi. Dağıtılmış eğitimde, bilgileri GPU çalışanları arasında senkronize etmek için toplu iletişim operasyonları kullanılır. AllGather ileri ve geri hesaplama adımlarından önce katman parametrelerini gerçekleştirmek için genellikle parçalanmış veri paralelliğinde kullanılan temel kolektif iletişim operasyonlarından biridir. İletişim nedeniyle darboğaz yaşanan eğitim işleri için daha hızlı kolektif operasyonlar, yakınsama üzerinde herhangi bir yan etki olmaksızın eğitim süresini ve maliyetini azaltabilir.

SMDDP kitaplığını kullanmak için eğitim komut dosyanıza yalnızca iki satır kod eklemeniz gerekir:

import torch.distributed as dist

# Initialize with SMDDP
import smdistributed.dataparallel.torch.torch_smddp
dist.init_process_group(backend="smddp") # Replacing "nccl"

# Initialize with SMP
import torch.sagemaker as tsm
tsm.init()

SMDDP, SMP'ye ek olarak açık kaynaklı PyTorch FSDP ve DeepSpeed'i de destekler. SMDDP kitaplığı hakkında daha fazla bilgi edinmek için bkz. SageMaker dağıtılmış veri paralelliği kitaplığıyla dağıtılmış eğitim çalıştırın.

Aktivasyon boşaltma

Tipik olarak model eğitiminin ileri geçişi, her katmandaki aktivasyonları hesaplar ve ilgili katmanın geri geçişi bitene kadar bunları GPU belleğinde tutar. Bu depolanan etkinleştirmeler, eğitim sırasında önemli miktarda GPU belleği tüketebilir. Etkinleştirme boşaltması, ileri geçişten sonra bu tensörleri CPU belleğine taşıyan ve daha sonra ihtiyaç duyulduğunda bunları GPU'ya geri getiren bir tekniktir. Bu yaklaşım, eğitim sırasında GPU bellek kullanımını önemli ölçüde azaltabilir.

PyTorch, etkinleştirme boşaltmayı desteklese de, uygulaması verimsizdir ve geriye doğru geçiş sırasında etkinleştirmeler CPU'dan geri alınırken GPU'ların boşta kalmasına neden olabilir. Bu, etkinleştirme boşaltmayı kullanırken önemli performans düşüşüne neden olabilir.

SMP v2, eğitim performansını artırabilecek optimize edilmiş bir etkinleştirme boşaltma algoritması sunar. SMP'nin uygulaması, etkinleştirmeleri GPU'da ihtiyaç duyulmadan önce önceden getirerek boşta kalma süresini azaltır.

SMP, PyTorch'un API'leri üzerine kurulduğundan, optimize edilmiş etkinleştirme boşaltmanın etkinleştirilmesi yalnızca birkaç satırlık kod değişikliği gerektirir. İlgili konfigürasyonları eklemeniz yeterli (sm_activation_offloading ve activation_loading_horizon parametreler) ve bunları eğitim senaryonuza ekleyin.

SMP yapılandırması aşağıdaki gibidir:

{
"activation_loading_horizon": 2,
"sm_activation_offloading": True
}

Eğitim betiğinde aşağıdaki kodu kullanın:

import torch.sagemaker as tsm
tsm.init()

# Native PyTorch module for activation offloading
from torch.distributed.algorithms._checkpoint.checkpoint_wrapper import (
apply_activation_checkpointing,
offload_wrapper,
)

model = FSDP(...)

# Activation offloading requires activation checkpointing.
apply_activation_checkpointing(
model,
check_fn=checkpoint_tformer_layers_policy,
)

model = offload_wrapper(model)

Aktivasyon boşaltmaya yönelik açık kaynaklı PyTorch kontrol noktası araçları hakkında daha fazla bilgi edinmek için bkz. checkpoint_wrapper.py PyTorch GitHub deposundaki komut dosyası ve Etkinleştirme Kontrol Noktası Belirleme PyTorch blog yazısında Pytorch Dağıtılmış ile TorchMultimodal'da Multimodal Temel Modellerini Ölçeklendirme. SMP'nin optimize edilmiş etkinleştirme boşaltma uygulaması hakkında daha fazla bilgi edinmek için bkz. aktivasyon boşaltma belgelerimizin bir bölümü.

Hibrit parçalama, SMDDP ve etkinleştirme boşaltmanın ötesinde SMP, büyük model eğitimi iş yükünüzü hızlandırabilecek ek optimizasyonlar sunar. Buna optimize edilmiş aktivasyon kontrol noktası belirleme, gecikmeli parametre başlatma ve diğerleri dahildir. Daha fazla bilgi edinmek için bkz. çekirdek özellikleri belgelerimizin bir bölümü.

Sonuç

Veri kümeleri, model boyutları ve eğitim kümeleri büyümeye devam ettikçe, verimli dağıtılmış eğitim, zamanında ve uygun maliyetli model ve ürün teslimi için giderek daha kritik hale geliyor. SageMaker modeli paralel kitaplığının en son sürümü, kod değişikliğini azaltarak ve PyTorch FSDP API'leriyle uyum sağlayarak, tensör paralelliği ve eğitim süresini %20'ye kadar azaltabilen optimizasyonlar yoluyla büyük kümeler üzerinde eğitime olanak sağlayarak bunu başarmanıza yardımcı olur.

SMP v2'yi kullanmaya başlamak için bölümümüze bakın. belgeleme ve örnek defterler.


Yazarlar Hakkında

Robert Van Düsen Amazon SageMaker'da Kıdemli Ürün Yöneticisidir. Derin öğrenme eğitimine yönelik çerçeveleri, derleyicileri ve optimizasyon tekniklerini yönetmektedir.

Luis Quintela AWS SageMaker modeli paralel kitaplığı için Yazılım Geliştirici Yöneticisidir. Boş zamanlarında SF Bay Area'da Harley'ini sürerken bulunabilir.

Gautama Kumar AWS AI Deep Learning'e sahip bir Yazılım Mühendisidir. Yapay zeka için araçlar ve sistemler oluşturma konusunda tutkulu. Boş zamanlarında bisiklete binmeyi ve kitap okumayı seviyor.

Rahul Huilgol Amazon Web Services'ta Dağıtılmış Derin Öğrenme alanında Kıdemli Yazılım Geliştirme Mühendisidir.

spot_img

En Son İstihbarat

spot_img