Dağıtılmış derin öğrenme modeli eğitimi, birçok sektörde veri boyutları büyüdükçe giderek daha önemli hale geliyor. Bilgisayarla görü ve doğal dil işlemedeki birçok uygulama artık karmaşıklığı katlanarak büyüyen ve genellikle yüzlerce terabayt veriyle eğitilen derin öğrenme modellerinin eğitimini gerektiriyor. Ardından, bu kadar büyük modellerin eğitimini ölçeklendirmek için geniş bir bulut altyapısı kullanmak önemli hale geliyor.
Geliştiriciler, sezgisel model mimarilerini kolayca tasarlamak için PyTorch gibi açık kaynaklı çerçeveleri kullanabilir. Ancak, bu modellerin eğitimini birden çok düğümde ölçeklendirmek, artan düzenleme karmaşıklığı nedeniyle zor olabilir.
Dağıtılmış model eğitimi temel olarak iki paradigmadan oluşur:
- Model paralel – Model paralel eğitiminde, modelin kendisi tek bir GPU'nun belleğine sığmayacak kadar büyüktür ve modeli eğitmek için birden çok GPU'ya ihtiyaç vardır. Open AI'ın 3 milyar eğitilebilir parametreye (yaklaşık 175 GB boyutunda) sahip GPT-350 modeli buna iyi bir örnektir.
- Veri paralel – Veri paralel eğitiminde model tek bir GPU'da bulunabilir, ancak veriler çok büyük olduğundan bir modeli eğitmek günler veya haftalar alabilir. Verileri birden çok GPU düğümü arasında dağıtmak, eğitim süresini önemli ölçüde azaltabilir.
Bu yazıda, PyTorch modellerini aşağıdakileri kullanarak eğitmek için örnek bir mimari sunuyoruz. Meşale Dağıtılmış Elastik çerçeve kullanarak dağıtılmış bir veri paralel şekilde Amazon Elastik Kubernetes Hizmeti (Amazon EKS).
Önkoşullar
Bu gönderide bildirilen sonuçları çoğaltmak için tek ön koşul bir AWS hesabıdır. Bu hesapta bir EKS kümesi oluşturuyoruz ve bir Lustre için Amazon FSx dosya sistemi. Ayrıca kapsayıcı görüntülerini bir Amazon Elastik Konteyner Kayıt Defteri Hesaptaki (Amazon ECR) deposu. Bu bileşenleri kurmak için talimatlar, gönderi boyunca gerektiği gibi sağlanır.
EKS kümeleri
Amazon EKS, AWS'de Kubernetes uygulamalarını çalıştırmak ve ölçeklendirmek için yönetilen bir kapsayıcı hizmetidir. Amazon EKS ile en son teknolojileri kullanarak dağıtılmış eğitim işlerini verimli bir şekilde çalıştırabilirsiniz. Amazon Elastik Bilgi İşlem Bulutu (Amazon EC2) bulut sunucuları, kendi kontrol düzleminizi veya düğümlerinizi kurmanıza, çalıştırmanıza ve bakımını yapmanıza gerek kalmadan. popüler bir orkestraci makine öğrenimi (ML) ve AI iş akışları için. AWS'deki tipik bir EKS kümesi aşağıdaki şekle benzer.
Açık kaynaklı bir proje yayınladık, EKS için AWS DevOps (aws-do-eks)EKS kümelerini sağlamak ve dağıtılmış eğitim işlerini çalıştırmak için kullanımı kolay ve yapılandırılabilir komut dosyaları ve araçlardan oluşan geniş bir koleksiyon sağlayan . Bu proje aşağıdaki ilkelere göre inşa edilmiştir: Çerçeve Yap: Basitlik, Esneklik ve Evrensellik. kullanarak istediğiniz kümeyi yapılandırabilirsiniz. eks.conf dosyasını çalıştırın ve ardından çalıştırarak başlatın. eks-create.sh senaryo. Ayrıntılı talimatlar, GitHub repo.
PyTorch modellerini Torch Distributed Elastic kullanarak eğitin
Torch Distributed Elastic (TDE), bilgi işlem kaynaklarını kullanılabilirliğe dayalı olarak dinamik olarak ölçeklendirmenin kritik olduğu büyük ölçekli derin öğrenme modellerini eğitmek için yerel bir PyTorch kitaplığıdır. bu Kubernetes için TorchElastic Denetleyici TDE eğitimi için gereken bölmelerin ve hizmetlerin yaşam döngüsünü otomatik olarak yöneten TDE için yerel bir Kubernetes uygulamasıdır. Gerektiğinde eğitim sırasında bilgi işlem kaynaklarının dinamik olarak ölçeklenmesine olanak tanır. Ayrıca, işleri düğüm hatasından kurtararak hataya dayanıklı eğitim sağlar.
Bu yazıda, PyTorch'u eğitme adımlarını tartışıyoruz EfficientNet-B7 ve ResNet50 kullanan modeller IMAGEnet TDE ile dağıtılmış bir şekilde veri. PyTorch'u kullanıyoruz Dağıtılmış VeriParalel API ve Kubernetes TorchElastic denetleyicisi ve eğitim işlerimizi birden çok GPU düğümü içeren bir EKS kümesinde çalıştırın. Aşağıdaki diyagram, bu model eğitimi için mimari diyagramı göstermektedir.
Kubernetes için TorchElastic temel olarak iki bileşenden oluşur: TorchElastic Kubernetes Denetleyicisi (TEC) ve parametre sunucusu (etcd). Denetleyici, eğitim işlerini izlemekten ve yönetmekten sorumludur ve parametre sunucusu, dağıtılmış senkronizasyon ve eş keşfi için çalışan düğümlerini takip eder.
Eğitim podlarının verilere erişebilmesi için, her bir pod tarafından monte edilebilen paylaşılan bir veri hacmine ihtiyacımız var. aracılığıyla paylaşılan hacimler için bazı seçenekler Konteyner Depolama Arayüzü (CSI) sürücüleri dahil EKS için AWS DevOps vardır Amazon Elastik Dosya Sistemi (Amazon EFS) ve Parlaklık için FSx.
Küme kurulumu
Küme yapılandırmamızda, sistem bölmeleri için bir c5.2xlarge örneği kullanıyoruz. EfficientNet modelini eğitmek için çalışan bölmeleri olarak üç p4d.24xlarge örneği kullanıyoruz. ResNet50 eğitimi için çalışan bölmeleri olarak p3.8xlarge örnekleri kullanıyoruz. Ek olarak, eğitim verilerimizi ve model yapılarımızı depolamak için bir FSx paylaşımlı dosya sistemi kullanıyoruz.
AWS p4d.24xlarge bulut sunucuları şunlarla donatılmıştır: Elastik Kumaş Adaptörü (EFA) düğümler arasında ağ sağlamak için. EFA'yı yazının ilerleyen kısımlarında daha fazla tartışacağız. EFA üzerinden iletişimi sağlamak için bir .yaml dosyası üzerinden küme kurulumunu yapılandırmamız gerekiyor. Bir örnek dosya GitHub deposunda sağlanır.
Bu .yaml dosyası uygun şekilde yapılandırıldıktan sonra, GitHub deposunda sağlanan komut dosyasını kullanarak kümeyi başlatabiliriz:
Bakın GitHub repo detaylı talimatlar için.
İşleri p4d.24xlarge ve p3.8xlarge üzerinde çalıştırmak arasında pratikte hiçbir fark yoktur. Bu gönderide açıklanan adımlar her ikisi için de geçerlidir. Tek fark, p4d.24xlarge bulut sunucularında EFA'nın kullanılabilirliğidir. ResNet50 gibi daha küçük modeller için, EFA ağıyla karşılaştırıldığında standart ağ oluşturma, eğitim hızı üzerinde minimum etkiye sahiptir.
Lustre dosya sistemi için FSx
FSx, yüksek performanslı bilgi işlem iş yükleri için tasarlanmıştır ve katı hal sürücü depolama birimlerini kullanarak milisaniyenin altında gecikme sağlar. FSx'i seçtik çünkü çok sayıda düğüme ölçeklenirken daha iyi performans sağladı. Unutulmaması gereken önemli bir ayrıntı, FSx'in yalnızca tek bir Erişilebilirlik Alanında var olabileceğidir. Bu nedenle, FSx dosya sistemine erişen tüm düğümler, FSx dosya sistemi ile aynı Erişilebilirlik Alanında bulunmalıdır. Bunu başarmanın bir yolu, kümeyi oluşturmadan önce belirli düğüm grupları için küme .yaml dosyasında ilgili Erişilebilirlik Alanını belirtmektir. Alternatif olarak, küme kurulduktan sonra bu düğümler için otomatik ölçeklendirme grubunun ağ bölümünü değiştirebilir ve tek bir alt ağ kullanarak sınırlayabiliriz. Bu, Amazon EC2 konsolunda kolayca yapılabilir.
EKS kümesinin çalışır durumda olduğunu ve Erişilebilirlik Alanının alt ağ kimliğinin bilindiğini varsayarsak, gerekli bilgileri fsx.conf dosya beni oku ve çalıştırıyor konuşlandırma.sh komut dosyası fsx dosya. Bu, dosya sistemine erişim için doğru politikayı ve güvenlik grubunu kurar. Komut dosyası ayrıca şunları da yükler: CSI sürücüsü bir arka plan programı olarak FSx için. Son olarak, tek bir .yaml dosyası uygulayarak Kubernetes'te FSx kalıcı birim talebini oluşturabiliriz:
Bu, Bölümde belirtilen Erişilebilirlik Alanında bir FSx dosya sistemi oluşturur. fsx.conf
dosya ve ayrıca kalıcı bir birim talebi oluşturur fsx-pvc
, kümedeki bölmelerden herhangi biri tarafından çok okuma-yazma (RWX) tarzında monte edilebilir.
Deneyimizde, 12 sınıfa bölünmüş 1,000 milyondan fazla eğitim görüntüsünü içeren eksiksiz ImageNet verilerini kullandık. Veriler şu adresten indirilebilir: ImageNet web sitesi. Orijinal TAR topunun birkaç dizini var, ancak model eğitimimiz için sadece ilgileniyoruz. ILSVRC/Data/CLS-LOC/
içeren train
ve val
alt dizinler. Eğitimden önce, içindeki görüntüleri yeniden düzenlememiz gerekiyor. val
PyTorch'un gerektirdiği dizin yapısıyla eşleşecek alt dizin ResimKlasörü sınıf. Bu basit bir kullanılarak yapılabilir Python komut dosyası Veriler bir sonraki adımda kalıcı birime kopyalandıktan sonra.
Verileri bir bilgisayardan kopyalamak için Amazon Basit Depolama Hizmeti (Amazon S3) kovasını FSx dosya sistemine eklersek, bu görev için komut dosyalarını içeren bir Docker görüntüsü oluşturuyoruz. Örnek bir Dockerfile ve bir kabuk betiği, csi GitHub deposundaki klasör. kullanarak görüntüyü oluşturabiliriz. build.sh
komut dosyasını kullanın ve ardından bunu kullanarak Amazon ECR'ye gönderin. push.sh
senaryo. Bu komut dosyalarını kullanmadan önce, ECR deposu için doğru URI'yi sağlamamız gerekir. .env
GitHub deposunun kök klasöründeki dosya. Docker görüntüsünü Amazon ECR'ye gönderdikten sonra, ilgili .yaml dosyasını uygulayarak verileri kopyalamak için bir bölme başlatabiliriz:
Pod, komut dosyasını otomatik olarak çalıştırır data-prep.sh verileri Amazon S3'ten paylaşılan birime kopyalamak için. ImageNet verileri 12 milyondan fazla dosyaya sahip olduğundan, kopyalama işlemi birkaç saat sürer. Python betiği imagenet_data_prep.py ayrıca yeniden düzenlemek için çalıştırılır val
PyTorch tarafından beklendiği gibi veri kümesi.
Ağ hızlandırma
Elastik Yapı Adaptörü (EFA) ile birlikte kullanabiliriz. desteklenen EC2 bulut sunucusu türleri kümenizdeki GPU düğümleri arasındaki ağ trafiğini hızlandırmak için. Bu, standart ağ iletişiminin bir darboğaz olabileceği büyük dağıtılmış eğitim işleri çalıştırırken faydalı olabilir. Burada kullandığımız EKS kümesindeki EFA cihaz eklentisini dağıtmak ve test etmek için komut dosyaları, efa-cihaz-eklentisi GitHub deposundaki klasör. EKS kümenizde EFA ile bir işi etkinleştirmek için gerekli donanım ve yazılıma sahip küme düğümlerine ek olarak, kümeye EFA cihaz eklentisinin dağıtılması ve iş kapsayıcınızın uyumlu CUDA ve NCCL'ye sahip olması gerekir sürümler yüklü.
NCCL testlerinin çalıştırıldığını ve p4d.24xlarge örneklerinde EFA'nın performansının değerlendirildiğini göstermek için, önce karşılık gelen komutu çalıştırarak Kubeflow MPI operatörünü dağıtmalıyız. konuşlandırma.sh komut dosyası mpi operatörü dosya. Sonra çalıştırıyoruz konuşlandırma.sh komut dosyası ve güncelleme test-efa-nccl.yaml kaynak için sınırlar ve istekler tezahür ettirin vpc.amazonaws.com
4'e ayarlanır. p4d.24xlarge düğümlerindeki mevcut dört EFA adaptörü, maksimum verim sağlamak için bir araya toplanır.
koşmak kubectl apply -f ./test-efa-nccl.yaml
testi uygulamak ve ardından test bölmesinin günlüklerini görüntülemek için Günlük çıktısındaki aşağıdaki satır, EFA'nın kullanıldığını doğrular:
Test sonuçları aşağıdaki çıktıya benzer görünmelidir:
Test sonuçlarında maksimum verimin yaklaşık 42 GB/sn ve ortalama veri yolu bant genişliğinin yaklaşık 8 GB olduğunu gözlemleyebiliriz.
Ayrıca tek bir EFA bağdaştırıcısının etkinleştirildiği ve EFA bağdaştırıcılarının olmadığı deneyler de gerçekleştirdik. Tüm sonuçlar aşağıdaki tabloda özetlenmiştir.
EFA Adaptörlerinin Sayısı | Net/OFI Seçilmiş Sağlayıcı | Ort. Bant genişliği (GB/sn) | Maks. Bant genişliği (GB/sn) |
4 | efa | 8.24 | 42.04 |
1 | efa | 3.02 | 5.89 |
0 | soket | 0.97 | 2.38 |
Ayrıca ImageNet gibi nispeten küçük modeller için, hızlandırılmış ağ kullanımının, 5 parti boyutunda epoch başına eğitim süresini yalnızca %8-64 oranında azalttığını bulduk. Daha büyük modeller ve daha küçük parti boyutları için, ağırlıkların daha fazla ağ iletişimi gerektiğinde , hızlandırılmış ağ kullanımı daha büyük bir etkiye sahiptir. Parti boyutu 15 ile EfficientNet-B18 eğitimi için epoch eğitim süresinin %7-1 oranında azaldığını gözlemledik. EFA'nın eğitiminiz üzerindeki gerçek etkisi, modelinizin boyutuna bağlı olacaktır.
GPU izleme
Eğitim işini çalıştırmadan önce de ayarlayabiliriz Amazon Bulut İzleme Eğitim sırasında GPU kullanımını görselleştirmek için ölçümler. Kaynakların optimal olarak kullanılıp kullanılmadığını veya potansiyel olarak eğitim sürecindeki kaynak açlığını ve darboğazları tespit edip etmediğini bilmek yardımcı olabilir.
CloudWatch'ı kurmak için ilgili komut dosyaları şurada bulunur: gpu-metrikleri dosya. İlk olarak, bir Docker imajı oluşturuyoruz. amazon-cloudwatch-agent
ve nvidia-smi
. Dockerfile'ı şurada kullanabiliriz: gpu-metrics
Bu görüntüyü oluşturmak için klasör. ECR kayıt defterinin önceden ayarlanmış olduğunu varsayarsak .env
önceki adımdan dosya, kullanarak görüntüyü oluşturabilir ve itebiliriz. build.sh
ve push.sh
. Bundan sonra, çalıştırma deploy.sh
komut dosyası kurulumu otomatik olarak tamamlar. İle bir arka plan programı başlatır amazon-cloudwatch-agent
ve çeşitli ölçümleri CloudWatch'a gönderir. GPU metrikleri, CWAgent
CloudWatch konsolunda ad alanı. Küme metriklerinin geri kalanı, ContainerInsights
ad.
Model eğitimi
PyTorch eğitimi için gereken tüm komut dosyaları şurada bulunur: elastik iş GitHub deposundaki klasör. Eğitim işini başlatmadan önce, etcd
TEC tarafından çalışan keşfi ve parametre değişimi için kullanılan sunucu. bu konuşlandırma.sh komut dosyası elasticjob
klasör tam olarak bunu yapar.
p4d.24xlarge örneklerinde EFA'dan yararlanmak için, şu dosyada bulunan belirli bir Docker görüntüsünü kullanmamız gerekir. Amazon ECR Genel Galerisi EFA aracılığıyla NCCL iletişimini destekleyen. Sadece eğitim kodumuzu bu Docker görüntüsüne kopyalamamız gerekiyor. bu Dockerfile altında örnekleri klasörü, p4d örneklerinde eğitim işi çalıştırılırken kullanılacak bir görüntü oluşturur. Her zaman olduğu gibi, kullanabiliriz inşa.sh ve itme.sh görüntüyü oluşturmak ve itmek için klasördeki komut dosyaları.
The imagenet-efa.yaml dosya eğitim işini açıklar. Bu .yaml dosyası, eğitim işini yürütmek için gereken kaynakları ayarlar ve ayrıca önceki bölümde ayarlanan eğitim verileriyle kalıcı birimi bağlar.
Burada birkaç şeye işaret etmekte fayda var. Çoğaltma sayısı, kümede bulunan düğümlerin sayısına ayarlanmalıdır. Bizim durumumuzda bunu 3'e ayarladık çünkü üç adet p4d.24xlarge düğümümüz vardı. İçinde imagenet-efa.yaml
dosya, nvidia.com/gpu
kaynaklar altındaki parametre ve nproc_per_node
altında args
p4d.24xlarge durumunda 8 olan düğüm başına GPU sayısına ayarlanmalıdır. Ayrıca, Python betiği için çalışan bağımsız değişkeni, işlem başına CPU sayısını ayarlar. Bunu 4 olarak seçtik çünkü deneylerimizde bu, p4d.24xlarge bulut sunucularında çalışırken en iyi performansı sağlıyor. Bu ayarlar, kümede bulunan tüm donanım kaynaklarının kullanımını en üst düzeye çıkarmak için gereklidir.
İş çalışırken, kümedeki tüm GPU'lar için CloudWatch'ta GPU kullanımını gözlemleyebiliriz. Aşağıdaki, kümede üç p4d.24xlarge düğümü olan eğitim işlerimizden birinden bir örnektir. Burada her düğümden bir GPU seçtik. Daha önce bahsedilen ayarlarla, kümedeki tüm düğümler için dönemin eğitim aşamasında GPU kullanımı %100'e yakındır.
p50xlarge örneklerini kullanarak bir ResNet3.8 modelini eğitmek için, p4d.24xlarge kullanarak EfficientNet eğitimi için açıklanan adımların tamamen aynısına ihtiyacımız var. Aynı Docker imajını da kullanabiliriz. Daha önce belirtildiği gibi, p3.8xlarge bulut sunucuları EFA ile donatılmamıştır. Ancak ResNet50 modeli için bu önemli bir dezavantaj değildir. bu imagenet-fsx.yaml GitHub deposunda sağlanan komut dosyası, eğitim işini p3.8xlarge düğüm türü için uygun kaynaklarla ayarlar. İş, FSx dosya sistemindeki aynı veri kümesini kullanır.
GPU ölçeklendirme
GPU sayısını artırarak EfficientNet-B7 modeli için eğitim süresinin nasıl ölçeklendiğini gözlemlemek için bazı deneyler yaptık. Bunu yapmak için, her eğitim çalıştırması için eğitim .yaml dosyamızdaki replika sayısını 1'den 3'e değiştirdik. Tam ImageNet veri setini kullanırken sadece tek bir dönem için zamanı gözlemledik. Aşağıdaki şekil, GPU ölçekleme denememizin sonuçlarını göstermektedir. Kırmızı noktalı çizgi, GPU sayısını artırarak 8 GPU kullanan bir koşudan eğitim süresinin nasıl düşmesi gerektiğini gösterir. Gördüğümüz gibi, ölçekleme beklenene oldukça yakın.
Benzer şekilde, p50xlarge bulut sunucularında ResNet3.8 eğitimi için GPU ölçeklendirme grafiğini elde ettik. Bu durumda .yaml dosyamızdaki replikaları 1'den 4'e değiştirdik. Bu deneyin sonuçları aşağıdaki şekilde gösterilmektedir.
Temizlemek
Boşta örnekleri çalıştırmayla ilişkili maliyetlerden kaçınmak için model eğitiminden sonra kaynakları azaltmak önemlidir. Kaynak oluşturan her komut dosyasıyla, GitHub repo bunları silmek için eşleşen bir komut dosyası sağlar. Kurulumumuzu temizlemek için, kümenin VPC'sindeki bir alt ağ ile ilişkili olduğundan kümeyi silmeden önce FSx dosya sistemini silmemiz gerekir. FSx dosya sistemini silmek için aşağıdaki komutu çalıştırmamız yeterli. fsx Klasör):
Bunun yalnızca kalıcı birimi değil, aynı zamanda FSx dosya sistemini de sileceğini ve dosya sistemindeki tüm verilerin kaybolacağını unutmayın. Bu adım tamamlandığında aşağıdaki scripti kullanarak cluster’ı silebiliriz. ek Klasör:
Bu, mevcut tüm bölmeleri silecek, kümeyi kaldıracak ve başlangıçta oluşturulan VPC'yi silecektir.
Sonuç
Bu yazıda, EKS kümelerinde PyTorch dağıtılmış veri paralel model eğitimini çalıştırmak için gereken adımları ayrıntılı olarak anlattık. Bu görev göz korkutucu görünebilir, ancak EKS için AWS DevOps AWS'de ML Frameworks ekibi tarafından oluşturulan proje, süreci basitleştirmek ve dağıtılmış model eğitimini kolayca erişilebilir kılmak için gerekli tüm komut dosyalarını ve araçları sağlar.
Bu yazıda kullanılan teknolojiler hakkında daha fazla bilgi için, adresini ziyaret edin. Amazon EKS'si ve Meşale Dağıtılmış Elastik. Burada açıklanan yaklaşımı kendi dağıtılmış eğitim kullanım durumlarınıza uygulamanızı öneririz.
Kaynaklar
yazarlar hakkında
İmran Yunus AWS'de ML Frameworks ekibi için Baş Çözüm Mimarıdır. Amazon EKS ve AWS ParallelCluster gibi AWS hizmetlerinde büyük ölçekli makine öğrenimi ve derin öğrenme iş yüklerine odaklanıyor. Bilgisayarla Görme ve Endüstriyel IoT'de Derin Eğilme uygulamalarında geniş deneyime sahiptir. Imran, peta-bayt ölçeklerinde deneysel verilerin analizinde yer aldığı Yüksek Enerji Parçacık Fiziği alanında doktora derecesini aldı.
Alex Iankoulski derin, uygulamalı işler yapmayı seven tam donanımlı bir yazılım ve altyapı mimarıdır. Şu anda AWS'de Kendi Kendini Yöneten Makine Öğrenimi için Baş Çözüm Mimarıdır. Görevinde, konteyner destekli AWS hizmetlerinde ML ve AI iş yüklerinin konteynerleştirilmesi ve düzenlenmesi konusunda müşterilere yardımcı olmaya odaklanıyor. Aynı zamanda açık kaynak kitabının da yazarıdır. çerçeve yap ve dünyanın en büyük zorluklarını çözerken inovasyon hızını hızlandırmak için konteyner teknolojilerini uygulamayı seven bir Docker kaptanı. Alex, geçtiğimiz 10 yıl boyunca iklim değişikliğiyle mücadele, yapay zeka ve makine öğrenimini demokratikleştirme, seyahati daha güvenli, sağlık hizmetlerini daha iyi hale getirme ve enerjiyi daha akıllı hale getirme konularında çalıştı.
- AI
- yapay zeka
- AI sanat üreteci
- yapay zeka robotu
- Amazon Elastik Kubernetes Hizmeti
- yapay zeka
- yapay zeka sertifikası
- bankacılıkta yapay zeka
- yapay zeka robotu
- yapay zeka robotları
- yapay zeka yazılımı
- AWS Makine Öğrenimi
- blockchain
- blockchain konferans ai
- zeka
- konuşma yapay zekası
- kripto konferans ai
- dal-e
- derin öğrenme
- google ai
- Orta (200)
- makine öğrenme
- Platon
- plato yapay zekası
- Plato Veri Zekası
- Plato Oyunu
- PlatoVeri
- plato oyunu
- ölçek ai
- sözdizimi
- zefirnet