SNaaS инструментарий в научных исследованиях и образовании

Славянский форум. 2017. № 1 (15). С. 218-226.

25. Иванников А.Д., Тихонов А.Н., Цветков В.Я. Основы теории информации - М.: Макс ПРЕСС, 2007. 356 с.

26. C.E. Shannon, (1948). A Mathematical Theory of Communication // Bell System Technical Journal. V. 27. P. 379-423 & 623-656. July & October. 1948.

27. Мартин Н., Ингленд Дж. Математическая теория энтропий. -М.: Мир, 1988. 51 с.

28. Tsvetkov У.Уа. Information Asymmetry as a Risk Factor // European Researcher. 2014. V. 86. № 11-1, Р. 1937-1943

29. Кудж С.А. Риски информационной асимметрии // Перспективы науки и образования. 2016. № 6. С. 23-27

Information asymmetry and information uncertainty

Elsukov P.Yu, Federal State Institution of Science Institute of Energy Systems. LA Me-lentyeva Siberian Branch of the Russian Academy of Sciences (ESI SB RAS), Irkutsk, Russia

The article explores the phenomenon of information asymmetry. Information asymmetry is presented as an information situation model. The model of information asymmetry is transformed into an information field and subjected to a phenomenological analysis. The article reveals the nature of information asymmetry. The article describes a model experiment showing the elimination of information asymmetry. The article contains a formal description of the information asymmetry of the information correspondence. The article describes the content of information asymmetry in the field of semantics. The article proves that the main reason for the sign information asymmetry is the difference between the extensional and intensional meaning of the sign. The article analyzes information uncertainty on the basis of the entropy approach. The article proves the fundamental unavoidability of such uncertainty. The article examines three types of risk. The risk caused by information asymmetry. The risk caused by the probabilistic nature of the information situation. The risk caused by the vagueness of the information situation. The article shows the difference between these types of risks.

Keywords: information, information situation, information asymmetry, sign asymmetry, information uncertainty, fuzzy, risk.

УДК 004.67

SNAAS ИНСТРУМЕНТАРИЙ В НАУЧНЫХ ИССЛЕДОВАНИЯХ И

ОБРАЗОВАНИИ

Ижванов Юрий Львович, к.т.н. e-mail: izh.yury@bk.ru

Статья посвящена различным аспектам облачной модели SNaaS - "Science Notebook as a Service" для обработки и анализа научных данных. Рассматриваются наиболее популярные для реализации SNaaS программные продукты с открытым кодом. Отмечается активное развитие SNaaS в мире и практически полное отсутствие SNaaS сервисов и ресурсов, ориентированных на русскоязычного пользователя.

Ключевые слова: Облачные технологии, обработка научных данных, научно-образовательные ресурсы, распределенные вычисления, программное обеспечение с открыты кодом.

Бурное развитие облачных технологий, становление Data Science как отдельной отрасли знаний и "бум" BigData не оставили в стороне и работу в облаке с научными данными. Можно с уверенностью утверждать, что наравне с такими сервисами как «инфраструктура как сервис» IaaS, «платформа как сервис» PaaS, «программное обес-

