Docker* 上に Ubuntu* 16.04 とインテル® Distribution for Python* の実行環境を構築する手順

インテル® ディストリビューションの Python*

この記事は、エクセルソフト株式会社 Technical Support の竹田 賢人が執筆しました。


1. はじめに

インテル® Distribution for Python* はインテル® プロセッサー上で効果的に動作する Python* 実行環境を提供しており、Python* 実行環境だけでなく、Anaconda* のように NumPy*、SciPy* などの良く利用される数値演算ライブラリーを含みます。

これらの標準化されたライブラリーは、インテル® Distribution for Python* により、実行時にインテル® マス・カーネル・ライブラリー (インテル® MKL)、インテル® スレッディング・ビルディング・ブロック (インテル® TBB)、インテル® データ・アナリティクス・アクセラレーション・ライブラリー (インテル® DAAL) などのインテル® プロセッサーの世代ごとに最適化されたライブラリーに置き換えられるため、一般的に使用される Python* スクリプトを変更する必要なく高速に動作させることができます。

また、Docker* を使うことにより、環境の構築に時間をかけず、簡単にそして手軽に作成することができます。環境を元に戻したい場合は、Docker* イメージを使用して同じ環境をすぐに作り直せるので便利です。Docker* に関しての詳細は、下記サイトをご参照ください。
https://www.docker.com/what-docker (英語)

ここでは、インテル社が提供しているインテル® Distribution for Python* を Ubuntu* 上に構築するための Dockerfile を記述して Docker* イメージおよび Docker* コンテナーの作成を行います。

2. 実行環境

下記の環境で操作しています。

CPU: インテル® Xeon Phi™ プロセッサー 7210
メモリー: DDR4-2133 96GB
OS: CentOS* 7.2
カーネル: 3.10.0-327.36.3.el7.xppsl_1.5.0.4036.x86_64
GPU: なし

3. 目標

  1. CentOS* 上に Docker* をインストール
  2. インテル® Distribution for Python* の実行環境を構築する Dockerfile の作成
  3. Dockerfile を使用してDocker* イメージを作成
  4. 作成した Docker* イメージをベースに Docker* コンテナーを作成

4. Docker* をインストールする

Docker* のパッケージは yum を使用してインストールすることができます。

sudo yum install docker-engine

特に指定がなければ、最新をダウンロードしますが、特定のバージョンを指定することも可能です。

インストール後は、Docker* サービスを起動します。

sudo systemctl start docker

5. Dockerfile を準備する

Dockerfile は Docker* イメージを作成するための設計図のようなものです。Ubuntu* 16.04 をベースに、miniconda とインテル® Distribution for Python* をインストールするための手続きを記述します。

下記の Dockerfile を作成しました。

Dockerfile 内の記述

FROM ubuntu:16.04
LABEL 

#Set Variables
ARG TEMP_PATH=/tmp/miniconda
ARG MINICONDA_URL=https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-x86_64.sh
ARG INTEL_PYTHON=intelpython3_core=2017.0.1=1

#Install commands
RUN apt-get update && \
    apt-get install -y wget bzip2 ca-certificates

#Install miniconda3
RUN mkdir -p ${TEMP_PATH} && cd ${TEMP_PATH} && \
    wget -nv  ${MINICONDA_URL} -O miniconda.sh && \
    /bin/bash miniconda.sh -b -p /opt/conda \
    rm -rf ${TEMP_PATH}
ENV PATH /opt/conda/bin:$PATH

# Install Intel Python 3 Full Package
ENV ACCEPT_INTEL_PYTHON_EULA=yes
RUN conda config --add channels intel && conda install -y  ${INTEL_PYTHON}

CMD ["/bin/bash"]

インテル® Distribution for Python* には最低限のパッケージのみ提供する core とすべてのパッケージを含む full が提供されています。上記の Dockerfile では core を使用していますが、full をインストールする場合には下記のように変更します。

ARG INTEL_PYTHON=intelpython3_core=2017.0.1=1

ARG INTEL_PYTHON=intelpython3_full=2017.0.1=1

また、同じく Python* 3.x 系を使用するように指定していますが、Python* 2.x 系をインストールしたい場合には、下記のように変更します。

ARG INTEL_PYTHON=intelpython3_core=2017.0.1=1

ARG INTEL_PYTHON=intelpython2_core=2017.0.1=1

6. Docker* イメージを作成する

まず、適当なディレクトリーを作成して、ディレクトリー内に Dockerfile を配置します。
ここではユーザー・ディレクトリー以下に ipython_docker ディレクトリーを作成し Dockerfile を配置しました。

$cd ~/ipython_docker
$ ls
Dockerfile

Dockerfile と同じ階層にほかのファイルがあると、指定がない場合にはそのファイルごとイメージに圧縮してコピーされるので注意してください。

Dockerfile を使用して Docker* イメージを作成します。

docker build –t ipython/python3:1.0.0 ./

ipython/python3:1.0.0 は Docker* イメージの名前なので自由に変更してください。
ビルド時にインテル® Distribution for Python* のパッケージをダウンロードするため、少し時間がかかります。

7. Docker* イメージから Docker* コンテナーを作成する

Docker* イメージの作成後、続けて Docker* コンテナーを作成します。

docker run –h host --name sample_ipy -it ipython/python3:1.0.0

これでインテル® Distribution for Python* が動作する Docker* コンテナーを作成しました。ここでは sample_ipy がコンテナー名、host がホスト名に設定されています。実際にコンテナー内で操作するためには上記のように docker run コマンドに -it を指定するか、docker attach <コンテナー名> を実行します。

8. 終わりに

インテル® Distribution for Python* は現在 (2017/02/09) 2017 Update1 が提供されています。パッケージバージョンの一覧は下記のリンク先から確認することができます。
https://anaconda.org/intel/repo (英語)

タイトルとURLをコピーしました