İletişimi birinci sınıf vatandaş yapmak: ağı çipin içine gömen MTIA 300
MTIA 300: Meta’s First Training Chip with Built-in NICs and Communication-Offloading Engines
MTIA 300, Meta'nın kendi geliştirdiği eğitim ve çıkarım hızlandırıcı ailesinin, sıralama ve öneri modellerini eğitmeye göre optimize edilmiş ilk üyesi. Yazının çıkış noktası şu gözlem: öneri modelleri büyük dil modellerinden farklı olarak devasa kayan nokta işlem gücüne değil, hızlandırıcılar arası hızlı ve verimli iletişime muhtaç. Gömme tabloları (embedding tables) modelin parametrelerinin %99'undan fazlasını tutabiliyor; bu da yüzlerce hızlandırıcı arasında sık AllReduce, AllToAll ve AllGather işlemleri gerektiriyor.
GPU'larda bu iletişim işlemleri (NCCL gibi kütüphanelerle) eğitim hesabıyla aynı kaynakları (streaming multiprocessor'ları) paylaşıyor; ikisi birlikte koşunca ikisi de yavaşlıyor ve pahalı donanım boşta kalıyor. Meta'nın çözümü iki katmanlı. Birincisi: ağ arayüzünü çip paketinin içine koymak: iki ağ chiplet'i, toplam 12 adet 800 Gbps RDMA NIC ile 1,2 TB/s G/Ç bant genişliği sağlıyor ve PCIe'ye hiç çıkmıyor. Aynı 12 NIC hem rack içi (16 düğüm, 1 TB/s'ye kadar) hem raflar arası (200 GB/s) iletişim için esnekçe bölünebiliyor. İkincisi: iletişimi hesap ızgarasından ayırmak. Çip, 12×6'lık işlem elemanı ızgarasının yanında iletişimi bağımsız yürüten 16 ayrı mesaj motoru taşıyor.
Donanımla birlikte yazılım da (HCCL iletişim kütüphanesi) sıfırdan, donanımla birlikte tasarlanmış.
Öne çıkanlar
- Darboğazı tanımak her şeyin başı: öneri modellerinde sorun FLOPS değil, iletişim.
- İletişim ve hesap aynı kaynağı paylaşırsa birbirini yavaşlatır; ayırmak ikisini de hızlandırır.
- Ağ yapılandırması yeniden ayarlanarak rack içi/rack arası bant dengesi donanımı değiştirmeden uyarlanabiliyor.
- Donanım ve iletişim kütüphanesinin birlikte tasarlanması (co-design) ana strateji.
Neden önemli?
Genel amaçlı donanım her iş yükünde iyi olmak zorundadır; belirli bir iş yükü için tasarım yapınca kaynak çakışmalarını mimariyle ortadan kaldırabilirsin. Bu ilke yazılımda da geçerli: hesabı ve I/O'yu aynı thread havuzunda yarıştırma.
Sende karşılığı
Donanım tasarlamayacaksın ama aynı deseni bir Spring Boot servisinde tanırsın: CPU ağırlıklı işi ve ağ bekleyen işi aynı thread havuzuna koyarsan biri diğerini aç bırakır. Ayrı havuzlar (@Async ile ayrı executor) ya da sanal thread'ler bu ayrımı yapar. Daha genel ders: “yavaş” dediğin sistemde önce hangi kaynağın paylaşıldığını bul.
Sözlük
- collective communication toplu iletişim
- AllReduce, AllToAll gibi, birçok hızlandırıcının birlikte katıldığı veri paylaşım işlemleri.
- RDMA uzaktan doğrudan bellek erişimi
- Veriyi işlemciyi yormadan bir makinenin belleğinden diğerinin belleğine taşıyan ağ tekniği.
- embedding table gömme tablosu
- Kategorik varlıkların (kullanıcı, reklam) vektörlerini tutan büyük arama tablosu.
- co-design birlikte tasarım
- Donanımı ve onu kullanan yazılımı birbirine göre aynı anda tasarlama yaklaşımı.