печение как сервис» SaaS, «бэкенд как сервис» BaaS, «сеть как сервис» NaaS, «персональный компьютер как сервис» DaaS (Desktop as a Service) (и даже «суперкомпьютер как сервис» (HPCaaS - High Performance Computer as a Servise)) в настоящее время активно развивается гибридная разновидность облачных сервисов, для научных вычислений, которую мы будем для простоты условно называть SCaaS (Science Cloud as a Service). Согласно концепции SCaaS ученый, исследователь, преподаватель, студент получают в облаке не «голый» виртуальный компьютер и не доступ к какой либо одной или нескольким фиксированным программам, а виртуальный компьютер с предустановленным на нем и потенциально пополняемым (и создаваемым) пользователем набором научных и учебных программ и данных. Преимущества такого подхода в обоих случаях заключаются в том, что пользователь получает необходимый ему готовый (и пополняемый) набор инструментов работы с данными без необходимости (как правило) вникать в детали инсталляции и взаимодействия этих инструментов на системном уровне, а также получает возможности осуществления поиска, загрузки, обработки, хранения, анализа, визуализации, передачи, публикации, совместной работы и других манипуляций с данными. Другпм драйвером использования облачных технологий для операций с научными данными является то обстоятельство, что объем подлежащих обработке данных во многих научных областях намного превосходит доступный объем памяти персонального компьютера, а для их обработки в разумное время необходимо использовать распределенные вычислительные ресурсы и методы. При этом пользователь при наличии доступа в сеть Интернет получает возможность работы со своими выделенными ему ресурсами в любое время, в любом месте и с любого, в том числе мобильного, устройства (что, впрочем, присуще большинству облачных приложений). Далее рассматривается только один аспект SCaaS - работа с т.н. блокнотами или записными книжками (notebooks). Соответственно, используется и более узкий термин SNaaS - Science Notebook as a Service. Здесь перевод слова notebook гораздо ближе к приведенным терминам «записная книжка» или «блокнот», чем к уже общепринятому в русскоязычной литературе «портативный компьютер». В основе концепции блокнота (записной книжки) лежит объединение в рамках одной интерактивной оболочки программного кода, а также текста (в широком смысле) и мультимедиа ресурсов, в том числе графических результатов работы программы. Смысл использования записной книжки в том, что пользователь может в одной интерактивной среде сопровождать свои научные исследования записями, формулировками задач, оперативным изменением их постановки, вычислениями и анализом данных, публикацией результатов исследований и т.д. Эта концепция полностью вписывается в идеологию воспроизводимости научных исследований (Reproducible Science [1]). Нужно сказать, что с технологической точки зрения SNaaS (равно как и SCaaS) не является новым типом облачных технологий, а лишь принятой в данной статье удобной аббревиатурой.

В данной работе рассматриваются только платформы с открытым программным кодом (или, по крайней мере, имеющие версии с открытым кодом), поскольку платформы на базе которых построены многие коммерческие облачные сервисы (такие, например, как Matlab Online, Maple Cloud, Folfram Cloud и др.) являются закрытыми (хотя зачастую и созданными на базе открытого ПО) и пользователям не предоставляются в принципе. Интересно в связи с этим упомянуть высказывание одного из создателей, основанного на ПО с открытым кодом, сервиса SageMath Виляма Стайна (William Stein): «Не опубликовать код программы, в соответствии с которым были произведены вычисления, это все равно, как не опубликовать доказательство математической теоремы» [2].

По мнению автора, новизна статьи заключается в комплексном анализе суще-

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

Многие SNaaS, в частности Google Cloud Datalab, SageMath Cloud и другие построены на основе платформы Jupyter, являющейся развитием проекта IPython, или интегрированы с ней. Пользователь работает с ресурсами IPython с помощью приложения IPython Notebook и файлов с расширением ipynb («записные книжки», «блокноты»). Каждая записная книжка в IPython состоит из секций или клеток (cells). Каждая клетка может содержать обычный текст, текст на языках HTML или Markdown, текст LaTeX, программный код, результаты вычислений в разных видах (таблицы, графики, мультимедиа и т.п.). Идея блокнотов/записных книжек восходит к временам появления пакетов Matlab и Mathematica. Основным отличием Jupyter от IPython является возможность использования в Jupyter других языков кроме Python: Scala, Julia, C, C#, Ruby, Haskell, Perl и многих других с помощью установки соответствующих ядер, полный список которых можно найти по ссылке [3] (исходное IPython ядро Jupyter носит название «нулевого» - Kernel Zero). Само ПО для работы с упомянутыми языками программирования и необходимые для работы библиотеки нужно, естественно, устанавливать отдельно. Особого упоминания заслуживает ядро для работы с платформой распределенных вычислений Apache Spark. Блокноты .ipynb могут быть экспортированы в документы html, Latex, pdf, Markdown, reStructuredText и слайды Reveal.js. Некоторой разновидностью фронт-энда для работы с Jupyter/(Ipython) блокнотами является, упомянутая в таблице, десктопная GUI оболочка nteract, в которой каждый блокнот в отличие от «классического» Jupyter Notebook открывается в своем собственном окне.

