Nabe International | Takeru Boost >> Takeruを回せ! >>

閉鎖系ネットワークで環境パッケージ管理ツールpipやcondaなどを利用する

便利なパッケージ管理ツール

昨今は研究系ITの環境はとてもよくなり、以前であればソースをダウンロードし、 ./configure 、 makeして、make install、 といった複数手順を踏まなければならなかった解析ソフトウェアのインストールも、 pip install chianer や、 conda install picard といったコマンド一発でインストールできるようになりました。それも、ソフトウエアを複数のユーザーで共有する従来からのモデルはもちろんですが、各ユーザーがroot権限を必要とすることなく、自分のホームディレクトリ内で自分の環境をつくることができます。これらのツールは、インストールしたいソフトウェアが必要としている別のソフトウェアを判断し、すべてインターネットから自動的にインストールしてくれます。

環境によって突如旧石器時代へ

 ところが、取り扱うデータの機密性の事情もあり、インターネットから切り離さざるを得ない閉鎖系ネットワーク環境では事情が激変します。pipやcondaは機能しないため、ユーザーは依存しているソフトウェアの調査から、手動でパッケージをかき集め、順番を気にしながらインストールすることになります。 例えば、pip install chainer を実行した場合、chainerのほか、filelock numpy protobuf sixなどのパッケージが自動でインストールされますが、インターネットにつながらないため、そもそもどのパッケージが必要かの判断さえも実行されなくなるのです。

解決方法

 この問題を解決するのに良い方法はふたつ、ひとつはdockerコンテナ技術を利用し、解析ツールをコンテナ化することです。コンテナはあるソフトウェアが動作するために必要な最低限の環境をパッキングしてくれるため、インターネットに接続しているマシンで解析用のコンテナをつくり、それを閉鎖系ネットワーク環境にある計算機にもってきて利用します。  もうひとつの方法として、pipのダウンロードもとであるpypi、condaのリポジトリ、centosやepelなどのリポジトリを丸ごと閉鎖系ネットワークで動かしてしまう方法があります。この方法はインターネットに接続しているマシンを利用する感覚に最も近く、その瞬間必要で欲しいパッケージをコマンド一発で入れられるようになるため、必ずしも環境構築の専門家とはいえないデータサイエンティストを閉鎖系ネットワークであることによる困難から解放します。

mirrored repository server

update用のサーバーはjenkinsによる定期ジョブ実行で自動的に各種リポジトリを最新にしてくれます。閉鎖系への適用は随時、任意のタイミングで行うことができます。

mirrored repository を利用してできること

mirrored repositoryのある環境では、例えば作りたての新しいユーザー環境に対して、chianermnを動作させるところまで環境構築をすることができます。

管理者として必要な環境の構築・アップデート

openmpiのセッティング、cudaのアップデート、centosやepelのリポジトリにある必要なパッケージのインストール

一般ユーザー環境にpyenvを導入、必要なPythonをインストール

複数バージョンのPythonを自分のホームディレクトリにインストールし、切り替えて利用できるpyenvを導入できます。

pipコマンドで必要なpythonパッケージをインストール

virtualenvもインターネットに接続されたマシンと同様に pip install virtulenv でインストールできます。 ほか、 pip install numpy pip install scipy pip install chainer pip install chainercv pip install chainermn などももちろん可能です。

condaコマンドも利用可能

condaでないと利用できないパッケージもあります。 標準リポジトリのほか、例えばbiocondaなども構築可能です。 conda install bwa conda install bowtie2 conda install picard

まとめ

今回はインターネットから隔離された環境で、インターネットに強く依存した便利なパッケージ管理ツールを利用する方法を紹介しました。特に試行錯誤の必要な研究フェーズにおいては役に立つのではないでしょうか。詳細をご希望の際は弊社営業かエンジニアへお問い合わせください。