Как начать обучение интеллектуальных игровых средах с помощью машинного обучения

Плагин Unity Machine Learning Agents (ML-Agents) использует Python API для обучения агентов и игровых сред с помощью методов машинного обучения. Это открытый исходный код, и он все еще развивается.

Поскольку плагин был выпущен в конце прошлого года, люди придумывали отличные идеи. Это забавный образец из примеров Unity:

Для тех из нас, кто плохо знаком с машинным обучением, это может быть немного сложно настроить и начать работу. Если вы ищете учебное пособие по Windows, Документы по установке Unity очень хороши (и были недавно обновлены). Если у вас есть опыт работы с Python и ML, документы Unity могут быть всем, что вам нужно. 👋

Если вам нужны дополнительные советы, особенно для macOS, читайте дальше.

Я решил написать версию руководства для macOS, так как столкнулся с некоторыми уникальными проблемами. Я в основном просто делюсь заметками, которые сделал для себя, чтобы не забыть детали. 😇 На каждом этапе я отмечал все версии пакетов, которые у меня работали - более новые версии могут работать, а могут и не работать, я не тестировал их все.

Давайте начнем.

Часть 1. Настройка среды Python с помощью Anaconda

Anaconda предоставит нам все пакеты для анализа данных и Python. Conda будет управлять вашими пакетами, зависимостями и средами. Мы проделаем следующие шаги:

Загрузите и установите Anaconda
Запустите и обновите Anaconda
Обновите библиотеку scikit-learn
Установите библиотеки глубокого обучения

  1. Перейдите сюда, чтобы загрузить Anaconda с его зависимостями. Выберите Mac OS Python 3.6 (или самую последнюю версию) и графический установщик. Дважды щелкните загруженный файл и следуйте указаниям мастера установки.
  2. После его установки проверьте правильность установки Python:
python -V

Ожидаемый результат:

Python 3.6.3 :: Anaconda 4.2.0 (64-bit)

4. Conda - наш менеджер пакетов и среды. Проверьте установку и подтвердите версию:

conda -V

Ожидаемый результат:

conda 4.4.6

5. Вам понадобятся Python 3.6, Anaconda 4.2, Conda 4.4. Возможно, вам потребуется установить некоторые пакеты и подтвердить обновления (будьте осторожны, не уверен, что все обновления conda будут работать с ML-Unity).

conda update conda
conda update anaconda

6. Нам также понадобятся вычислительные библиотеки SciPy. Импортируйте и подтвердите свою среду SciPy:

# scipy
import scipy
print(‘scipy: %s’ % scipy.__version__)
# numpy
import numpy
print(‘numpy: %s’ % numpy.__version__)
# matplotlib
import matplotlib
print(‘matplotlib: %s’ % matplotlib.__version__)
# pandas
import pandas
print(‘pandas: %s’ % pandas.__version__)
# statsmodels
import statsmodels
print(‘statsmodels: %s’ % statsmodels.__version__)
# scikit-learn
import sklearn
print(‘sklearn: %s’ % sklearn.__version__)

Выход:

scipy: 0.19.1
numpy: 1.13.1
matplotlib: 2.1.0
pandas: 0.20.3
statsmodels: 0.8.0
sklearn: 0.19.0

7. Затем нам нужно будет использовать scikit-learn для его инструментов сбора и анализа данных. Вам следует обновить до последней версии.

conda update scikit-learn

Часть 2: Установите набор инструментов NVIDIA CUDA

  1. Вам необходимо скачать CUDA 8.0.62. Выберите и загрузить CUDA Toolkit 8.0 GA2 из архивов сайта (не уверен, что новые версии будут работать.) Откройте zip-файл и запустите установщик.
  2. Создайте папку «CUDA-8.0» здесь: HD / Developer / NVIDIA / CUDA-8.0
  3. Загрузите библиотеку CUDA Deep Neural Network (cuDNN) версии cuDNN v6.0 (27 апреля 2017 г.) для CUDA 8.0 для Mac OS.
  4. Скопируйте папки lib и include CUDNN в папку CUDA-8.0.

Часть 3: Установите TensorFlow

TensorFlow обрабатывает численные вычисления с использованием графиков потоков данных. Мы будем устанавливать TensorFlow с родным PIP.

Установить PIP3

  1. PIP устанавливает программные пакеты на Python и управляет ими. Поскольку мы используем Python 3.3+, вам понадобится PIP3 версии 8.1 или выше. * Это список пакетов, которые PIP установит или обновит: Раздел REQUIRED_PACKAGES файла setup.py
  2. PIP уже должен был быть установлен вместе с Python. Отметьте для подтверждения версии:
pip3 -V

Ожидаемый результат:

pip 9.0.1 from /Users/'username'/anaconda3/lib/python3.6/site-packages (python 3.6)

3. Если вам нужно перейти на 8.1+:

$ sudo easy_install — upgrade pip
$ sudo easy_install — upgrade six

Установите TensorFlow с PIP3

1. Используйте PIP3 для установки TensorFlow из пакета Python:

pip3 install tensorflow

2. Проверьте установленную версию TensorFlow:

$ python
import tensorflow as tf

print(tf.VERSION)

Ожидаемый результат:

1.4.1

3. Если версия TensorFlow старше 1.4.0, вам необходимо обновить ее. Это обновляет TensorFlow до самой последней версии (в данном случае 1.1.4):

pip3 install --upgrade tensorflow

* Примечание. В качестве альтернативы вы также можете использовать Conda для установки:

conda create -n tensorflow python 3.6.3
conda install tensorflow

4. После завершения установки вы можете проверить ее успешность, запустив python и выполнив короткий тест TensorFlow внутри оболочки python:

$ python
import tensorflow as tf
hello = tf.constant(‘Hello, TensorFlow!’)
sess = tf.Session()
print(sess.run(hello))

Если система выдаст следующее, то вы готовы приступить к написанию программ TensorFlow:

Hello, TensorFlow!

5. * Примечание. Устранение неполадок с двоичными ошибками. Если вы столкнулись с какими-либо ошибками, в разделе Общие проблемы установки описано довольно много случаев. Возможно, вам потребуется загрузить определенную версию TensorFlow, а затем установить ее:

$ pip3 install — ignore-installed — upgrade /Users/'username'/tensorflow-1.4.1-cp36-cp36m-macosxResolution and Presentation panel13_x86_64.whl

Снова запустите тестовую подсказку TensorFlow, чтобы убедиться, что она работает. К счастью, нам просто нужно сделать все это один раз

Теперь перейдем к запуску среды. 😎

Часть 4: Среда Unity

Описание: вы установите плагин Unity, создадите среду Unity для демонстрации Balance Ball и обучите демонстрационный проект. Затем вы сохраните сцену тренировки и подтвердите тренировку. Вы можете следить за этим в документации Unity Начало работы с Balance Ball. Ниже я отмечу несколько небольших советов, которые могут помочь.

Начнем с клонирования репозитория Unity ML-Agents:

git clone https://github.com/Unity-Technologies/ml-agents.git

Настройте среду Unity

  1. Убедитесь, что у вас установлена ​​Unity 2017.3+. Я обычно скачиваю и делаю копию репозитория на всякий случай. Обратите внимание, что в этом руководстве я использую ML-агенты версии 0.3.0b.
  2. В меню запуска Unity выберите Открыть проект. Выберите папку Unity-Environment в: ML-Agents > ml-agents-master > unity-environment
  3. Когда проект загрузится, перейдите в папку Assets/ML-Agents/Examples/3DBall/ и откройте сцену.

Настройте TensorflowSharp в Unity

  1. Загрузите плагин TensorFlowSharp и дважды щелкните его, чтобы импортировать в Unity. Он установится в папку: Assets > ML-Agents > Plugins > Computer
  2. Установите настройки проигрывателя в: Edit > Project Settings > Player
  3. Выберите платформу PC, Mac, and Linux Standalone > Other Settings panel> Configuration section
    - Установите для Версия среды выполнения сценария значение Экспериментальная (эквивалент .NET 4.6)
    - В поле Символы, определяемые сценарием добавьте флаг ENABLE_TENSORFLOW
  4. В Resolution and Presentation panel:
    - должен быть установлен флажок Запуск в фоновом режиме.
    - Диалоговое окно разрешения экрана должно быть отключено.

Часть 5. Обучение агентов

По умолчанию неподготовленные модели будут выглядеть примерно так. Шары упадут, и платформы не будут знать, как двигаться, если вы не попытаетесь перемещать их вручную (что не совсем эффективно):

  1. На панели Unity Hierarchy разверните Ball3DAcademy GameObject и найдите его дочерний объект Ball3DBrain. Установите для параметра "Тип мозга" значение Внешний. Использование внешнего мозга обучит агентов в соответствии с нашим пакетом Python.
  2. Создайте и сохраните среду обучения: File > Build settings > Build
    - Убедитесь, что установлена ​​сцена «3D Ball».
    - Назовите файл и сохраните его в корневой папке python:
    ml-agents/python/’your_environment_name.app’
  3. В Терминале запустите обучающую среду:

Сначала используйте PIP для установки docopt (он понадобится вам для запуска сценария на следующем шаге).

pip3 install docopt

Теперь перейдите в свою папку ml-agent:

cd /users/'username'/'path_to_folder'/ml-agents

Затем запустите сценарий learn.py из python/learn.py со своей средой, которую вы сохранили ранее, также в папке python <’your_environment_name.app’> и сообщите ему --train

python3 python/learn.py python/'your_environment_name.app' --train

См. другие варианты для learn.py здесь: https://github.com/Unity-Technologies/ml-agents/blob/master/python/learn.py

4. Сцена откроется в новом окне Unity, и модели начнут обучение. Вы можете изменить количество шагов, скорость и т. Д. Мячи научатся за несколько минут. Теперь модели обучены удерживать мяч от падения:

5. По завершении сеанса обучения обученная модель будет сохранена в:
ml-agents/models/ppo/<‘your_environment_name.bytes’>

Обратите внимание, что вы также можете обучать агентов, используя Блокнот Jupyter (необязательно)

Встраивание обученной модели в Unity

Итак, теперь давайте воспользуемся внутренним мозгом, чтобы поместить в сцену нашу обученную среду.

  1. В объекте сцены Ball3DBrain Unity 3DBall установите для параметра Brain Type значение Internal.
  2. Перетащите подготовленный выходной файл <‘your_environment_name.bytes’> в папку Unity Examples > 3Dball > TFModels. Затем выберите его как модель графика в окне инспектора 3DBallBrain.
  3. Разыграйте сцену. Теперь он работает на тренированной среде и не должен уронить мяч.

Поздравляем, мы сделали это!

Ваша среда настроена, и вы можете попробовать запустить другие демонстрационные сцены. Наслаждаться!

Дополнительные ресурсы

* Если вы хотите узнать больше о Python и средах:



* Подробнее о ML-агентах: