tl;dr — разверните сервер с выделенным процессором в Linode за считанные минуты. Используя бесплатный кредит в размере 100 долларов США для новых учетных записей, создайте многопользовательскую среду Jupyter с PrimeHub CE, общедоступной версией комплексной платформы оркестровки MLOps с открытым исходным кодом. Идеально подходит для специалистов по данным и студентов, изучающих машинное обучение

Оглавление

Введение

Сегодня проще, чем когда-либо, развернуть собственный облачный сервер. Это означает, что рынок является конкурентным, и такие сервисы, как Linode, предлагают поощрения за регистрацию, такие как бесплатный кредит на 100 долларов!

В этом руководстве я покажу вам, как установить PrimeHub CE, версию для сообщества замечательного многопользовательского пакета оркестровки машинного обучения.

PrimeHub позволяет группам пользователей обмениваться наборами данных между собой, доступными из их записных книжек. Это делает его отличным для студентов и команд специалистов по данным. Это слишком упрощенное описание платформы, и есть много других функций, но это то, на чем мы сегодня сосредоточимся.

Приблизительное время прохождения этого руководства: 45–60 минут.

Сложность: умеренная. Некоторый предыдущий опыт работы с Linux поможет, но не обязательно (просто следуйте инструкциям, и все будет в порядке)

Примечание. Убедитесь, что в вашем аккаунте есть бесплатный кредит, прежде чем запускать сервер, иначе с вас могут сразу же списать деньги

Создайте учетную запись Линоде

Создайте новую учетную запись в Linode, чтобы получить кредит в размере 100 долларов США. Вы должны увидеть оповещение 100 $ Credit Active над формой регистрации.

После входа в систему добавьте способ оплаты (с вас не будет взиматься плата), чтобы активировать кредит в размере 100 долларов США. На странице вашей учетной записи Linode вы должны увидеть 100 долларов в поле «Акции».

Следите за начисленными расходами, если хотите быть уверенным, что не потратите больше 100 долларов бесплатного кредита.

Подготовить сервер

Как только вы убедитесь, что кредит в размере 100 долларов США находится в вашей учетной записи, вы можете предоставить новый сервер для установки PrimeHub. Нажмите синюю кнопку Создать и выберите первый вариант Linode.

PrimeHub работает на Kubernetes, поэтому вам понадобится сервер с выделенным процессором. Для этого урока я выбрал следующие настройки для моего Linode:

  • Распространение: Ubuntu 20.04 LTS
  • Регион: Фремонт, Калифорния.
  • План Linode: выделенный 8 ГБ, 4 процессора

Стоимость этого сервера в настоящее время составляет 60 долларов США в месяц. Однако Linode выставляет счета по часам, так что вы не потеряете 60 долл. США из своего бесплатного кредита мгновенно. Таким образом, вы можете создавать и уничтожать линоды по своему усмотрению, и вам будет выставлен счет только за то время, пока сервисы были активны.

Примечание.В зависимости от того, сколько ноутбуков вы хотите запускать одновременно, и требуемых вычислительных требований, вы можете выбрать больше ЦП для своего экземпляра Linode. Выбранные выше спецификации соответствуют минимальному минимуму, необходимому для запуска PrimeHub, при этом стоимость использования составляет менее 100 долларов США в течение одного месяца.

Далее на странице введите Корневой пароль (запишите его) и добавьте свои SSH-ключи, если хотите. Нажмите синюю кнопку Создать Linode справа, и ваш сервер начнет подготовку.

Когда все будет готово, на вашем экземпляре Linode появится сообщение РАБОТАЕТ.

Скопируйте команду SSH Access и откройте свой терминал.

Защитите свой сервер

Сначала вы должны защитить SSH-доступ к серверу. Это не обязательно, но рекомендуется. Вы также можете рассмотреть возможность включения брандмауэра и других передовых методов, которые выходят за рамки этого руководства.

В остальной части этого руководства замените <linode-server-ip> фактическим IP-адресом вашего сервера Linode. Это доступно на обзорной странице вашего сервера Linode в разделе IP-адреса и будет иметь формат x.x.x.x.

