Hibrit Bulutta Büyük Ölçekli AI Çıkarımının Çalıştırılması

- Roblox'un yapay zeka ve özellikle üretken yapay zeka kullandığı alanlar, son birkaç yılda hızla büyümüştür.
- Bu düzeyde yapay zeka araçlarını desteklemek için gerekli altyapıyı oluşturmak ve optimize etmek üzere üç aşamalı bir sürecin son aşamasına geldik.
- Büyük ölçekte makine öğrenimi çıkarımını destekleyebilecek bir hibrit bulut altyapısı oluşturmak için attığımız adımları paylaşıyoruz.
Geçen haftaki RDC'de, en son AI inkübasyon projemizi duyurduk: üretken yaratımı desteklemek için çok modlu bir 3D temel model geliştirmek. Milyonlarca kişinin kullandığı, her zaman açık, sürükleyici bir 3D küresel platform için AI'yı desteklemek, muazzam miktarda hesaplama gücü gerektirir. 2023'ün başlarında, 50'den az makine öğrenimi (ML) çıkarım boru hattını destekliyorduk. Bugün, altyapımız bu iş akışlarından yaklaşık 250'sini destekliyor. Tüm bu modelleri çalıştırmak için iki veri merkezimiz ve hibrit bulut altyapımızda on binlerce CPU ve binden fazla GPU bulunduruyoruz. Ve henüz işimiz bitmedi.
Daha önce, içerik üreticilerimiz için üretken yapay zeka hakkında nasıl düşündüğümüzü, Roblox'taki kullanıcıların güvenliğini sağlamak için yapay zekayı nasıl kullandığımızı ve yapay zeka çevirilerinin dünyanın dört bir yanındaki insanların iletişim kurmasına nasıl yardımcı olduğunu paylaşmıştık. Ancak bunlar sadece birkaç örnek: Üretimde yaklaşık 250 model ile, Roblox'taki neredeyse her etkileşim bir şekilde yapay zeka ile destekleniyor. Bir kişi Roblox'a ilk kez geldiğinde ve hangi deneyime katılacağını ararken, yapay zeka öneri ve arama sistemlerimiz aracılığıyla devreye giriyor. Ve o kişi bir deneyim seçip oynat düğmesine bastığında, eşleştirme algoritmamız katılmak için en iyi sunucuyu belirliyor.
Milyonlarca içerik oluşturucu, üretken AI araçlarımızın gücüne zaten erişebiliyor. Assistant ile, basit komutlar kullanarak senaryolar ve eylemler oluşturabilir ve deneyim oluşturma sürecini hızlandırabilirler. Texture ve Material Generator araçlarımızla, nesnelerin görünümünü ve stilini hızla değiştirebilir ve üzerinde çalışabilirler. Ayrıca, avatar oluşturma sürecini basitleştiren ve içerik oluşturucuların saatlerce süren çalışmalardan tasarruf etmesini sağlayan Avatar Auto Setup'ın yakın zamanda piyasaya sürülmesiyle, 4D üretken yapay zeka çağına giriyoruz. Ağustos 2024 itibarıyla, Roblox'ta yayınlanan kullanıcı tarafından oluşturulan içerik (UGC) avatar bedenlerinin yaklaşık %8'i Avatar Auto Setup kullanılarak üretildi.
Şu anda, birkaç yıldır devam eden üç aşamalı sürecin son aşamasına giriyoruz. Bu yolculuk 2021'in sonlarında başladı. O dönemde, birleşik bir Roblox AI platformunun olmaması, mühendislik ekiplerinin kendi mini platformlarını oluşturmalarına ve birbirinden farklı çerçeveler seçmelerine neden oldu. Avatar Marketplace, ana sayfa ve arama gibi kritik bileşenleri geliştiren ekiplerin her birinin kendi özel özellik mühendisliğini oluşturduğunu gördük. Ekipler, merkezi bir özellik deposundan yararlanmak yerine, geçici çözümler oluşturuyordu. Ayrıca, her ekip, çekirdek bir platformun desteği olmadan kendi optimizasyonlarını geliştirmek ve çıkarım ölçeklendirme zorluklarını bağımsız olarak çözmekle yükümlüydü. Bu parçalı yaklaşım, süreçlerimizi düzene sokmak ve genel olarak verimliliği artırmak için uyumlu, merkezi bir platforma acil ihtiyaç olduğunu ortaya koydu.
Birinci Aşama: ML için Güçlü Bir Temel Oluşturma
Not defterleri, iş akışları, çevrimdışı denemeler ve model sunumu dahil olmak üzere makine öğrenimi için temel yapı taşlarını bir araya getiren Kubeflow'u erken bir aşamada benimsedik. Hala bir özellik deposuna ihtiyaç duyulduğu için başlangıçta üçüncü taraf bir çözümü benimsedik. Roblox'taki mühendisler için makine öğrenimini daha erişilebilir hale getirmek amacıyla, bir modelin üretim ortamına dağıtılmasının karmaşıklığını daha da azaltan bir Python kütüphanesi olan roblox-ml'i geliştirdik.

