Познавате ли Юпитер?

Jupyter е колекция от уеб базирани инструменти с отворен код, които ви позволяват да създавате и поддържате документи, които могат да съдържат код на живо, изходни кодове, визуализации и т.н. Това ви предоставя прост интерфейс за бързо стартиране на код на живо и документиране на изходите в едно страница. Тези документи, съдържащи код и техните резултати, се наричат ​​тетрадки на Jupyter.

Jupyterlab е един от инструментите в Project Jupyter. Това е интерактивна среда за разработка от следващо поколение за преносими компютри Jupyter. Предоставя ви среда, подобна на IDE, за стартиране и документиране на изходен код, визуализации на документи и т.н. Това е чудесен инструмент за изучаване на машинно обучение и развитие върху него.

Въведение

Обикновено сме свикнали да изпълняваме преносими компютри Jupyter или Jupyter lab на нашите локални машини. Но много пъти имаме нужда да стартираме същото на сървър, за да можем да имаме достъп до него и от други системи. Това премахва зависимостта от вашата локална система и можете да продължите развитието си отвсякъде.

В тази публикация ще премина през процес за внедряване на сървър на Jupyter Lab в AWS с помощта на Docker. Този метод по никакъв начин не е подходящ за производствена среда. Това трябва да задоволи личната ви нужда да работите върху среда на Jupyterlab онлайн. За да го активирате за достъп на множество потребители, има включени други настройки, които не се обсъждат в тази публикация.

Направих всички необходими файлове достъпни в репото на Github по-долу:
https://github.com/amlana21/jupyterlab-server-publish

Това, от което се нуждаете

По-долу са предварителните условия за този процес и за успешно стартиране на средата на сървъра:

  • AWS акаунт
  • Докер
  • По-долу се използват в контейнера на Docker за стартиране на Jupyterlab:

1. Nginx

2. Python

3. Юпитер

В останалата част от публикацията ще разгледам как тези компоненти работят заедно, за да осигурят окончателно функциониращата среда на Jupyterlab.

Архитектура на високо ниво

По-долу е инфраструктурна архитектура на високо ниво, която ще бъде внедрена на AWS с помощта на Cloudformation. Докер услугите ще бъдат внедрени в екземпляра EC2 с помощта на файла за съставяне на докер.

Картината по-долу показва как услугите на Docker са оркестрирани с помощта на файла за съставяне на docker. Показан е и потокът на заявка от потребител към работещата услуга на Jupyterlab. В следващите раздели ще опиша подробно докер услугите.

Относно Docker услугите

Тук има две услуги. Тези две услуги са дефинирани във файла за съставяне на докер. По-долу е дадено кратко описание на всяка услуга:

nginxservice: Това ще действа като обратно прокси и средство за балансиране на натоварването за насочване на входящите връзки към екземпляра. Тъй като използваме само един екземпляр, няма да се нуждаем от голяма част от балансирането на натоварването тук. Създаден е персонализиран конфигурационен файл за това, за да препраща конкретни връзки към бележника към услугата/контейнера на лабораторията на Jupyter. За да използвате персонализирания конфигурационен файл, Dockerfile има е създаден за персонализиране на изображението на Nginx. Предоставих Dockerfile в репото и файлът за съставяне на docker включва стъпка за изграждане за изграждане на изображението в движение. Ако е необходимо, това може да бъде предварително изградено и преместено в Docker hub. След това това изображение може да се използва във файла за съставяне на докер.

jupyterbook: Това е действителната услуга на Jupyter Lab, която ще изпълнява преносимите компютри Jupyter. Това също е персонализирано с помощта на персонализиран конфигурационен файл. Персонализираният конфигурационен файл трябва да посочи някои персонализирани настройки и токен за влизане. Включих Dockerfile за персонализирано изображение на услугата Jupyter Lab. Персонализираното изображение е базирано на Ubuntu и инсталира Python, Jupyter на Ubuntu, след което стартира услугата Jupyter lab. Има стъпка за изграждане във файла за съставяне на докер, който изгражда изображението и стартира контейнера от него. Това също може да бъде изпратено до Docker Hub и изображението може да се използва във файла за композиране. Във файла за композиране също има определен том. Този том има за цел да поддържа данните от бележника на Jupyter последователни при рестартиране на услуга или контейнер поради различни причини.

