Kirayı ödemek için StarCraft 2 AI hakkında bir eğitim yayınladı.

İçbükey tapınaktan kök

Qubit Üretildi | Genel Hesap QbitAI

Blizzard, geçen yıl 10 Ağustos'ta StarCraft II'nin Yapay Zeka API'sini açtığından beri, sayısız AI araştırmacısı StarCraft 2 AI eğitimine katıldı.

Ancak herkes pahalı GPU'lar için para ödemeye istekli değil. Neyse ki, Google son zamanlarda ücretsiz bulut GPU'ları sağlamak için büyük çaba gösterdi. Artık daha fazla kişi StarCraft 2AI'yi eğitebilir.

AI'yı ücretsiz GPU'larla eğitirken hangi çukurlarla karşılaşacaksınız?

Reddit'te bu mayın temizleme sürecini paylaşan ve herkese adım adım hata ayıklama konusunda rehberlik eden küçük bir kardeş Franklin H. var.

Aşağıdakiler gönderinin tam metnidir:

Sürümü okumak için çok uzun: Ücretsiz bir StarCraft II makine öğrenimi ortamı oluşturmak için GPU donanımını kullanmak istiyorsanız, Google Colab'daki notlarıma bakın: https://colab.research.google.com/drive/1AzCKV98UaQQz2aJIeGWlExcxBrpgKsIV

Geçenlerde birkaç iyi arkadaşımla bir StarCraft II projesine başladım.

Her zaman makine öğrenimi araştırmalarıyla ilgilenen insanların sinir ağlarını hızlı bir şekilde eğitebilmesi gerektiği görüşüne sahibim. Bu çok önemli.

Kodu paylaşmak nispeten basittir. Ancak StarCraft II AI aracılarını eğiten küresel araştırma grubu için, onlara Google Colab'da StarCraft II AI'yı çalıştırmak için Google'ın ücretsiz GPU'sunu nasıl kullanacaklarını söylemenin daha değerli olduğunu düşünüyorum.

Ben sadece kendim denedim.

Beklenmedik bir şekilde, StarCraft II'yi indirdikten ve gerekli veritabanını kurduktan sonra bununla karşılaştım:

Dönüş kodu nedir

Görünüşe göre Dönüş kodunun ne olduğunu bulmanız gerekiyor.

PySC2 kaynağını kontrol ettim ve dönüş kodunun ayarlandığı kısmı buldum.

Daha fazla araştırma yaparsak, anketin () Python'dan türetilen bir alt işlem modülü olduğu bulundu. Bu, 11'in StarCraft programını sonlandırmak için bir sinyal olduğunu gösterir.

Signal 11 korkunç bir segfault, kesinlikle C programcıları için bir kabustur.

Sorunun burada olup olmadığını görmek için, çalıştırılabilir SC2'yi buldum ve kendi kendine çalışmasına izin verdim.

Emmm ...

Hata Ayıklamanın cehennem modunu açın

Genel olarak konuşursak, doğrudan en uygun Debug aracını açacağım. Ancak bu şekilde, bu makale sadece GDB'nin nasıl kullanılacağına dair sürekli bir açıklama niteliğindedir.

Ancak, bu Google Colab'da değil, sahip olduğumuz tek şey Jupyter Notebook web sayfası. Bunun anlamı:

  • Hata Ayıklayıcı Yok;

  • Kök izni yok;

  • Strace gibi birçok araç kullanılamaz.

RIP hata ayıklama

Yalnızca web'i kullanabildiğiniz zaman ...

Blizzard tarafından sağlanan sürüm 4.0.2, sürüm 3.17 ve sürüm 3.16.1 dahil olmak üzere sunucuda farklı StarCraft II sürümlerini denedim.

Aslında! Çalışmayacak! kızgın

O zaman StarCraft II'yi sadece yerel Linux sisteminde çalıştırabilirim Sonuçta bu ortama aşinayım ve güvenle hata ayıklayabilirim. Tahminimi ancak bu şekilde doğrulayabilirim.

Olası ilk neden: gerekli veritabanı bulunamadı

İlk başta bir oyun olarak StarCraft'ın bazı OpenGL işlevleri ve kitaplıkları gerektirmesi gerektiğini tahmin etmiştim. Ve bunlar Google Colab'da yok.

Bu hipotezi test etmek için bu sefer StarCraft II'yi yerel olarak çalıştırdım. Ardından, StarCraft II'nin tüm sistem çağrılarını kaydetmek için strace kullanın.Tüm kitaplıklar işletim sisteminden yüklenir, böylece hangi bağımlı kitaplıkların eksik olduğunu bilirsiniz.

İşte günlükten bir pasaj:

Tam günlük için bkz: https://docs.python.org/3/library/subprocess.html#subprocess.Popen.returncode

Sonuçlara baktığımda, StarCraft II'nin bu tahmini dışlayan standart C / C ++ kitaplıklarına dinamik olarak bağlanmaktan başka bir şey yapmadığını gördüm.

Hangi diğer segmentler?

Ve yerel koşu askıda kalmadığı için, Blizzard tarafından verilen kod sorun olmadı.