Model yinelemesi için optimize edilmiş bir geliştirme ortamı sağlamak amacıyla Jupyter notebook'ları kullandık; sunucular, gerekli veri erişimi ve GPU kaynakları için yapılandırıldı. Bir eğitim işini ölçeklendirmek veya bir modeli yeniden eğitmek için düzenli olarak çalıştırmak, genellikle bir iş akışı yazmamızı gerektiriyordu. roblox-mlkütüphanemiz, mühendislerin Docker görüntüleri oluşturmaya gerek kalmadan çalışma zamanı ortamının ve kaynak kodunun anlık görüntüsünü alarak, önceliklere göre hesaplama kaynaklarını seçerek, bildirimleri ayarlayarak ve kimlik doğrulamayı yöneterek notebook kodunu Kubeflow boru hatlarına kolayca dönüştürmelerini sağladı.
Modeller, ancak doğru zamanda doğru özelliklere sahip olduklarında etkilidir. Özellik depomuz, yeni özellikleri tanımlama sürecini basitleştirirken, 100'den fazla özellik hizmeti arasında 900'den fazla özelliğin paylaşılmasını teşvik etti. Bu, özellik koleksiyonumuz büyüdükçe ekiplerin yeni modelleri daha hızlı oluşturup dağıtmasına olanak tanıdı.
ML boru hattı platformumuz işlevsel ve istikrarlı hale geldiğinde, kişiselleştirme, arama ve Marketplace'in öncülüğünde çevrimiçi çıkarım desteğine yönelik talebin arttığını gördük. ML operasyonlarını olgunlaştırmak için ara adım olarak toplu çıkarım önermekle birlikte, gerçek zamanlı çıkarımları desteklemek üzere model kayıt defterimizi ve hizmet platformumuzu geliştirdik. Model kayıt defterimiz sayesinde Roblox mühendisleri, roblox-ml adresini kullanarak modelleri yükleyip indirebilir. Bu modeller, izlenebilirliği, geri alma işlemlerini ve A/B testlerini kolaylaştırmak için etiketlenir ve otomatik olarak sürümlenir. Örneğin, kişiselleştirme modellerimiz her gün eğitilir ve devreye alınır; ayrıca genellikle yaklaşık 20 A/B testini paralel olarak yürütürüz. Hizmet platformumuz için, güçlü performansı ve hem GPU'ları hem de CPU'ları kullanan çoklu ML çerçevelerini desteklemesi nedeniyle, temel model hizmet çalışma zamanı olarak Triton Inference Server ile birlikte KServe'i kullandık.
İster toplu ister çevrimiçi olarak çalışsın, Roblox'taki modeller yayınlanmadan önce kapsamlı testlerden geçer. Bu testler arasında çevrimdışı deneyler, gölge testleri ve A/B testleri yer alır. Yayınlandıktan sonra modeller, hem operasyonel olarak (ör. çıkarım gecikmesi) hem de doğruluk açısından beklendiği gibi çalıştığından emin olmak için sürekli olarak izlenir. Güvenlik ve nezakete olan bağlılığımızın bir parçası olarak, insan moderatörler de çıkarımlarda bildirilen tüm uyuşmazlıkları değerlendirir; bu, kritik kararları doğru bir şekilde almamızı sağlar ve modellerimiz için eğitim veri setini iyileştirmeye yardımcı olur.

