Zephyrnet Logosu

KT'nin Amazon SageMaker'ı kullanarak görüntü transformatörleri modeli için eğitim süresini kısaltma yolculuğu | Amazon Web Hizmetleri

Tarih:

KT Corporation Güney Kore'nin en büyük telekomünikasyon sağlayıcılarından biridir ve sabit hatlı telefon, mobil iletişim, internet ve yapay zeka hizmetleri dahil olmak üzere geniş bir hizmet yelpazesi sunmaktadır. KT'nin AI Food Tag'i, bilgisayarlı görme modelini kullanarak fotoğraflardaki gıdanın türünü ve besin içeriğini tanımlayan, AI tabanlı bir diyet yönetimi çözümüdür. KT tarafından geliştirilen bu görüş modeli, çeşitli gıdaların besin içeriğini ve kalori bilgilerini analiz etmek için büyük miktarda etiketlenmemiş görüntü verisi ile önceden eğitilmiş bir modele dayanmaktadır. AI Gıda Etiketi, diyabet gibi kronik hastalıkları olan hastaların diyetlerini yönetmelerine yardımcı olabilir. KT AWS'yi kullandı ve Amazon Adaçayı Yapıcı Bu AI Food Tag modelini öncekinden 29 kat daha hızlı eğitmek ve onu bir model damıtma tekniğiyle üretim dağıtımı için optimize etmek. Bu yazıda KT'nin SageMaker kullanarak model geliştirme yolculuğunu ve başarısını anlatıyoruz.

KT projesinin tanıtılması ve sorunun tanımlanması

KT tarafından önceden eğitilen AI Food Tag modeli, görüntü transformatörleri (ViT) mimarisini temel alıyor ve doğruluğu artırmak için önceki görüş modellerine göre daha fazla model parametresine sahip. Üretim için model boyutunu küçültmek amacıyla KT, doğruluk üzerinde önemli bir etki yaratmadan model parametrelerinin sayısını azaltmak amacıyla bir bilgi damıtma (KD) tekniği kullanıyor. Bilginin damıtılmasıyla önceden eğitilmiş modele denir. öğretmen modelive hafif bir çıktı modeli şu şekilde eğitilir: öğrenci modeli, aşağıdaki şekilde gösterildiği gibi. Hafif öğrenci modeli, öğretmene göre daha az model parametresine sahiptir; bu da bellek gereksinimlerini azaltır ve daha küçük, daha ucuz örneklerde dağıtım yapılmasına olanak tanır. Öğrenci, öğretmen modelinin çıktılarından öğrenerek daha küçük olsa bile kabul edilebilir doğruluğu korur.

Bilginin damıtılması için genel eğitim süreci

Öğretmen modeli KD sırasında değişmeden kalır, ancak öğrenci modeli, kaybı hesaplamak için etiket olarak öğretmen modelinin çıktı logitleri kullanılarak eğitilir. Bu KD paradigması ile hem öğretmenin hem de öğrencinin eğitim için tek bir GPU belleğinde olması gerekir. KT başlangıçta öğrenci modelini eğitmek için şirket içi ortamında iki GPU (A100 80 GB) kullandı, ancak süreç 40 dönemi kapsayacak şekilde yaklaşık 300 gün sürdü. Eğitimi hızlandırmak ve daha kısa sürede öğrenci modeli oluşturmak için KT, AWS ile ortaklık kurdu. Ekipler birlikte model eğitim süresini önemli ölçüde azalttı. Bu yazı ekibin nasıl kullandığını açıklıyor Amazon SageMaker Eğitimi, SageMaker Veri Paralellik Kitaplığı, Amazon SageMaker Hata Ayıklayıcısı, ve Amazon SageMaker Profil Oluşturucu Hafif bir AI Gıda Etiketi modelini başarıyla geliştirmek.

SageMaker ile dağıtılmış bir eğitim ortamı oluşturma

SageMaker Training, aşağıdaki diyagramda gösterildiği gibi, eğitim deneyimini basitleştirmek için bir dizi özellik ve araç sağlayan ve dağıtılmış bilgi işlemde faydalı olabilecek, AWS'de yönetilen bir makine öğrenimi (ML) eğitim ortamıdır.

Model, SageMaker Eğitimi ile dağıtılmış eğitim ortamı

SageMaker müşterileri ayrıca önceden yüklenmiş çeşitli derin öğrenme çerçeveleri ve model eğitimi için gerekli Linux, NCCL ve Python paketleriyle yerleşik Docker görüntülerine de erişebilir. Model eğitimi yürütmek isteyen veri bilimcileri veya makine öğrenimi mühendisleri, eğitim altyapısını yapılandırma veya Docker'ı yönetme ve farklı kitaplıkların uyumluluğunu yönetme yükü olmadan bunu yapabilirler.

