Рубрики
Без рубрики

Строительство Python Data Научный контейнер с помощью Docker

Автор оригинала: Faizan Bashir.

TL; доктор

Искусственный интеллект (AI) и машинное обучение (мл) буквально в огне в наши дни. Включение широкого спектра использования случаев использования, начиная от самонаводных автомобилей к открытию лекарств, и Бога знает, что. AI и ML имеют яркое и процветающее будущее впереди них.

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

Достаточно разговоров, давайте начнем с создания контейнера для науки Python Data.

Пакеты науки Python Data

Наш научный контейнер Python Data использует следующие супер прохладные пакеты Python:

  1. Numpy : Numpy или Numeric Python поддерживает большие многомерные массивы и матрицы. Он обеспечивает быструю предложенные функции для математических и численных процедур. Кроме того, Numpy оптимизирует программирование Python с мощными структурами данных для эффективных вычислений многомерных массивов и матриц.
  2. Scipy : Scipy предоставляет полезные функции для регрессии, минимизации, преобразования Фурье и многое другое. На основании Numpy Scipy расширяет свои возможности. Основная структура данных Scipy снова является многомерным массивом, реализованным NUMPY. Пакет содержит инструменты, которые помогают с решающей линейной алгеброй, теорией вероятности, интеграл исчисления и многие другие задачи.
  3. Пандас : Pandas предлагают универсальные и мощные инструменты для манипулирования структурами данных и выполняя обширный анализ данных. Он хорошо работает с неполными, неструктурированными и неупорядоченными реальными данными – и поставляется с инструментами для формирования, агрегации, анализа и визуализации наборов данных.
  4. Scikit – Учите : Scikit – Suart – это модуль Python, интегрирующий широкий спектр современных алгоритмов обучения машины для средних маштабных и неподрененных проблем. Это один из самых известных библиотек машин-обучения для Python. Пакет Scikit-Sulect сосредотачивается на приведении машинного обучения не специалистам с использованием языка высокого уровня общего назначения. Основным акцентом является простота использования, производительности, документации и последовательности API. С минимальными зависимостями и простым распределением при упрощенной лицензии BSD Scikit-Switch широко используется в академических и коммерческих настройках. Scikit-Sulect обнажает краткий и последовательный интерфейс для общих алгоритмов обучения машины, что делает его простым, чтобы принести ML в производственные системы.
  5. Матплотлиб : MATPLOTLIB – это библиотека построения Python 2D, способная производить данные о качестве публикации в широком спектре форматов жесткого копирования и интерактивных сред по платформам. MATPLOTLIB можно использовать в сценариях Python, Shell Python и iPython, ноутбука Jupyter, серверами веб-приложений и четырьмя графическими инструментариями пользовательского интерфейса.
  6. NLTK : NLTK – ведущая платформа для создания программ Python для работы с данными человека. Он обеспечивает простые в использовании интерфейсы до более 50 корпоративных и лексических ресурсов, таких как Wordnet, наряду с набором библиотек по обработке текста для классификации, токенизации, стягмирования, мечения, анализа и семантических рассуждений.

Создание контейнера для науки о данных

Python быстро становится языком для ученых для данных, и по этой причине мы собираемся использовать Python в качестве языка выбора для создания наших научных контейнеров данных.

База Alpine Linux Image

Alpine Linux – это крошечное распределение Linux, предназначенное для энергопотребления, которые ценят безопасность, простоту и эффективность ресурсов.

Как утверждается Альпийский :

Альпийское изображение удивительно крошечно с размером не более 8 МБ для контейнеров. С минимальными пакетами установлены для уменьшения поверхности атаки на базовом контейнере. Это делает альпийское изображение выбора для нашего научного контейнера данных.

Загрузка и запуском контейнера 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 как рабочий каталог для нашего контейнера. Энкие пакеты Перечисляет пакеты программного обеспечения, необходимые для нашего контейнера, как Гит , BLAS и libgfortran Отказ Пакеты Python для наших данных Научный контейнер определены в Энкие пакеты Отказ

Мы объединили все команды под одним докерфилом Беги Директива по снижению количества слоев, которые, в свою очередь, помогают уменьшить результирующий размер изображения.

Строительство и помечение изображения

Теперь, когда у нас есть наш определенный 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 Shell готовы выполнять все виды прохладных данных.

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:

https://gist.github.com/faizanbashir/9443a7149cc53f81d84d0d356f871ec7#file-datascience-python3-6-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 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 container run --rm -it faizanbashir/python-datascience:3.6 python

С этим у вас есть готовый к использованию контейнера для выполнения всех видов прохладных данных.

Обслуживание Пудида

Цифры, у вас есть время и ресурсы, чтобы настроить все это. Если вы этого не сделаете, вы можете потянуть существующие изображения, которые я уже построил и выдвинул в реестр Docker Докер Хаб с использованием:

# 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 становится довольно захватывающим в эти дни и будет продолжать становиться еще более захватывающим. Большие игроки сильно инвестируют в эти домены. О времени вы начинаете использовать силу данных, которые знают, что это может привести к чему-то замечательному.

Вы можете проверить код здесь.

Файзанбашир/Python-Datascience Docker Image for Python Contascience контейнер с Numpy, Scipy, Scikit-Surve, Matplotlib, NLTK, пакеты Pandas … github.com.

Я надеюсь, что эта статья помогла строить контейнеры для ваших научных проектов данных. CLAP Если он увеличил ваши знания, помогите ему достичь большего количества людей.