Самым простым вариантом SNaaS является предоставление пользователю возможности работы с Jupyter (IPython) Notebook на удаленном компьютере (в облаке). Такая возможность в Jupyter (и IPython) имеется. При этом возможны два варианта. В первом из них между компьютером пользователя и компьютером-сервером устанавливается ssh тоннель и никаких изменений в конфигурации Jupyter на сервере при этом производить не нужно. Во втором случае используется SSL/HTTPS протокол и парольная аутентификация, при этом Jupyter конфигурируется соответствующим образом для работы с внешним пользователем. В обоих случаях на стороне сервера используется web-сервер Tornado, взаимодействующий с Jupyter Notebook, а на стороне клиента обычный web-браузер. Другим шагом в сторону «облачного» использования Jupyter является вариант, при котором Jupyter устанавливается на компьютере пользователя, а сами блокноты хранятся, например, на Google Drive. Такой вариант возможен и реализуется с помощью дополнительного ПО Jupyter Drive.

JupyterLab является еще одним вариантом работы с блокнотами Jupyter в браузере. Его отличием от Jupyter notebook является, то что у пользователя имеется возможность одновременной работы с несколькими блокнотами, консолями, текстовыми редакторами (в т.ч. vim и emacs). ПО JupyterLab находится в стадии активной разработки и доступно в настоящий момент (написания статьи) в альфа версии.

Интересным вариантом, работы с Jupyter блокнотами, предлагаемым Google, является ПО Google Cloud DataLab, которое может быть установлено на локальном компьютере пользователя или в Google Cloud Environment. Инсталлируется в виде Docker контейнера, содержащего большой набор предустановленных Python библиотек. Само ПО Google Cloud DataLab является свободно распространяемым. Однако оно тесно интегрировано с такими сервисами Google, как Big Query и Storage, использование которых является, вообще говоря, платным.

Полноценный многопользовательский доступ к Jupyter Notebook предоставляет платформа JupyterHub. Точнее этот фреймворк позволяет динамически инициализировать необходимое количество однопользовательских Jupyter серверов. В состав Ju-pyterHub входит уже упомянутый web-сервер Tornado, proxy сервер на основе Node-js и однопользовательские Jupyter Notebook сервера (по числу пользователей). Jupyterhub

предоставляет гибкий механизм аутентификации пользователей. По умолчанию используется стандартный в Linux PAM. Однако пользователь может сам сконфигурировать/встроить любой другой механизм аутентификации. Отработанным в JupyterHub вариантом является в частности использование системы аутентификации, встроенной в OAuth, для чего пользователь, конечно, должен быть зарегистрирован в соответствующем сервисе (поддерживается GitHub, GitLab, Google, OpenShift, Globus). Проект в настоящее время активно развивается и хорошо документирован. Имеется REST API, позволяющий в частности создавать собственные приложения для администрирования JupyterHub (определение активных пользователей, добавление и удаление пользователей, запуск и остановка однопользовательских серверов и т.п.). Одна из привлекательных возможностей инсталляции JupyterHub - инсталляция с использованием Docker контейнера. Написан JuputerHub в основном на Python. В настоящее время JupyterHub инсталлирован в ряде университетов, научных организаций и суперкомпьютерных центров: университетах Беркли, Иллинойском, Мичиганском, Сан-Диего, математическом институте Эйнштейна и других.