İkinci Aşama: Çıkarımın Ölçeklendirilmesine Hazırlık
2023'ün başlarında, üretken yapay zekanın Roblox'ta yaratıcılığı hızlandırma konusunda muazzam bir potansiyeli olduğunu gördük. Bu potansiyelden tam olarak yararlanmak için, 2023 yılının büyük bir bölümünü makine öğrenimi eğitimi ve çıkarım altyapımızın performansını ve verimliliğini optimize etmekle geçirdik. Bu optimizasyonlar sayesinde, CLIP gömme oluşturma işlemlerinin hesaplama maliyetini önemli ölçüde azalttık. İlk olarak, büyük veri kümeleri üzerinde eğitim yapılabilmesini ve milyarlarca parametreye sahip modellerin birden fazla işçi düğümünde çalıştırılabilmesini sağlamak için dağıtılmış eğitim sistemlerimizi genişlettik.
Dağıtık bir iş akışı oluşturmaya başladığımızda, çevrimdışı çıkarım için mevcut kurulumumuzun uzun vadede gördüğümüz büyüme hızını destekleyemeyeceğini fark ettik. İlk kurulumumuz, giriş ve çıkış verilerinin sıralı olduğu gerçek zamanlı çıkarım için tasarlanmıştı. Bu kurulum, ilk çalışmalarımızda iyi sonuç verse de, görev paralelliğini veya çok aşamalı işlemeyi kolayca desteklemiyordu ve şu anda ihtiyaç duyduğumuz ölçeği destekleyecek kadar kaynak verimli de değildi. Ayrıca, mühendislerin kendi veri parçalama ve hata işleme mantıklarını yazmaları gerekiyordu ve bu, çıkarım ihtiyaçlarımız arttıkça giderek daha fazla zaman almaya başladı.
Bu zorlukları aşmak için, toplu çıkarım iş yüklerini kolayca ölçeklendirmeyi sağlayan açık kaynaklı bir hesaplama çerçevesi olan Ray desteğini ekledik. Toplu çıkarım için Ray tabanlı dağıtılmış bir görev boru hattı oluşturarak, kaynak kullanımını optimize edebildik, çok aşamalı işlemeyi mümkün kıldık ve sağlam görev paralelliği ile daha yüksek hata toleransı sağladık. Ayrıca, Ray Data kütüphanesi mühendislerin sadece birkaç satırda akışlı yürütme özelliğine sahip bir boru hattı tanımlamasına olanak tanıyarak, geliştiricilerin hızını ve verimliliğini artırmaya yardımcı oluyor. Şimdiye kadar toplu çıkarım için Ray'i kullanarak muazzam verimlilik artışları elde ettik.
Çıkarım ihtiyaçlarımız artmaya devam ettikçe, tüm CPU çıkarımlarımızı kendi veri merkezlerimize taşıdık; bu da gecikme süresi ve gizlilik ayarları üzerinde daha doğrudan kontrol sahibi olmamızı sağladı. Günlük 79,5 milyon aktif kullanıcımız (30 Haziran 2024 itibarıyla) için her gün yaklaşık 1 milyar kişiselleştirme isteği işliyoruz. Bu iş yükünü kendi veri merkezlerimize taşımak, kullanıcı deneyiminden ödün vermeden verimliliğimizi korumamıza yardımcı oldu. Çıkarım maliyetlerinden tasarruf etmek için birçok sistem istekleri önbelleğe alır; ancak birçok kullanıcı Roblox ana sayfasını günde birkaç kez ziyaret ettiği için bu, önerilerin güncelliğini yitirmesine yol açardı. Bu, verimliliğimizi de artırdı ve çıkarımın nerede çalıştırılacağını daha iyi optimize etmemizi ve iş yüklerini dağıtarak gerekli hesaplama kaynaklarını azaltmamızı sağladı.
Büyümeye devam ederken, yüksek verim, düşük gecikme süresi ve maliyet verimliliğini destekleyebilecek ve aynı zamanda çeşitli hizmetler için hızlı yinelemelere olanak tanıyacak özel bir özellik deposu çözümüne ihtiyaç duyduğumuzu fark ettik. Mevcut üçüncü taraf çözümleri bu gereksinimleri karşılamıyordu, bu nedenle açık kaynaklı Feast projesini temel alarak kendi özel özellik depomuzu geliştirdik. Özellik depomuz, hem toplu iş hem de akış özellikleri için dönüşümleri tanımlamak üzere özel bir alana özgü dil sağladı. Flink, mümkün olan en güncel bilgileri içermesi gereken modeller için kritik öneme sahip olan gerçek zamanlı özellikleri etkinleştirmek üzere akış işleme motoru olarak benimsendi. Bunun tam tersi uçta ise, dağıtık bir ortamda Roblox oyun motorunu yeniden çalıştırarak çok sayıda 3D varlığın toplu işlenmesinden türetilmesi gereken özellikler yer alıyordu. Özellik depomuz şu anda yaklaşık 30 milyar kaydı içe alıyor ve günde yaklaşık 70 milyar kaydı 50 ms'lik bir P99 gecikme süresiyle sunuyor; ayrıca 100'den fazla özellik hizmetini destekliyor.
Modellerin gömülü özellikleri kullanımı da, ister NLP, ister bilgisayar görüşü veya öneri sistemleri yoluyla olsun, anlamsal anlayışa yönelik artan taleple birlikte hızla büyüdü. Bu durum, vektörleri yüksek boyutlu noktalar olarak verimli bir şekilde depolamak ve geri getirmek için bir vektör veritabanı oluşturmamıza neden oldu. Vektör veritabanı, çok modlu arama ve içerik ihlali tespiti gibi yetenekleri desteklemek için hızlı en yakın komşu aramalarına olanak sağladı.
ML modellerini kullanan ekip sayısı arttıkça, ölçek ekonomisi yaratmak ve mühendislerin daha hızlı başarıya ulaşmasına yardımcı olmak istedik, bu nedenle kendi ground truth ekibimizi kurduk. Bu ekip, mühendislerin kendi veri kümesi üretim boru hattını tasarlamasına, insan değerlendiriciler kullanarak verileri eğitip doğrulamasına ve yüksek kaliteli veriler sunmasına yardımcı oluyor. Bu, veri boru hattı oluşturma ve veri kümelerini doğrulama sürecini, ayrıca verilerin sunulduğu, izlendiği ve denetlendiği formatı standartlaştırmamıza yardımcı oldu.