1 günlük bir atölye çalışması sırasında, KT'nin AWS hesabında SageMaker'ı temel alan dağıtılmış bir eğitim yapılandırması kurabildik, SageMaker Dağıtılmış Veri Paralel (DDP) kitaplığını kullanarak KT'nin eğitim komut dosyalarını hızlandırabildik ve hatta iki ml kullanarak bir eğitim işini test edebildik. p4d.24xlarge örnekleri. Bu bölümde KT'nin AWS ekibiyle çalışma ve kendi modelini geliştirmek için SageMaker'ı kullanma deneyimini açıklıyoruz.

Konsept kanıtlama aşamasında, dağıtılmış eğitim sırasında AWS altyapısı için optimize edilmiş SageMaker DDP kitaplığını kullanarak eğitim işini hızlandırmak istedik. PyTorch DDP'den SageMaker DDP'ye geçiş yapmak için yalnızca torch_smddp paketleyin ve arka ucu şu şekilde değiştirin: smddp, aşağıdaki kodda gösterildiği gibi:

import smdistributed.dataparallel.torch.torch_smddp

dist.init_process_group(backend='smddp',

rank=args.rank,

world_size=args.world_size)

SageMaker DDP kitaplığı hakkında daha fazla bilgi edinmek için bkz. SageMaker'ın Veri Paralelliği Kütüphanesi.

SageMaker Debugger ve Profiler ile yavaş eğitim hızının nedenlerini analiz etme

Bir eğitim iş yükünü optimize etmenin ve hızlandırmanın ilk adımı, darboğazların nerede oluştuğunu anlamayı ve teşhis etmeyi içerir. KT'nin eğitim işi için veri yükleyicinin yinelemesi, ileri geçiş ve geri geçiş başına eğitim süresini ölçtük:

1 yineleme süresi – veri yükleyici: 0.00053 sn, ileri: 7.77474 sn, geri: 1.58002 kuru
2 yineleme süresi – veri yükleyici: 0.00063 sn, ileri: 0.67429 sn, geri: 24.74539 kuru
3 yineleme süresi – veri yükleyici: 0.00061 sn, ileri: 0.90976 sn, geri: 8.31253 kuru
4 yineleme süresi – veri yükleyici: 0.00060 sn, ileri: 0.60958 sn, geri: 30.93830 kuru
5 yineleme süresi – veri yükleyici: 0.00080 sn, ileri: 0.83237 sn, geri: 8.41030 kuru
6 yineleme süresi – veri yükleyici: 0.00067 sn, ileri: 0.75715 sn, geri: 29.88415 kuru

Her yineleme için standart çıktıdaki süreye baktığımızda, geri geçişin çalışma süresinin yinelemeden yinelemeye önemli ölçüde dalgalandığını gördük. Bu değişiklik olağandışıdır ve toplam eğitim süresini etkileyebilir. Bu tutarsız eğitim hızının nedenini bulmak için, öncelikle SageMaker Training'deki eğitim işlerinde hata ayıklamanıza ve yönetilen eğitim platformu gibi kaynakların durumunu görüntülemenize olanak tanıyan Sistem Monitörü'nü (SageMaker Hata Ayıklayıcı Kullanıcı Arayüzü) kullanarak kaynak darboğazlarını belirlemeye çalıştık. Belirli bir saniye içinde CPU, GPU, ağ ve G/Ç.

SageMaker Hata Ayıklayıcı Kullanıcı Arayüzü, bir eğitim işindeki darboğazların belirlenmesine ve teşhis edilmesine yardımcı olabilecek ayrıntılı ve temel veriler sağlar. Özellikle CPU kullanım çizgi grafiği ve bulut sunucusu başına CPU/GPU kullanımı ısı haritası tabloları gözümüze çarptı.

CPU kullanım çizgisi grafiğinde bazı CPU'ların %100 kullanıldığını fark ettik.

CPU dar boğazı olan CPU kullanımı çizgi grafiği

Isı haritasında (koyu renklerin daha yüksek kullanımı gösterdiği yer), birkaç CPU çekirdeğinin eğitim boyunca yüksek kullanıma sahip olduğunu ancak GPU kullanımının zaman içinde tutarlı bir şekilde yüksek olmadığını fark ettik.

CPU dar boğazıyla CPU kullanımı ısı haritası