Проект Sage (System for Algebra and Geometry Experimentation), сейчас более известный как SageMath был создан в 2005 году как альтернатива платным продуктам Matematica, Magma, Maple и Matlab. Sage включает в себя множество математических пакетов и библиотек на Python (SymPy, Maxima, GSL, SciPy, NumPy и др.), однако пользователь при этом пишет программный код не на Python, а на его Sage - диалекте, ориентированном на более удобное программирование решения математических задач. Блокноты Sage (SageMath worksheet) отличаются по формату от блокнотов Jupyter. Но, в то же время, Sage поддерживает и блокноты Jupyter. Код Sage в основном написан на языках Python и Cython, а также, в меньшей степени, использует C/C++, Lisp, Fortran. Имеются интерфейсы для взаимодействия с другими приложениями, такими как Matematica, Magma, Maple и др. Sage поддерживает параллельные и распределенные вычисления, предоставляет в частности возможность реализации схемы MapReduce. Sage также как и Jupyter может быть доступен удаленно с использованием встроенного web-сервера, однако как и в случае с Jupyter/JupyterHub существует облачно-ориентированная версия Sage - SageMathCloud. Кроме этого существует упрощенный серверный вариант Sage - SageMathCell, в котором пользователь может выполнять и отлаживать несложные программы на языке Sage в окне браузера, т.е. фактически в рамках одной ячейки (cell).

Код SageMathCloud написан в основном на модных сейчас Node.js и CofeeScript с использованием ряда вспомогательных инструментов. SageMathCloud находится в стадии активной разработки и разворачивать его в собственной облачной инфраструктуре можно только с учетом этого фактора: либо скачав тестовый Docker образ, либо установив текущую версию программного кода.

Написанный на Java фреймворк Zeppelin также базируется на близкой к Jupyter концепции записных книжек/блокнотов. Блокнот (notebook) в Zeppelin состоит из заметок (notes). Каждая заметка состоит из параграфов. Каждый параграф имеет две секции: программный код и результат его выполнения. Кроме собственно выполнения кода, над параграфами аналогично операциям над секциями в Jupyter, в Zeppelin возможно выполнение различных операций поиска, перемещения вверх и вниз, вставки, удаления и т.п. Блокноты note хранятся (экспортируются) в json файлах и с некоторыми ограничениями могут быть экспортированы в формат ipynb. Результаты вычислений можно встраивать в html код других сайтов. Главной особенностью Zeppelin является возможность использования различных интерпретаторов (аналог ядер Jupyter). Под интерпретаторами здесь понимаются плагины, позволяющие использовать в Zeppelin различные языки программирования и инструменты (Scala, Python, SQL, JDBC, shell и т.д.). Zeppelin предоставляет пользователю в рамках парадигмы интерпретаторов в частности возможности использования ПО для распределенных вычислений и работы с Big Data:

Cassandra, Apache Ignite, Apache Spark, Apache Flink, SCIO и многих других. На основе Zeppelin построен облачный сервис ZeppelinHub.

Одним из наиболее распространенных языков программирования для научной и в особенности статистической обработки данных является язык программирования R. Как и для других языков программирования для R существует несколько популярных IDE, одним из которых является фреймворк RStudio существующий в десктопном и серверном вариантах. Начиная с версии 1.0 в RStudio реализована собственная версия оболочки для работы с блокнотами - R Markdown Notebooks. Секции кода в RStudio Notebook (chunks) могут содержать тексты на R, Python, Stan, SQL и Rcpp. Блокнот хранится в формате R Markdown (.rmd) и автоматически экспортируется в документ html, а также может быть экспортирован в MS Word или pdf. Публикация блокнотов может быть осуществлена с использованием серверной платформы RStudio Connect. В связи с тем, что RStudio является полноценным IDE, RStudio Noteboook обладает рядом положительных свойств, облегчающих программирование: в RStudio Notebook возможно построчное выполнение кода, имеется полноценный файловый менеджер, контекстная помощь, поддержка версий и т.п. Кроме того в RStudio Notebook более удобно чем в Jupyter реализована поддержка стилей, лучше реализован вывод таблиц (в частности поддерживается нумерация страниц при выводе многострочных таблиц), поддерживаются оглавления и т.п. Тем не менее, «в войне» фреймоворков Jupyter не собирается сдавать свои позиции и многие из положительных качеств RStudio Notebook реализуются с помощью соответствующих расширений и дополнений, находящихся в активной разработке.