jupyternet: Това е мрежата, която ще обработва комуникациите вътре в контейнера. Това също се създава заедно с другите услуги. И двете услуги се стартират с тази мрежова настройка.

Стартирайте Разходка

След това ще преминем през стъпките за стартиране на екземпляра и разполагане на докер услугите върху него.

Стартиране на инфраструктура

Ние ще стартираме инфраструктурата и инстанцията, необходими за това, използвайки Cloudformation. Включих шаблона CloudFormation в Github repo. Това може да се използва за бързо стартиране на цялата инфраструктура. По-долу са описани стъпки на високо ниво за използване на шаблона и създаване на инфра:

  1. Влезте в AWS акаунт
  2. Създайте нова двойка ключове, ако в акаунта няма съществуваща двойка ключове
  3. Отидете до страницата на услугата Cloudformation
  4. Щракнете върху бутона, за да създадете нов стек и изберете файла с шаблон, изтеглен от Github repo
  5. Следвайте екраните и изберете съответните настройки
  6. Стартирайте стека и изчакайте да завърши
  7. Обърнете внимание на публичния IP или домейн на екземпляра

Подгответе инстанцията

За да подготвите екземпляра, така че услугите да могат да бъдат стартирани, docker и docker-compose трябва да бъдат инсталирани на екземпляра. Моля, следвайте стъпките в официалната документация на докера, за да инсталирате същите.
https://docs. docker.com/install/linux/docker-ce/ubuntu/
https://docs.docker.com/compose/install/

Разположете докер услугите

След като екземплярът е готов, следващата стъпка е да стартирате услугите и да стартирате сървъра на Juperlab. Следвайте командите по-долу в екземпляра, за да стартирате и стартирате докер услугите:

Клонирайте репото:Клонирайте моето репо в github, за да получите всички необходими файлове за услугата за докериране.
git clone <repo_url>

Придвижете се до папката за репо
cd <folder_name>

Стартиране на услугите:Изпълнете командата за стартиране на докер услугите, дефинирани във файла за композиране.
docker-compose up -d
Това ще отнеме известно време за стартиране на всички услуги. След като бъде направено, ще се върне към подканата.

Проверете услугите:Изпълнете командата по-долу, за да проверите дали услугата работи успешно. Тъй като използваме единичен екземпляр, а не рояк, ще видим контейнерите да работят, а не действителна услуга.
docker container ls
Ако всички изброени контейнери показват състояние „нагоре“, тогава стартирането е било успешен.

Проверете приложението

След това ще проверим дали приложението е стартирано успешно. За да стартирате лабораторията на Jupyter в браузъра, отворете този URL адрес:
<server_url>:80
Това ще отвори страницата по-долу. Предоставете токена от конфигурационния файл на бележника като парола на тази страница.

След като влезете, ще бъдете в средата на лабораторията на Jupyter, откъдето може да се стартира нов бележник или да се използват други нормални функции на Jupyterlab.

Забележка: Ако след влизане страницата не се зареди, опреснете страницата и тя трябва да отвори приложението Jupyter lab.

Заключение

В тази публикация минах през процес за внедряване на лабораторен сървър на Jupyter с помощта на Docker. Надяваме се, че това ще помогне на някои от вас да създадат свои собствени екземпляри на лабораторията на Jupyter, за да научат или за друга употреба на преносими компютри Jupyter. Това е много ясен начин за стартиране на основен лабораторен сървър на Jupyter. За повече персонализирани настройки и повече контрол върху средата, конфигурационният файл на Jupyter може да бъде персонализиран с повече настройки. Не на последно място, този метод не е подходящ за производство и работи само за един потребител. За производствена употреба или за многопотребителска употреба ще са необходими промени в конфигурационния файл на бележника и някои други настройки в докер услугите. За производствена употреба внедряването на докер стек ще бъде за предпочитане пред докер композирането.
За всякакви допълнителни въпроси или проблеми, моля, свържете се с мен на [email protected].