📋 Нейросеть в Роблоксе
🤔 Этот пост будет посвящен теме того, как я реализовал рабочий алгоритм нейросети в Роблокс Студио, без связи с API и т.д. Это значит, что нейросеть работает полностью локально на плейсе, и её можно обучать под свои задачи. И применять целиком в игре, работает быстро.
🕵️ Конкретных функций или примеров я раскрывать не буду, кроме главного — MLP (многослойный перцептрон, то есть сама нейросеть). Я реализовал этот алгоритм довольно быстро и просто, поскольку он занимает всего несколько функций. Но сам по себе MLP (нейросеть) бесполезна, если на входе не будет нужных данных.
🧐 А то, как извлекать эти данные, и как настраивать это всё — отдельное искусство. Я только и могу, что ходить вокруг да около, так как содержимое временно находится в секрете, так что буду называть конкретные проблемы и нюансы, с которыми я сталкивался:
📂 1. Все скрипты в Роблокс Студио работают на одном ядре процессора. То есть, сама по себе скорость обучения сильно ограничена (не говоря уже об обучении на видеокарте). На скорость работы нейросети после её обучения это не особо влияет, мощностей (одного ядра) хватает.
💾 2. Если сохранять нейросеть в DataStore (облако Роблокса), то вы столкнётесь с лимитом в 4МБ на один слот сохранения. Я победил проблему, разбивая нейросеть на "чанки" данных. Однако, есть общий лимит на ~128МБ, даже учитывая чанки, но этого должно с головой хватать, и я этот лимит не превышал. Однако я не уверен, что общий лимит именно такой.
🛠 3. Движок Роблокса сильно ограничен в современных архитектурах, такие как "трансформеры", например. Вместо них я использую более простые аналоги, а также надумываю придумать свою новую архитектуру конкретно для Роблокса (понимание мира, или что-нибудь такое), чтобы расширить спектры технологий. Главное, что многослойный перцептрон (MLP), то есть саму нейросеть, можно реализовать без проблем, что я и сделал!
⏳ 4. У скриптов в Роблоксе есть лимит на 30-60 секунд задержки в скрипте, так что приходится делать микро-паузы task.wait() каждый фрагмент обучающих данных (batch). Это не душит, но стоит учесть, что за раз нейросеть не может обрабатывать что-либо больше 30-60 секунд.
🏃 5. Само обучение происходит во время запущенного сервера игры ("play"), и сама нейросеть хранится локально на сервере, пока её не сохранить в каком-либо подходящем формате (DataStore — рабочий метод, как я уже описывал).
Увидимся ещё ночью! 🐢