Python'da için platform bağlayıcısı Bonsai oluşturma


  • Toplam tamamlama süresi: 40 dakika
  • Etkin süre: 40 dakika
  • Etkin olmayan süre: 0 dakika

Kullanıcılarının benzetimlerini bir çalışma alanına bağlay için bir simülasyon platformu bağlayıcısı Bonsai oluşturun. Ayrılmış ve simülasyon platformu bağlayıcıları arasındaki farkı anlamak için Bonsai Bağlayıcıya genel bakış bölümündeki bağlayıcı türleri bölümüne bakın.

Platform bağlayıcınızı oluşturmak Bonsai için başlangıç noktası olarak GitHub Sim Bağlayıcı Şablonu'na sahip olun. Sim Bonsai BağlayıcıSı Şablon repo şunları içerir:

  • Platform kullanıcılarınıza bağlayıcınızı ayarlamayı, derlemeyi ve çalıştırmayı açıklayan belge şablonları.
  • Bağlayıcının nasıl kullanılması gerektiğini gösteren bir örnek benzetim modeliyle doldurmak istediğiniz örnek klasör de dahil olmak üzere önerilen bir klasör yapısı.
  • Bağlayıcınızı bir Docker kapsayıcısı içinde inşaa desteği. Bonsai bulutta birden çok simülatör örneği çalıştırarak eğitimi ölçeklendirmek için kapsayıcıları kullanır.

Not

Aşağıdaki yönergelerin ardından, bir bağlayıcı, bir unmanaged simülatörüne neden olacak. Yönetlanmamış simülatörler, beyin eğitimi için Bonsai hizmetin dışında çalışıyor. Yerel ortamınıza çalıştırarak, yönetimsiz bir simülatörü test edersiniz.

Başlamadan önce

İpucu

Python bağımlılığı uyuşmazlıklarını veya genel ortam çakışmalarını yalıtmakla ilgili bir sorunla karşı karşılıyorsanız, kodlama çalışması için bir Miniconda sanal ortamı ayarlamayı göz önünde bulundurabilirsiniz.

1. Adım: Sim Bağlayıcı Bonsai Şablonunu Kopyalama

  1. Sim Bağlayıcı Bonsai Şablonu zip dosyasını indirme
  2. Çalışma dizininize şablonun sıkıştırmayı açın.
  3. tüm örneklerini bulun ve SIM_PLATFORM yerine bağlayıcıyı yapmak istediğiniz simülasyon platformunun adını yazın.
  4. Bağlayıcınızı göstermek için kullanabileceğiniz örnek kullanım örneğinin adını seçin.
  5. tüm örneklerini bulun ve dizin adı SAMPLE_NAME dahil olmak üzere kullanım örneği adınızla Samples/SAMPLE_NAME değiştirin.

Önemli

Sim Bonsai Bağlayıcı Şablonu, toplam sayı ekleyen bir "ekici" simülatörü kullanır. Aşağıdaki adımlarda, eklenti simülatörünü adder.py kendi simülatörünü ve başvurulan tüm kodu örnek simülatörünü kullanmak üzere değiştireceksiniz.

2. Adım: Simülatörünü reset başlatmak için bir işlev uygulama

İşlev reset , başlatma ayarları config giriş olarak bir parametre alır ve simülasyonun başlangıç durum değerlerini içeren bir sözlük döndürür. Döndürülen sözlük, Inkling simulator deyiminde her StateType alanına karşılık gelen bir anahtara sahip olması gerekir.

İşlevin reset , önceki bölümün çalışmasıyla ilişkili tüm durumların temizlenmesi ve ilgili başlangıç değerlerinin atanarak simülatörü yeni bir simülasyon bölümü çalıştıracak şekilde hazırlaması gerekir. Örnek simülatörünü kullananlar ConfigType , Inkling simülatörü deyiminde kullanarak simülasyonun ilk koşullarını açıklayan yapılandırma parametrelerini geçen dersler tanımlar.

Config parametresi, Inkling yapısındaki her alana karşılık gelen anahtar-değer çiftleri içeren bir sözlük içermesi ConfigType gerekir. Kullanıcılar mürekkeplemelerinde bir ders belirtmezseniz sözlük boş olur ve örnek simülatörün varsayılan değerleri kullanması gerekir.

connector/simulator_model.py Şablon dosyasında, ilk uygulaması şöyledirreset:

def reset(self, config) -> Dict[str, Any]:
    """ Reset any state from the previous episode and get ready to start a new episode. """
    # TODO: Reset state from the previous episode that needs to be cleared.
    # TODO: Perform initialization in preparation for running an episode using the values in the config dictionary.
    self.adder = Adder(config['initial_value'])
    return { 
        'sim_halted': False,
        # TODO: Add simulator state as dictionary with key as the state and value as the state's value.
        'value': self.adder.value,
    }

için başvuruları kaldırın adder ve simülatörünü TODO başlatma işlevini uygulamak reset için yorumları izleyin.

3. Adım: Tek adımlı step bir adımın benzetimini yapmak için bir işlev uygulama

İşlev step , beyinden bir eylem uygular ve tek bir simülasyon adımı yürütür.

Her adımda sabit bir süre simülasyonu veya değişken boyutlu zaman adımlarının benzetimini de sebilirsiniz. Zaman adımının uzunluğunu seçmek önemli bir karardır!

Zaman adımlarınız çok küçükse:

  • Bölümlerin tamamlanması için çok sayıda adım gerekir ve bu da bir beyni etkili bir şekilde eğitmek için yeterli sayıda bölüm çalıştırmak için gereken duvar saati süresi miktarını artırır.
  • Verilen bir eylem yalnızca kısa bir süre etkili olur. Bonsai brain explore with random actions. Bir eylemin etkisi çok kısa olursa beyin, daha uzun bir süre boyunca eyleme gerek kalmadan stratejiler keşfeder.

Zaman adımlarınız çok büyükse:

  • Beyin yeni girişe tepki verme fırsatına sahip olmadan önce çok fazla zaman geçer. Gecikmeli yanıtlar, beyin tam denetime sahip olabilir veya beyin istenen durumu aşırı atlarken salınımlara yol açabiliyor.

İpucu

Benzetiminiz farklı zaman adımı boyutlarıyla çalıştırılaya sahipse, simülatör kullanıcılarının zaman adımı boyutunu ayarlamak için ayarlay kuracakları bir yapılandırma parametresi sağlamak yararlı olabilir.

İşlev step , bir zaman action adımı simülasyonu öncesinde simülatörün uygulaması gereken eylem ayarlarının sözlüğünü içeren bir parametre alır. Sözlüğün, Inkling simülatör deyiminde kullanılan yapıda ActionType yer alan her alana karşılık gelen anahtar-değer çiftleri vardır.

işlevi step , işlevle aynı biçimdeki durum değerlerini içeren bir sözlük reset döndürür.

connector/simulator_model.py Şablon dosyasında, ilk uygulaması şöyledirstep:

def step(self, action) -> Dict[str, Any]:
    """ Apply the specified action and perform one simulation step. """
    # TODO: Perform a simulation step using the values in the action dictionary.
    self.adder.add(action['addend'])
    return {
        # TODO: If 'sim_halted' is set to True, that indicates that the simulator is unable to continue and the
        # episode will be discarded. If your simulator cannot reach an unrecoverable state, always set 'sim_halted'
        # to False.
        'sim_halted': False,
        # TODO: Add simulator state as dictionary with key as the state and value as the state's value.
        'value': self.adder.value,
    }

için başvuruları kaldırın adder ve simülatörünü TODO başlatma işlevini uygulamak step için yorumları izleyin.

4. Adım: Örnek Mürekkep Oluşturma

Simülatörle bir beyin eğitmek için, simülatörle birlikte çalışacak veri türleri ve hedefleri tanımlayan bir beyin belirtimi (MürekkepLeme) sağlamış olun.

Örnek bir beyin sepc oluşturmak için dosyasını samples/SAMPLE_NAME/machine_teacher.ink değiştirme:

  1. , ConfigTypeve sözcüklerini StateTypeörnek ActionType simülasyonu tarafından beklenen sözlükler ile eş olacak şekilde güncelleştirin.
  2. deyimini goal örnek simülasyon durum değerlerinize uygun hedeflerle değiştirebilirsiniz. Yararlı hedeflerin taslağını alama hakkında daha goal fazla bilgi için Inkling teknik başvurusu ve InklingBonsai yemek kitabı girişlerine bakın.

Sonraki adımlar

Dosya samples/SAMPLE_NAME/README.md , kullanıcılarının simülatörünü çalıştırmak ve beyin eğitmek için takip edecekleri adımları içeren örnek bölümü Bonsai içerir. Bu adımların düzgün çalışa çalışa sınayın.