Искусственный интеллект (ИИ) и машинное обучение (ML) буквально в эти дни в огне. Перевод широкого спектра использования, начиная от автомобилей с самостоятельным вождением до обнаружения наркотиков, и для Бога знает что. У AI и ML есть яркое и процветающее будущее впереди.
С другой стороны, Docker произвел революцию в вычислительном мире благодаря введению эфемерных легких контейнеров. Контейнеры в основном упаковывают все программное обеспечение, необходимое для запуска внутри изображения (куча слоев Readonly) со слоем коровы (копия на записи), чтобы сохранить данные.
Достаточно разговоров, давайте начнем с создания контейнера для Data Science Python.
Наш контейнер для данных Python использует следующие пакеты Super Cool Python:
- Numpy : Numpy или числовой питон поддерживает большие многомерные массивы и матрицы. Он обеспечивает быстрые предварительные функции для математических и численных процедур. Кроме того, Numpy оптимизирует программирование Python с мощными структурами данных для эффективного вычисления многомерных массивов и матриц.
- Scipy : SCIPY предоставляет полезные функции для регрессии, минимизации, трансформации Фурье и многих других. Основываясь на Numpy, Scipy расширяет свои возможности. Основная структура данных Scipy снова представляет собой многомерный массив, реализованный Numpy. Пакет содержит инструменты, которые помогают в решении линейной алгебры, теории вероятностей, интегрального исчисления и многих других задач.
- Панды : Панды предлагают универсальные и мощные инструменты для манипулирования структурами данных и выполнения обширного анализа данных. Он хорошо работает с неполными, неструктурированными и неупорядоченными данными реального мира-и поставляется с инструментами для формирования, агрегирования, анализа и визуализации наборов данных.
- Scikit-learn : Scikit-Learn-это модуль Python, интегрирующий широкий спектр современных алгоритмов машинного обучения для средних контролируемых и неконтролируемых проблем. Это одна из самых известных библиотек машинного обучения для Python. Пакет Scikit-Learn фокусируется на предоставлении машинного обучения неспециалистам с использованием языка высокого уровня общего назначения. Основной акцент делается на простоту использования, производительность, документацию и согласованность API. С минимальными зависимостями и легким распределением в соответствии с упрощенной лицензией BSD, Scikit-Learn широко используется в академических и коммерческих условиях. Scikit-Learn раскрывает краткий и последовательный интерфейс с общими алгоритмами машинного обучения, что делает его простым внедрением ML в производственные системы.
- Matplotlib : Matplotlib – это библиотека Python 2D -графика, способная производить фигуры качества публикации в широком спектре форматов жесткой атмопии и интерактивных сред по платформам. Matplotlib может использоваться в сценариях Python, оболочке Python и Ipython, ноутбуке Jupyter, серверах веб -приложений и четырех наборах инструментов пользовательского интерфейса.
- Nltk : NLTK является ведущей платформой для создания программ Python для работы с данными о человеческом языке. Он обеспечивает простые в использовании интерфейсы для более чем 50 корпоративных и лексических ресурсов, таких как Wordnet, а также набор библиотек обработки текста для классификации, токенизации, стебля, тегов, анализа и семантических рассуждений.
Python быстро становится языком для ученых данных, и по этой причине мы собираемся использовать Python в качестве языка выбора для создания нашего контейнера по науке о данных.
Базовое альпийское изображение Linux
Alpine Linux – это крошечное распределение Linux, предназначенное для энергетических пользователей, которые ценят безопасность, простоту и эффективность ресурсов.
Как утверждается Альпийский :
Маленький. Простой. Безопасный. Alpine Linux-это легкое распределение Linux, ориентированное на безопасность, основанную на Musl Libc и Busybox.
Альпийское изображение на удивление крошечное размером не более 8 МБ для контейнеров. С минимальными пакетами, установленными для уменьшения поверхности атаки на базовом контейнере. Это делает Alpine изображением выбора для нашего контейнера по науке о данных.
Загрузка и запуск контейнера Alpine Linux так же просто, как:
$ docker container run --rm alpine:latest cat /etc/os-release
В нашем Dockerfile мы можем просто использовать альпийское базовое изображение как:
FROM alpine:latest
Разговор дешево Давайте построим dockerfile
Теперь давайте проработаем через Dockerfile.
FROM alpine:latest LABEL MAINTAINER="Faizan Bashir" # Linking of locale.h as xlocale.h # This is done to ensure successfull install of python numpy package # see https://forum.alpinelinux.org/comment/690#comment-690 for more information. WORKDIR /var/www/ # SOFTWARE PACKAGES # * musl: standard C library # * lib6-compat: compatibility libraries for glibc # * linux-headers: commonly needed, and an unusual package name from Alpine. # * build-base: used so we include the basic development packages (gcc) # * bash: so we can access /bin/bash # * git: to ease up clones of repos # * ca-certificates: for SSL verification during Pip and easy_install # * freetype: library used to render text onto bitmaps, and provides support font-related operations # * libgfortran: contains a Fortran shared library, needed to run Fortran # * libgcc: contains shared code that would be inefficient to duplicate every time as well as auxiliary helper routines and runtime support # * libstdc++: The GNU Standard C++ Library. This package contains an additional runtime library for C++ programs built with the GNU compiler # * openblas: open source implementation of the BLAS(Basic Linear Algebra Subprograms) API with many hand-crafted optimizations for specific processor types # * tcl: scripting language # * tk: GUI toolkit for the Tcl scripting language # * libssl1.0: SSL shared libraries ENV PACKAGES="\ dumb-init \ musl \ libc6-compat \ linux-headers \ build-base \ bash \ git \ ca-certificates \ freetype \ libgfortran \ libgcc \ libstdc++ \ openblas \ tcl \ tk \ libssl1.0 \ " # PYTHON DATA SCIENCE PACKAGES # * numpy: support for large, multi-dimensional arrays and matrices # * matplotlib: plotting library for Python and its numerical mathematics extension NumPy. # * scipy: library used for scientific computing and technical computing # * scikit-learn: machine learning library integrates with NumPy and SciPy # * pandas: library providing high-performance, easy-to-use data structures and data analysis tools # * nltk: suite of libraries and programs for symbolic and statistical natural language processing for English ENV PYTHON_PACKAGES="\ numpy \ matplotlib \ scipy \ scikit-learn \ pandas \ nltk \ " RUN apk add --no-cache --virtual build-dependencies python --update py-pip \ && apk add --virtual build-runtime \ build-base python-dev openblas-dev freetype-dev pkgconfig gfortran \ && ln -s /usr/include/locale.h /usr/include/xlocale.h \ && pip install --upgrade pip \ && pip install --no-cache-dir $PYTHON_PACKAGES \ && apk del build-runtime \ && apk add --no-cache --virtual build-dependencies $PACKAGES \ && rm -rf /var/cache/apk/* CMD ["python"]
От
Директива используется для установки Alpine: последний
как базовое изображение. Используя Workdir
Директива мы устанавливаем /var/www
как рабочий каталог для нашего контейнера. Env Packages
Перечисляет программные пакеты, необходимые для нашего контейнера, например git
, Блас
и Libgfortran
Анкет Пакеты Python для нашего контейнера по науке о данных определены в Env Packages
Анкет
Мы объединили все команды под одним Dockerfile Запустить
Директива, чтобы уменьшить количество слоев, которые, в свою очередь, помогают уменьшить результирующий размер изображения.
Создание и помечение изображения
Теперь, когда у нас определены наш Dockerfile, перейдите к папке с DockerFile, используя терминал, и создайте изображение, используя следующую команду:
$ docker build -t faizanbashir/python-datascience:2.7 -f Dockerfile .
-t
Флаг используется для названия тега в формате «Имя: тег». -f
Тег используется для определения имени DockerFile (по умолчанию «Path/dockerfile»).
Запуск контейнера
Мы успешно создали и отметили изображение Docker, теперь мы можем запустить контейнер, используя следующую команду:
$ docker container run --rm -it faizanbashir/python-datascience:2.7 python
Вуаля, нас встречает видом оболочки Python, готовой выполнить все виды классных наук о данных.
Python 2.7.15 (default, Aug 16 2018, 14:17:09) [GCC 6.4.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>>
Наш контейнер поставляется с Python 2.7, но не грустите, если вы хотите работать с Python 3.6. Вот, вот докерфил для Python 3.6:
FROM alpine:latest LABEL MAINTAINER="Faizan Bashir" # Linking of locale.h as xlocale.h # This is done to ensure successfull install of python numpy package # see https://forum.alpinelinux.org/comment/690#comment-690 for more information. WORKDIR /var/www/ # SOFTWARE PACKAGES # * musl: standard C library # * lib6-compat: compatibility libraries for glibc # * linux-headers: commonly needed, and an unusual package name from Alpine. # * build-base: used so we include the basic development packages (gcc) # * bash: so we can access /bin/bash # * git: to ease up clones of repos # * ca-certificates: for SSL verification during Pip and easy_install # * freetype: library used to render text onto bitmaps, and provides support font-related operations # * libgfortran: contains a Fortran shared library, needed to run Fortran # * libgcc: contains shared code that would be inefficient to duplicate every time as well as auxiliary helper routines and runtime support # * libstdc++: The GNU Standard C++ Library. This package contains an additional runtime library for C++ programs built with the GNU compiler # * openblas: open source implementation of the BLAS(Basic Linear Algebra Subprograms) API with many hand-crafted optimizations for specific processor types # * tcl: scripting language # * tk: GUI toolkit for the Tcl scripting language # * libssl1.0: SSL shared libraries ENV PACKAGES="\ dumb-init \ musl \ libc6-compat \ linux-headers \ build-base \ bash \ git \ ca-certificates \ freetype \ libgfortran \ libgcc \ libstdc++ \ openblas \ tcl \ tk \ libssl1.0 \ " # PYTHON DATA SCIENCE PACKAGES # * numpy: support for large, multi-dimensional arrays and matrices # * matplotlib: plotting library for Python and its numerical mathematics extension NumPy. # * scipy: library used for scientific computing and technical computing # * scikit-learn: machine learning library integrates with NumPy and SciPy # * pandas: library providing high-performance, easy-to-use data structures and data analysis tools # * nltk: suite of libraries and programs for symbolic and statistical natural language processing for English ENV PYTHON_PACKAGES="\ numpy \ matplotlib \ scipy \ scikit-learn \ pandas \ nltk \ " RUN apk add --no-cache --virtual build-dependencies python3 \ && apk add --virtual build-runtime \ build-base python3-dev openblas-dev freetype-dev pkgconfig gfortran \ && ln -s /usr/include/locale.h /usr/include/xlocale.h \ && python3 -m ensurepip \ && rm -r /usr/lib/python*/ensurepip \ && pip3 install --upgrade pip setuptools \ && ln -sf /usr/bin/python3 /usr/bin/python \ && ln -sf pip3 /usr/bin/pip \ && rm -r /root/.cache \ && pip install --no-cache-dir $PYTHON_PACKAGES \ && apk del build-runtime \ && apk add --no-cache --virtual build-dependencies $PACKAGES \ && rm -rf /var/cache/apk/* CMD ["python3"]
Создайте и отметьте изображение так:
$ docker build -t faizanbashir/python-datascience:3.6 -f Dockerfile .
Запустите контейнер так:
$ docker container run --rm -it faizanbashir/python-datascience:3.6 python
При этом у вас есть готовый к использованию контейнер для выполнения всех классных вещей в науку о данных.
Цифры, у вас есть время и ресурсы, чтобы настроить все эти вещи. Если вы этого не сделаете, вы можете вытащить существующие изображения, которые я уже построил и подтолкнул к реестру Docker Docker Hub с использованием:
# For Python 2.7 pull $ docker pull faizanbashir/python-datascience:2.7 # For Python 3.6 pull $ docker pull faizanbashir/python-datascience:3.6
После вытягивания изображений вы можете использовать изображение и расширить в своем файле DockerFile или использовать в качестве изображения в вашем файле Docker-Compose или Stack.
Мир ИИ, ML становится довольно захватывающим в наши дни и будет продолжать становиться еще более захватывающим. Крупные игроки вкладывают значительные средства в эти области. Когда вы начинаете использовать силу данных, кто знает, что это может привести к чему -то замечательному.
Faizan Bashir/Python-Data Science
Docker Image для Python DataScience Container с Numpy, Scipy, Scikit-Learn, Matplotlib, NLTK, установленные пакеты Pandas.
#Docker Image для контейнеров Python DataScience
Оригинал: “https://dev.to/faizanbashir/building-python-data-science-container-usingdocker-3f8p”