この記事は、エクセルソフト株式会社 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. 目標
- CentOS* 上に Docker* をインストール
- インテル® Distribution for Python* の実行環境を構築する Dockerfile の作成
- Dockerfile を使用してDocker* イメージを作成
- 作成した 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 (英語)