Üçüncü Aşama: Büyük Ölçekli Çıkarımın İşlevselleştirilmesi
Roblox Assistant'ın piyasaya sürülmesiyle, işlenen token sayısının haftada 1,5 milyara çıktığını gördük. Ayrıca, gerçek zamanlı AI sohbet çevirisi ve ses güvenliği modelimiz (artık açık kaynaklı) gibi, çıkarım kapasitesine olan talebi önemli ölçüde artıran yeni özellikler de yayınladık. AI uygulama geliştirmesini güçlendirmek için iki temel projeye başladık: ML ağ geçidimiz ve vLLM projesine dayalı büyük dil modeli operasyonları (LLMOps) platformu. Bu iki proje birlikte, Roblox'ta yeni nesil ML'nin temelini oluşturacak.
Buluttaki ve şirket içindeki CPU'lar ve GPU'lar dahil olmak üzere çeşitli ortamlarda, hem açık kaynaklı hem de şirket içinde geliştirilen tüm büyük modellere erişimi merkezileştirmek için birleşik ML ağ geçidimizi oluşturduk. Amacımız, şirket genelinde AI kaynaklarını yönetmek için verimli ve modern bir sistem oluşturmaktı. Arka uçta, ağ geçidi ortak bir API arayüzü, kullanıcı dostu yapılandırma seçenekleri ve dağıttığımız tüm modeller arasında verimli kaynak paylaşımı sağlar.
Ağ geçidi, üretken AI iş yükleri için token sayısına göre merkezi kısıtlama ve bölgeler arasında gecikme farkındalıklı yük dengeleme sağlayarak çıkarım hizmetlerimizin dayanıklılığını artırdı. Ayrıca, API anahtar yönetimini merkezileştirerek güvenliği artırır, kapsamlı kullanım izleme ve potansiyel hakların uygulanmasına olanak tanır ve daha iyi gözlemlenebilirlik için izleme araçlarıyla entegre olur. Tüm bu özellikler, büyük modellerin kullanımını optimize etmemize, maliyetleri azaltmamıza ve Roblox genelindeki mühendislere değerli içgörüler sağlamamıza yardımcı olacaktır.
Ayrıca, Roblox genelinde AI uygulamalarını desteklemek için vLLM'nin yüksek performanslı yeteneklerinden yararlanarak, vLLM'yi LLM'ler için birincil çıkarım motorumuz olarak benimsedik. vLLM'ye geçtikten sonra, hem gecikme süresinde hem de iş hacminde neredeyse 2 kat iyileşme gördük ve şu anda haftada yaklaşık 4 milyar token işliyoruz.
vLLM'yi tercih etmemiz, geniş kullanıcı tabanımızın ve çeşitli deneyimlerimizin taleplerini karşılamak için verimli bir şekilde ölçeklenebilen açık kaynaklı ve en son teknolojilerden yararlanma taahhüdümüzle uyumludur. Roblox, açık kaynaklı vLLM projesine aktif olarak katkıda bulunmakta ve vLLM için çok modlu desteğin geliştirilmesine öncülük etmektedir. Bu destek, motorun sadece metinleri değil, aynı zamanda görüntüleri ve gelecekte potansiyel olarak diğer veri türlerini de işleyebilmesini sağlar. Ayrıca, çıkarım performansını daha da iyileştirmek için spekülatif kod çözme teknikleri uyguladık ve böylece dil görevlerinin daha hızlı ve verimli bir şekilde işlenmesini sağladık.
ML gateway ve vLLM ile, Roblox genelinde kullanılan yüzlerce ML boru hattını verimli bir şekilde destekleyebilir ve AI destekli özelliklere olan talep artmaya devam ettikçe çıkarımları ölçeklendirmeye devam edebiliriz. Ve bu çalışmamız henüz bitmedi. Roblox'ta AI'nın geleceği için büyük planlarımız var. Hem acemi hem de uzman içerik oluşturucular için içerik oluşturmayı daha verimli hale getirmek üzere yeni AI destekli araçlar üzerinde çalışıyoruz. Her zaman olduğu gibi, hem bizim hem de içerik oluşturucularımızın günlük olarak kullandığı AI araçlarını daha iyi desteklemek için altyapımızın performansını ve verimliliğini artırmanın yollarını arıyoruz.
Açık Kaynak Koduna Olan Bağlılığımız
Bugüne kadar birçok başarılı açık kaynak projesinin desteğiyle bu noktaya geldik. Teknik altyapımızın büyük bir kısmı, yukarıda bahsedilen açık kaynak teknolojisi kullanılarak oluşturulmuştur.
Açık kaynaklı AI topluluğunda güçlü bir ortak olmaya ve kendi açık kaynaklı teknolojilerimizden bazılarını katkıda bulunmaya kararlıyız. Kısa süre önce ilk açık kaynaklı modelimizi, yani ses güvenliği sınıflandırıcımızı duyurduk ve şu anda ML ağ geçidimiz üzerinde çalışıyoruz; bunu da açık kaynak haline getirmeyi umuyoruz. AI'nın geleceğinin açıklık ve şeffaflığı içermesi gerektiğine inanıyoruz ve bu topluluğun aktif bir üyesi olmaktan heyecan duyuyoruz.