Buradan yavaş eğitim hızının nedenlerinden birinin CPU darboğazı olduğundan şüphelenmeye başladık. CPU darboğazına neden olan herhangi bir şey olup olmadığını görmek için eğitim komut dosyası kodunu inceledik. En şüpheli kısım, değerinin büyük olmasıydı. num_workers veri yükleyicide CPU kullanımını azaltmak için bu değeri 0 veya 1 olarak değiştirdik. Daha sonra eğitim işini tekrar yürüttük ve sonuçları kontrol ettik.

Aşağıdaki ekran görüntüleri CPU darboğazını hafiflettikten sonra CPU kullanım çizgi grafiğini, GPU kullanımını ve ısı haritasını göstermektedir.

CPU darboğazını giderdikten sonraki CPU kullanım çizgi grafiği

CPU kullanımı CPU darboğazını hafiflettikten sonra GPU kullanımıCPU darboğazını hafiflettikten sonra CPU kullanımı ısı haritası

Basitçe değiştirerek num_workersCPU kullanımında önemli bir düşüş ve GPU kullanımında genel bir artış gördük. Bu, eğitim hızını önemli ölçüde artıran önemli bir değişiklikti. Yine de GPU kullanımını nerede optimize edebileceğimizi görmek istedik. Bunun için SageMaker Profiler'ı kullandık.

SageMaker Profiler, eğitim komut dosyalarında GPU ve CPU kullanım ölçümlerinin ve GPU/CPU'nun çekirdek tüketiminin izlenmesi de dahil olmak üzere, işlemlere göre kullanıma ilişkin görünürlük sağlayarak optimizasyon ipuçlarının belirlenmesine yardımcı olur. Kullanıcıların hangi işlemlerin kaynakları tükettiğini anlamalarına yardımcı olur. İlk olarak SageMaker Profiler'ı kullanmak için şunları eklemeniz gerekir: ProfilerConfig aşağıdaki kodda gösterildiği gibi SageMaker SDK'yı kullanarak eğitim işini çağıran işleve:

from sagemaker import ProfilerConfig, Profiler

from sagemaker.debugger import (ProfilerRule, rule_configs)

rules=[ProfilerRule.sagemaker(rule_configs.ProfilerReport())]

profiler_config = ProfilerConfig(profile_params = Profiler(cpu_profiling_duration=3600))

from sagemaker.pytorch import PyTorch

region_name = 'us-west-2'

image_uri=f'763104351884.dkr.ecr.{region_name}.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker'

estimator = PyTorch(

entry_point='train.py',

source_dir='src',

role=role,

image_uri=image_uri,

instance_count=4,

instance_type='ml.p4d.24xlarge',

distribution={'smdistributed': {'dataparallel': {'enabled': True}}},

profiler_config=profiler_config,

hyperparameters=hyperparameters,

sagemaker_session=sagemaker_session,

)

SageMaker Python SDK'sında aşağıdakileri ekleme esnekliğine sahipsiniz: annotate SageMaker Profiler'ın eğitim komut dosyasında profil oluşturma gerektiren kodu veya adımları seçmesine yönelik işlevler. Aşağıda, eğitim komut dosyalarında SageMaker Profiler için bildirmeniz gereken kodun bir örneği bulunmaktadır:

import smppy

SMProf = smppy.SMProfiler.instance()

config = smppy.Config()

config.profiler = {

"EnableCuda": "1",

}

SMProf.configure(config)

SMProf.start_profiling()

…

with smppy.annotate("Forward"):

student_out = student_model(inp)

with smppy.annotate("Backward"):

loss.backward()

…

SMProf.stop_profiling()

Yukarıdaki kodu ekledikten sonra, eğitim komut dosyalarını kullanarak bir eğitim işi çalıştırırsanız, eğitim belirli bir süre çalıştıktan sonra GPU çekirdeği (aşağıdaki şekilde gösterildiği gibi) tarafından tüketilen işlemler hakkında bilgi alabilirsiniz. KT'nin eğitim senaryolarını bir dönem boyunca çalıştırdık ve aşağıdaki sonuçları elde ettik.

Tüm GPU Çekirdeklerinin Harcadığı Süre(1)

SageMaker Profiler sonuçları arasında GPU çekirdeğinin ilk beş işlem tüketim süresini kontrol ettiğimizde, KT eğitim komut dosyası için en fazla zamanın genel bir matris çarpma (GEMM) işlemi olan matris çarpımı işlemi tarafından tüketildiğini gördük. GPU'larda. SageMaker Profiler'dan gelen bu önemli bilgilerle, bu işlemleri hızlandırmanın ve GPU kullanımını iyileştirmenin yollarını araştırmaya başladık.