SSH на сервер как root. Если вы не настроили ключи SSH при настройке Linode, вам будет предложено ввести пароль, который вы установили.

ssh root@<linode-server-ip>

Лучше не использовать SSH как root, поэтому создайте нового пользователя и установите пароль. На примере себя я создам учетную запись для dave. Если вас тоже не зовут Дэйв, вы можете выбрать другое имя 😉

adduser dave

Дайте новой учетной записи пользователя привилегии sudo.

usermod -aG sudo dave

Откройте новый терминал и скопируйте свой локальный SSH-ключ на сервер для новой учетной записи, которую мы только что создали. Введите пароль, который мы только что создали, когда будет предложено.

ssh-copy-id -i ~/.ssh/id_rsa.pub dave@<linode-server-ip>

Все еще на вашей локальной машине, SSH на сервер с новой учетной записью.

ssh dave@<linode-server-ip>

Если ваш SSH-ключ был правильно добавлен, вам не нужно вводить пароль.

Теперь мы отключим аутентификацию пользователя root и пароля через sshd, отредактировав файл sshd_config.

sudo nano /etc/ssh/sshd_config

Измените PermitRootLogin и PasswordAuthentication с да на нет.

PermitRootLogin no
...
PasswordAuthentication no

Сохраните и выйдите из файла, нажав ctrl+x, затем ‘y’ и, наконец, нажмите return.

Перезапустите службу sshd, чтобы изменения вступили в силу.

sudo service sshd restart

Оставайтесь в системе как новый пользователь и обновите ОС.

sudo apt update && sudo apt upgrade

Убедитесь, что git и curl уже установлены (должны быть, но проверить не помешает).

sudo apt-get install git curl

Установите зависимости PrimeHub

Установщик PrimeHub не только устанавливает PrimeHub, но также устанавливает необходимые двоичные файлы и даже помогает настроить MicroK8s.

Изнутри вашего нового сервера Linode клонируйте репозиторий PrimeHub в свой домашний каталог.

cd ~/ && git clone https://github.com/InfuseAI/primehub.git

Установите необходимые бинарники

./primehub/install/primehub-install required-bin

Вы должны увидеть несколько загружаемых двоичных файлов, таких как kubectl, helm, helm-diff и т. д.

Необходимые двоичные файлы установлены в ~/bin, поэтому вам нужно добавить это в свой путь.

echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc

Обновите свою оболочку, указав новый путь.

source ~/.bashrc

Создайте экземпляр MicroK8s с одним узлом

Используйте установщик PrimeHub для создания одного узла MicroK8. Все еще в своем домашнем каталоге на сервере выполните следующие команды.

./primehub/install/primehub-install create singlenode --k8s-version 1.21

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

[Require Action] **Please relogin this session and run create singlenode again**

Откройте новое окно терминала, вернитесь по SSH к серверу, а затем запустите программу установки еще раз, чтобы завершить установку.

./primehub/install/primehub-install create singlenode --k8s-version 1.21

Игнорируйте предупреждение о памяти, если вы его видите.

[Warning] Not enough Memory for installing PrimeHub
  Minimal Memory: 8388608
  Current Memory: 8050328

Если вы выбрали сервер 8 ГБ, упомянутый в начале этого руководства, этого достаточно.

Когда установка завершится, вы должны увидеть это сообщение:

[Completed] Create Single Node K8S

Убедитесь, что nginx-ingress запущен:

curl http://127.0.0.1

Ответ должен быть:

default backend - 404

Настройки графического процессора

Поскольку мы не используем графический процессор для этого сервера, мы можем пропустить установку драйверов. Если вы используете сервер с GPU, ознакомьтесь с Инструкцией по настройке GPU в Документации PrimeHub.

Установить ПраймХаб

Убедитесь, что вы все еще находитесь в своем домашнем каталоге, а затем выполните следующую команду, чтобы установить последнюю версию PrimeHub CE (Community Edition).