В завершение необходимо отметить еще несколько аналогичных рассмотренным программных продуктов: H2O Flow, Data Science Toolbox, TMPNB, а также упомянуть об инструменте просмотра Jupyter блокнотов - NBViewer. Он позволяет, как следует из названия, просматривать блокноты Jupyter без возможности их редактирования и тем более исполнения содержащегося в блокнотах программного кода.

В настоящее время в англоязычной части сети Интернет можно найти ряд сайтов, предоставляющих SNaaS сервисы, а также множество блокнотов Jupyter (в основном), Apache Zeppelin, Beaker и RStudio Notebook. И их число непрерывно растет. Как прави-

ло, эти блокноты собраны в коллекции тематической направленности. В качестве примеров можно привести MS Azure Notebooks (https://notebooks.azure.com/), Kaggle (https://www.kaggle.com/kernels), BIANPP (http://nb.bianp.net/sort/views), RPubs (https://rpubs.com/) и множество других. В то же время в российском сегменте сети Интернет сервисы SNaaS отсутствуют, равно как, и практически отсутствуют русскоязычные коллекции научных и образовательных ресурсов такого типа.

Список использованных источников

1. https://www.nature.com/articles/s41562-016-0021

2. http://www.washington.edu/news/2007/12/06/free-software-brings-affordability-transparency-to-mathematics-2/

3. https://github.com/jupyter/jupyter/wiki/Jupyter-kernels

SNAAS instruments in scientific reserarch and education Yury Izhvanov, Ph.D

Article is devoted to the different aspects of SNaaS model - «Science Notebook as a Service». Most popular open code software for the SNaaS realization are analyzed. Active development of the SNaaS in the world and almost complete absence of the SNaaS services and resources for the Russian language users is mentioned.

Key Words: doud technologies, scientific data processing, scientific and educational resources, distributed computing, open source software.

УДК 612.833, 001.6

ИНКРЕМЕНТНОЕ МОДЕЛИРОВАНИЕ В МЕДИЦИНСКОЙ ДИАГНОСТИКЕ

Номоконова Ольга Юрьевна, врач терапевт пульмонологического отделения; врач аллерголог-иммунолог консультативно-диагностической поликлиники e-mail: olyanom1@mail.ru ГБУЗ Иркутская областная клиническая больница 664049, Иркутск, микрорайон Юбилейный, 100

Статья предлагает инкрементный метод диагностики в новом представлении. Инкрементное моделирование предлагается выполнять в виде спиральной модели. Анализируется первичная диагностическая ситуация. Дается сравнение итеративной, линейной инкрементной и спиральных моделей - применяемых в проектировании. Доказана возможность применения спиральной модели как основы инкрементной модели. Описаны принципы инкрементного моделирования. Показано, что оно применимо при решении задач второго рода. Показано различие между эвристическим и инкрементным моделированием. Статья показывает, что инкрементное моделирование можно применять при диагностике в сложных ситуациях, при больших данных и не согласованной первичной информации.

Ключевые слова: медицинская диагностика, моделирование, итеративное моделирование, инкрементное моделирование, спиральное моделирование, задачи второго рода.

Введение. За рубежом в медицине широко применяют инкрементальную диагностику (Incremental diagnostic) в основном в области кардиологии [1-3]. В России о ней пока мало пишут. За рубежом используют термин «инкрементальный», в России применяют термин «инкрементный», хотя это одно и то же. Incremental Model переводят как инкрементная модель. Инкрементное моделирование широко применяют при проектировании и даже при поддержке принятия решений. Однако внимательное изучение показывает, что применение данного термина не является всегда корректным.