Eğitim süresini hızlandırmak

Matris çarpımının hesaplama süresini kısaltmanın çeşitli yollarını inceledik ve iki PyTorch işlevi uyguladık.

ZeroRedundancyOptimizer ile parça iyileştirici durumları

Eğer bakarsanız Sıfır Artıklık Optimize Edici (ZeRO)DeepSpeed/ZeRO tekniği, modelin kullandığı bellekteki fazlalıkları ortadan kaldırarak büyük bir modelin daha iyi eğitim hızıyla verimli bir şekilde eğitilmesine olanak tanır. Sıfır Artıklık Optimize Edici PyTorch'ta, Dağıtılmış Veri Paralel'deki (DDP) bir işlem başına bellek kullanımını azaltmak için optimize edici durumunu parçalama tekniğini kullanır. DDP, tüm iyileştirici kopyalarının aynı parametreler ve degrade değerleri üzerinde yinelenmesi için geri geçişte senkronize degradeler kullanır, ancak tüm model parametrelerine sahip olmak yerine her iyileştirici durumu, bellek kullanımını azaltmak için yalnızca farklı DDP işlemleri için parçalama yoluyla korunur.

Bunu kullanmak için mevcut Optimize Edicinizi optimizer_class ve bir ZeroRedundancyOptimizer model parametrelerinin geri kalanı ve öğrenme oranı parametre olarak kullanılır.

student_optimizer = ZeroRedundancyOptimizer(

student_model.parameters(),

optimizer_class=torch.optim.AdamW,

lr=initial_lr

)

Otomatik karışık hassasiyet

Otomatik karma hassasiyet (AMP) bazı işlemler için torch.float32 veri türünü kullanır ve meşale.bfloat16 Hızlı hesaplama kolaylığı ve daha az bellek kullanımı için diğerleri için torch.float16 veya torch.float16. Özellikle, derin öğrenme modelleri hesaplamalarında kesirli bitlerden ziyade üslü bitlere karşı genellikle daha duyarlı olduğundan torch.bfloat32, torch.float16'nin üslü bitlerine eşdeğerdir ve minimum kayıpla hızlı bir şekilde öğrenmelerine olanak tanır. torch.bfloat100 yalnızca ml.p4d.24xlarge, ml.p4de.24xlarge ve ml.p5.48xlarge gibi AXNUMX NVIDIA mimarisi (Amper) veya üzeri örneklerde çalışır.

AMP'yi uygulamak için şunları beyan edebilirsiniz: torch.cuda.amp.autocast yukarıdaki kodda gösterildiği gibi eğitim komut dosyalarında ve beyan edin dtype torch.bfloat16 olarak.

with torch.cuda.amp.autocast(dtype="torch.bfloat16"):

teacher = teacher_model(input_data)

student = student_model(input_data)

loss = loss(teacher, student, target)

loss.requires_grad_(True)

loss.backward()

student_optimizer.step()

student_optimizer.zero_grad(set_to_none=True)

SageMaker Profiler'daki sonuçlar

İki işlevi eğitim komut dosyalarına uyguladıktan ve bir dönem boyunca bir eğitim işini tekrar çalıştırdıktan sonra, SageMaker Profiler'da GPU çekirdeği için ilk beş işlem tüketim süresini kontrol ettik. Aşağıdaki şekil sonuçlarımızı göstermektedir.

Tüm GPU Çekirdeklerinin Harcadığı Süre(2)

İki Torch fonksiyonunun uygulanmasından önce listenin başında yer alan GEMM operasyonunun ilk beş operasyondan kaybolduğunu ve yerini genellikle dağıtılmış eğitimde meydana gelen ReduceScatter operasyonunun aldığını görebiliyoruz.

KT damıtılmış modelinin eğitim hızı sonuçları

İki Torch fonksiyonunun uygulanmasından kaynaklanan bellek tasarruflarını hesaba katmak için eğitim toplu boyutunu 128 daha artırdık ve sonuçta 1152 yerine 1024 son toplu iş boyutu elde ettik. Son öğrenci modelinin eğitimi 210 günde 1 dönem çalıştırabildi ; KT'nin dahili eğitim ortamı ile SageMaker arasındaki eğitim süresi ve hızlanma aşağıdaki tabloda özetlenmiştir.

Eğitim Ortamı Eğitim GPU spesifikasyonu. GPU sayısı Eğitim Süresi (saat) Dönem Dönem başına saat indirgeme oranı
KT'nin dahili eğitim ortamı A100 (80 GB) 2 960 300 3.20 29
Amazon Adaçayı Yapıcı A100 (40 GB) 32 24 210 0.11 1

AWS'nin ölçeklenebilirliği, eğitim işini şirket içinde 29 yerine 32 GPU kullanmamıza kıyasla 2 kat daha hızlı tamamlamamıza olanak sağladı. Sonuç olarak, SageMaker'da daha fazla GPU kullanmak, genel eğitim maliyetlerinde hiçbir fark yaratmadan eğitim süresini önemli ölçüde azaltacaktı.

Sonuç

KT'nin Yakınsama Teknoloji Merkezi'ndeki AI2XL Laboratuvarı'ndan Park Sang-min (Vision AI Hizmet Teknolojisi Ekip Lideri), AI Food Tag modelini geliştirmek için AWS ile yapılan iş birliği hakkında şunları söyledi:

“Son zamanlarda görüş alanında transformatör tabanlı modellerin sayısı arttıkça model parametreleri ve gerekli GPU belleği de artıyor. Bu sorunu çözmek için hafif teknoloji kullanıyoruz ve bir kez öğrenmek yaklaşık bir ay kadar çok zaman alıyor. AWS ile yapılan bu PoC aracılığıyla, SageMaker Profiler ve Debugger'ın yardımıyla kaynak darboğazlarını tespit edebildik, bunları çözebildik ve ardından dört ml.p4d'de optimize edilmiş model koduyla eğitimi yaklaşık bir günde tamamlamak için SageMaker'ın veri paralellik kitaplığını kullanabildik. 24 kat büyük örnekler.”

SageMaker, Sang-min'in ekibinin model eğitimi ve geliştirmede haftalarca harcayacağı zamandan tasarruf etmesine yardımcı oldu.

AWS ve SageMaker ekibi, vizyon modeli üzerindeki bu iş birliğine dayanarak, SageMaker yeteneklerini uygulayarak model geliştirmeyi ve hizmet verimliliğini artırmak için çeşitli AI/ML araştırma projelerinde KT ile işbirliği yapmaya devam edecek.

SageMaker'daki ilgili özellikler hakkında daha fazla bilgi edinmek için aşağıdakilere göz atın:


yazarlar hakkında

genç joon choiAI/ML Expert SA, geliştirici, mimar ve veri bilimcisi olarak üretim, yüksek teknoloji ve finans gibi çeşitli sektörlerde kurumsal BT deneyimine sahiptir. Özellikle hiperparametre optimizasyonu ve etki alanı uyarlaması gibi konularda makine öğrenmesi ve derin öğrenme üzerine araştırmalar yürüttü, algoritmalar ve makaleler sundu. AWS'de çeşitli sektörlerde AI/ML konusunda uzmanlaşarak dağıtılmış eğitim/büyük ölçekli modeller ve MLOps oluşturmak için AWS hizmetlerini kullanarak teknik doğrulama sağlıyor. AI/ML ekosisteminin genişlemesine katkıda bulunmayı amaçlayan mimariler önerir ve inceler.

Jung Hoon Kim AWS Kore'nin bir SA hesabıdır. Yüksek teknoloji, üretim, finans ve kamu sektörü gibi çeşitli sektörlerdeki uygulama mimarisi tasarımı, geliştirme ve sistem modelleme deneyimlerine dayanarak, kurumsal müşteriler için AWS Bulut yolculuğu ve AWS'de iş yükü optimizasyonu üzerinde çalışmaktadır.

Kaya Sakong'u KT Ar-Ge'de araştırmacıdır. Çeşitli alanlarda vizyon yapay zekası için araştırma ve geliştirme çalışmaları yürütmüş ve esas olarak yüzle ilgili yüz nitelikleri (cinsiyet/gözlük, şapka vb.)/yüz tanıma teknolojisini yürütmüştür. Şu anda görsel modeller için hafif teknoloji üzerinde çalışıyor.

Manoj Ravi Amazon SageMaker'ın Kıdemli Ürün Yöneticisidir. Yeni nesil yapay zeka ürünleri geliştirme konusunda tutkulu ve büyük ölçekli makine öğrenimini müşteriler için kolaylaştıracak yazılım ve araçlar üzerinde çalışıyor. Haas İşletme Fakültesi'nden MBA derecesine ve Carnegie Mellon Üniversitesi'nden Bilgi Sistemleri Yönetimi alanında yüksek lisans derecesine sahiptir. Manoj, boş zamanlarında tenis oynamaktan ve manzara fotoğrafçılığı yapmaktan hoşlanıyor.

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.

spot_img

En Son İstihbarat

spot_img