./primehub/install/primehub-install create primehub --primehub-ce

При появлении запроса введите домен PrimeHub.

Примечание. Вы можете использовать IP-адрес вашего сервера Linode, полное доменное имя не требуется. Не вводите http перед доменом или IP-адресом.

Например. Если бы IP-адрес вашего сервера Linode был 1.2.3.4, вы должны ввести:

Please enter PRIMEHUB_DOMAIN: 1.2.3.4

При появлении запроса установите KC_PASSWORD (пароль Keycloak) и PH_PASSWORD (пароль PrimeHub).

Please enter KC_PASSWORD: <your-wicked-hard-password>
...
Please enter PH_PASSWORD: <your-wicked-hard-password>

Вы можете записать свои пароли сейчас, но они будут отображаться в конце установки, а также будут сохранены в вашем файле .env (подробнее об этом позже).

Теперь начнется установка PrimeHub, и вы должны увидеть сообщение, похожее на это.

[Progress] wait for keycloak ready
Waiting for 1 pods to be ready...

На этом этапе вы можете открыть другой терминал, подключиться по SSH к вашему серверу Linode, а затем выполнить следующую команду, чтобы посмотреть, как создаются модули Kubernetes.

watch 'kubectl -n hub get pods'

На этом этапе игнорируйте любые ошибки CreateContainerConfigError.

Подождите, пока все модули не перейдут в состояние работает, а затем вернитесь к исходному терминалу и дождитесь сообщения о завершении установки. На сервере 4CPU/8GB создание всех контейнеров и завершение установки заняло около 9 минут.

[Completed] Install PrimeHub
  PrimeHub:   http://<linode-server-ip>  ( phadmin / <your-password> )
  Id Server:  http://<linode-server-ip>/auth/admin/ ( keycloak / <your-password> )
[Completed]

Скопируйте этот блок в безопасное место, поскольку он содержит URL-адреса, имена пользователей и пароли для ваших установок PrimeHub и Keycloak.

Если вы забудете свои пароли, их можно восстановить позже, проверив этот файл.

cat ~/.primehub/config/microk8s/.env

Настройка после установки

Эта часть важна, поэтому не пропустите ее.

После установки PrimeHub CE для версий 3.10.1 и более ранних нам необходимо изменить уровень ведения журнала fluentd, иначе Ruby начнет использовать около 50% ЦП. Fluentd не используется в PrimeHub CE и будет удален в более поздних версиях, но сейчас вам нужно применить следующую настройку.

Запустите top, и вы увидите, что Ruby использует много ресурсов ЦП.

Сделайте резервную копию ConfigMap с использованием PrimeHub:

kubectl -n hub get cm primehub-fluentd -o yaml > primehub-fluentd-backup.txt

Отредактируйте ConfigMap с использованием PrimeHub:

kubectl -n hub edit cm primehub-fluentd

Это откроет ConfigMap в Vim. Нажмите «i» для режим вставки, а затем добавьте следующие строки:

<system>
  log_level error
</system>

Теперь ваша карта ConfigMap, переведенная с PrimeHub, должна выглядеть следующим образом.

...
apiVersion: v1
data:
  fluent.conf: |
    <system>
      log_level error
    </system>
    <label @FLUENT_LOG>
      <match fluent.**>
        @type null
      </match>
    </label>
...

Убедитесь, что ваш отступ соответствует остальной части файла. Затем нажмите escape и введите :wq, чтобы сохранить и закрыть файл. Вы увидите следующее сообщение, указывающее на то, что ConfigMap был обновлен:

configmap/primehub-fluentd edited

Чтобы изменения вступили в силу, вам нужно убить модуль fluentd.

Выполните следующую команду, чтобы найти модуль fluentd:

kubectl -n hub get pods | grep fluentd

Вывод будет примерно таким:

primehub-fluentd-sln8g                             1/1     Running     0          42m

Скопируйте имя вашего модуля fluentd, а затем уничтожьте его с помощью этой команды (измените имя модуля, чтобы оно соответствовало выходным данным выше):