Segfault'larda nasıl hata ayıklayacağımı araştırdığımda, Valgrind'i düşündüm. Aslında Google Colab'da çalıştığını görünce şaşırdım.

Valgrind, kod parçacığını şu şekilde verdi:

Görebildiğim tek işlev libtcmalloc.so.4.3.0'daki MallocExtension :: Initialize ().

TCMalloc'u bilmeyen arkadaşlar olabilir, bu aslında Google tarafından özelleştirilmiş bir bellek ayırıcıdır. Google Chrome tarayıcısı da bunu kullanır.

fakat

Hatayı bulmak için strace kullandığımda, yalnızca C ve C ++ standart kitaplıklarının yüklendiğini gördüğümü hatırlıyorum. TCMalloc nereden geldi?

Daha sonra TCMalloc'u TCMalloc'suz programlarda kullanmaya zorlamanın bir yolu olduğunu keşfettim.

Linux'ta LD_PRELOAD ortam değişkenini ayarlayın, TCMalloc paylaşılan kitaplığını yükleyin ve bitti.

Çok merak ediyorum, Google Colab'da nasıl görünecek?

Midilli! Bu!

çözüm

Ancak, LD_PRELOAD ortam değişkeninin ayarlanması diğer ortamlara genişletilemez.

Bu paragrafı uygulayın:

TCMalloc'u kaldırdım. Ardından, bazı hata mesajlarına ek olarak, StarCraft II artık çalışabilir. Artık sonunda StarCraft II'nin yapay zekasını eğitmeye başlayabilirim.

Gelecekte benzer sorunlar hakkında endişelenmenize gerek kalmaması için Google Colab için bir hata belgesi yazdım.

Hata belgesi: https://docs.python.org/3/library/subprocess.html#subprocess.Popen.returncode

Ancak, StarCraft 2 yapay zekasının ortaya çıkması için hala erken.

Bekleyip göreceğiz.

Son olarak, bana PySC2'den bahseden ve beni makine öğrenimi çukuruna getiren StarAI'den Paul ve William'a teşekkür etmek istiyorum.

Zor hatalarla karşılaşırsanız, hata ayıklama ihtiyaçlarınız varsa benimle iletişime geçebilir ve ilgili hizmetleri sağlayabilirim. Bu benim LinkedIn'deki tanıtımım, https://www.linkedin.com/in/franklin-h-804b85a0/

Son olarak, küçük kardeşimin gönderisine bir bağlantı ekleyin:

https://medium.com/@n0mad/how-i-trained-starcraft-2-ais-using-googles-free-gpus-44bc635b0418

- Bitiş -

Samimi işe alım

Qubit, editörleri / muhabirleri işe alıyor ve merkezi Pekin, Zhongguancun'da bulunuyor. Yetenekli ve hevesli öğrencilerin bize katılmasını dört gözle bekliyoruz! Ayrıntılar için, lütfen QbitAI diyalog arayüzünde "işe alım" kelimesiyle yanıt verin.

Qubit QbitAI · Toutiao İmzalama Yazarı

' ' Yapay zeka teknolojisi ve ürünlerindeki yeni eğilimleri takip edin

Feng Xiaoting uzaklaştırıldı, Zahavi "her Hengda'nın puan alması gerekir" yasasına devam etmek istiyor
önceki
Dünyada ender rastlanan bir gelenek, sadece Çin'de var.Yeni yıl kutlamaları için eve gittiğinizde, arabanıza Bahar Şenliği beyitlerini koyun!
Sonraki
Qin Zhijian'ın bu fikirleri sizi Çinli erkekler masa tenisi baş antrenörü için yarışmaya sevk edebilir mi?
Öğrenci günlerinde sınıfta yaşanan utanç: Sınıf öğretmeni Zafer Kralı'nı oynadığı için tutuklandı ve baş öğretmen Lao Yinbi'ye dönüştü!
Adebayor ailesiyle temasın kesildiğini açıkladı: hepsi paramı düşünüyor
Bu SUV'nin teknolojisi H6'dan daha güçlü ve içi BYD tarafından parçalandı ve lansmanından iki ay sonra 10.000'i kırdı!
"StarCraft II" den başlayarak karar verme zekasına odaklanan eski Ali P10 God AI girişimciliği
Blizzard Carnival live COS: Bu tarihteki en ölçülü DVA olmalı! Çok tatlı?
Kong Linghui: Ekibin temel gücünü oluşturun, onuru savunun ve Tokyo'da savaşın! -Ping Pong Dünyası
Premier Lig'den Portekiz Süper Ligi'ne Dan A'dan Alman B'ye, Çinli gençler sonuna kadar yurtdışına gidecek
Gerçekten Toyota'nın küçük bir SUV'si olmadığını mı düşünüyorsunuz? Honda Binzhi'nin durumu, bu araba piyasaya çıkar çıkmaz garanti edilmedi!
LOL S8 finalinden önce yazılmış: IG, FNC ve LPL hakkında 8 numara! IG 1 ve FNC 2
Geelynin 2017 hedefi olan 1 milyon araç, küçük bir hedefe mi ulaşıyor yoksa övünüyor mu?
Musk kapatmaya yanıt verdi: Model üretimi 3 hafta içinde 6.000'e ulaşacak, bu sefer şaka yok
To Top