Google Colab — это бесплатный облачный сервис на основе Jupyter Notebook. Google Colab предоставляет всё необходимое для машинного обучения прямо в браузере, даёт бесплатный доступ к невероятно быстрым GPU и TPU. Заранее предупрежу, что у него есть некоторые ограничения, поэтому вы не сможете использовать его для production.  С помощью Google Colab вы можете легко обучить свою модель за считанные секунды. Он поддерживает Python (2/3) из коробки, так что всё должно быть хорошо, верно?  И это, на самом деле, не первый раз, когда я предлагаю заниматься обучением глубоких нейронных сетей на JavaScript. Но даже если предположить на секунду, что это не безумная идея, есть одна проблема. В Google Colab нет встроенной поддержки JavaScript. К счастью, я смог «взломать» его. Благодаря исследованиям, проведённым в этом issue и некоторым простым JavaScript сниппетам, мы можем довольно легко скрестить Google Colab c TensorflowJs. Для того чтобы быстро начать, я создал шаблон. Просто откройте эту ссылку и клонируйте шаблон на Google Диск с помощью команды "Save a copy in Drive".  Теперь у вас есть собственная копия Jupyter Notebook на вашем Google Диске. Выполните код из секции "Prep JS runtime for Google Colab", перезагрузите страницу и всё, ваш JavaScript Jupyter Notebook готов к работе!   В шаблоне Jupyter Notebook заранее прописано ядро javascript. Естественно, при первом запуске на машине, которая вам выделена, нет этого ядра. Поэтому при старте вы увидите сообщение: "Unrecognized runtime javascript; defaulting to python".   Выполнив код в секции "Prep JS runtime for Google Colab", мы устанавливаем ijavascript (это не опечатка — это название npm пакета). Это ядро для Jupyter Notebook, которое поддерживает JavaScript. Более подробно вы можете ознакомиться с проектом на их GitHub репозитории — ijavascript. Перезагрузив страницу, мы вынуждаем Google Colab загрузить ядро javascript и открываем удивительный мир JavasScript и машинного обучения. Если вы не видите следующую строчку, проверьте форматирование кода:  Google Colab имеет тенденцию добавлять или удалять пробелы, это может всё сломать. Чтобы это исправить, нужно написать небольшую функцию. Найти её можно в шаблоне. Так вы можете инициализировать package.json, установить зависимости и запустить несколько команд. Вместо этого используйте старый добрый var. Это действительно важно, поскольку рабочий процесс Jupyter Notebook предполагает, что вы можете запускать код в любом порядке и запускаться несколько раз. Сделать это с помощью let или const не получится. Для запуска асинхронного кода стоит использовать методы $$.async(), $$.done(). В противном случае, ваш код может отработать некорректно. Чтобы облегчить этот процесс, можно воспользоваться данной функцией: Вы можете использовать её для запуска асинхронного кода: Через некоторое время вашу машину уничтожат (подробнее об этом на сайте Google Colab), и при попытке выполнить любой javascript, вы увидите сообщения об ошибках компиляции кода. Скорее всего, вам выделили новую машину. Чтобы это исправить, просто выполните код из секции "Prep JS runtime for Google Colab" и перезагрузите страницу. Обязательно проверяйте, что ваша машина имеет подключенный GPU. К сожалению, иногда Google Colab может выдать машину без GPU. Можете проверить это, выполнив следующий код: Убедитесь, что в логах есть true. Если это не так, попробуйте изменить Runtime Type с GPU на TPU и обратно в меню Runtime → Change Runtime Type.  Есть несколько причин, по которым я предпочитаю JavaScript (TensorflowJS) для машинного обучения: Почему мы должны страдать и использовать все эти помощники? Почему бы не обучать нейронные сети на своём MacBook/PC? Причина в том, что даже для небольших наборов данных, таких как MNIST и простой модели CNN, вы можете получить повышение производительности в 3—7 раз.   Ну и в конечном счёте можете достичь молчания вентиляторов... P.S.: Не забывайте поставить лайк, подписаться на блог Авито и мой Telegram канал Obenjiro — заметки программиста TechLead @ MTS.Digital