kubectl -n hub delete pod primehub-fluentd-sln8g

Вы увидите сообщение:

pod "primehub-fluentd-sln8g" deleted

Теперь, если вы проверите top, вы увидите, что Ruby больше не использует так много ресурсов процессора.

Начните использовать ПраймХаб

Войдите в PrimeHub с именем пользователя и паролем, которые отображались в сообщении о завершении установки.

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

Как администратор (учетная запись phadmin по умолчанию является учетной записью администратора), вы также можете получить доступ к Порталу администратора. Чтобы получить доступ к порталу администратора, наведите указатель мыши на меню профиля в правом верхнем углу и выберите Портал администратора.

Настройки портала администратора

На портале администратора вы можете управлять всеми аспектами установки PrimeHub. Основные вещи, на которых вы, вероятно, сосредоточитесь:

В следующих статьях будет больше информации об использовании этих аспектов PrimeHub. А пока давайте сосредоточимся на запуске сервера ноутбуков.

Включить общий том

Одним из основных преимуществ PrimeHub является то, что это многопользовательская среда с общими ресурсами. Это означает, что пользователи ноутбуков могут обмениваться наборами данных друг с другом.

Имея это в виду, давайте включим общий том для группы по умолчанию phusers.

На портале администратора нажмите «Группы» на левой боковой панели, а затем нажмите значок карандаш в столбце действий для группы phusers.

Включите переключатель Общий том и введите Емкость общего тома. Если вы используете минимальные спецификации, которые я описал в начале этого руководства, то вы, вероятно, захотите пока оставить это значение на уровне 1 ГБ.

Прокрутите вниз и нажмите кнопку Обновить, чтобы применить изменения.

Запустите сервер ноутбука

Убедитесь, что вы включили Общий том, как описано выше. Затем нажмите ‹ Вернуться на пользовательский портал в правом верхнем углу (под логотипом PrimeHub).

Нажмите Ноутбуки на левой боковой панели, а затем нажмите кнопку Запустить мой сервер:

Выберите Настройки Блокнота.

  • Тип экземпляра — вычислительные ресурсы, которые вы хотите использовать.
  • Изображение — образ среды, с которым вы хотите запустить Блокнот.

Нажмите Запустить блокнот, чтобы запустить блокнот.

Если вы впервые используете этот образ, вам может потребоваться несколько минут, чтобы извлечь (загрузить) образ перед запуском сервера ноутбука.

Совет. Во время загрузки образа, если у вас все еще открыт терминал с запущенной командой watch, вы должны увидеть создание модуля. Вы можете увидеть Jupyter-phadmin в нижней части снимка экрана ниже.

Когда сервер ноутбука будет готов, вы должны увидеть следующий экран:

Нажмите кнопку Запустить Notebook Server, чтобы открыть блокнот.

В структуре папок слева вы можете увидеть папку phusers. Это Общий том, который мы включили ранее, и место, где вы сможете обмениваться данными с другими пользователями.

Теперь вы можете создавать больше пользователей и одновременно запускать несколько блокнотов Jupyter (если позволяют ресурсы). Вы всегда можете изменить размер вашего Linode позже, если вам это нужно.

Заключение

В этом руководстве вы подготовили новый сервер в Linode, установили PrimeHub поверх MicroK8, настроили общий том для своей первой группы и запустили сервер ноутбуков. Нам еще многое предстоит узнать о том, как использовать PrimeHub, но мы прибережем это до следующего раза.

Присоединяйтесь к сообществу

А пока, почему бы вам не присоединиться к сообществу InfuseAI! Вы можете поделиться любым отзывом, который у вас может быть, и узнать больше о том, как получить максимальную отдачу от PrimeHub, с другими учеными-единомышленниками и профессионалами MLOps.

Вы можете найти нас онлайн здесь:

  • Присоединяйтесь к InfuseAI Discord, чтобы пообщаться о науке о данных и темах mlops
  • Подпишитесь на нас в Твиттере
  • Отметьте нас на GitHub