俺人〜OREGIN〜俺、バカだから人工知能に代わりに頑張ってもらうまでのお話

俺って、おバカさんなので、とっても優秀な人工知能を作って代わりに頑張ってもらうことにしました。世界の端っこでおバカな俺が夢の達成に向けてチマチマ頑張る、そんな小さなお話です。現在はG検定、E資格に合格し、KaggleやProbSpaceのコンペに参画しながら、Pythonや機械学習、統計学、Dockerなどの勉強中です。学習したことをブログにアウトプットすることで、自分の身に着けていきたいと思います。まだまだ道半ばですが、お時間がありましたら見て行ってください。

Dockerで開発環境を構築する。(Pythonによるスクレイピング&機械学習テクニック)

今回は、 Pythonによるスクレイピング&機械学習開発テクニック増補改訂 Scrapy、BeautifulSoup、scik [ クジラ飛行机 ]のAppendixを参考にさせていただきながら、Dockerで機械学習の開発環境を作成してみました。

順を追って振り返ってみたいと思います。

Dockerで開発環境を構築する。

1.Dockerとは何か

Dockerは、開発環境のような、仮想環境を作成、配布、実行するためのプラットフォームです。VirturalBoxやVMwareのようにゲストOSを構築し、その上でミドルウェアなどを動かす仮想マシンとは異なり、DockerはホストOSを利用しつつ、プロセスやユーザを別にする事であたかも別のマシンが動いているように動作します。このため、軽量で高速に起動停止ができます。(下図参照)

Docker

図1. Dockerと仮想マシンの比較

Dockerを使うと何が嬉しいかと言うと、誰かが作った環境環境や、自分が過去に作った開発環境を、OSやアプリケーションの構築を実施する事なく、簡単に構築できる事です。

2.Docker Desktopをインストールする。(Mac版)

まずは、Mac版でDocker Desktopをインストールする場合の手順です。

Windows10 homeなど、Docker Desktopが対応していないOSの場合は、「3.Docker Toolboxをインストールする。(Windows10 home版)」にお進みください。

 

まず、以下のURLのWebサイトで「Get Started」をクリックします。

(ちょくちょくサイトのデザインが変わるので、表示位置が違う場合もありますが、ご容赦のほど。)

https://www.docker.com/products

f:id:kanriyou_h004:20200411135804g:plain

図2.Docker Webページ

次のページで、自身の物理マシンのOSを選択してインストーラをダウンロードします。

f:id:kanriyou_h004:20200411140430g:plain

図3.ダウンロードページ

ダウンロードが完了したら、インストールを実行します。

 ダウンロードしたDocker.dmgをダブルクリックします。

f:id:kanriyou_h004:20200411122615p:plain

図4.Docker.dmg

インストール画面が表示されるので、「Docker.app」のアイコンを「Applications」のアイコンにドラッグ&ドロップします。

f:id:kanriyou_h004:20200411123451p:plain

図5.インストール画面

プログレスバーに進捗が表示されるので、しばらく待ちます。

f:id:kanriyou_h004:20200411123835p:plain

図6.プログレスバー

インストールが完了したら、「Applications」フォルダ内の「Docker.app」を実行します。

f:id:kanriyou_h004:20200411124649p:plain

図7.「Applications」フォルダ

4. Docker Toolboxをインストールする。(Windows版)

まず、以下のURLのWebサイトでDocker Toolboxの最新版を確認します。

https://github.com/docker/toolbox/releases

f:id:kanriyou_h004:20200411143716p:plain

図8.Docker Toolbox ダウンロードサイトGitHub

少し下にスクロールして、自身の物理マシンのOSを選択してインストーラをダウンロードします。(Windowsの場合は、~.exe)

f:id:kanriyou_h004:20200411143952p:plain

図9.インストーラのダウンロード

ダウンロードが完了したらインストーラをダブルクリックします。

f:id:kanriyou_h004:20200411145521p:plain

図10.Docker Toolbox インストーラ

インストール画面が表示され、DockerToolboxの改善にデータを提供するかどうかのチェックを確認して、「Next >」をクリックします。

f:id:kanriyou_h004:20200411145745p:plain

図11.インストール画面

インストール先確認画面が表示されるので、インストールするフォルダを指定して「Next >」をクリックします。変更する必要がなければ、そのまま「Next >」をクリックします。

f:id:kanriyou_h004:20200411150027p:plain

図12.インストール先選択画面

必要に応じ、一緒にインストールするコンポーネントを選択して「Next >」をクリックします。

f:id:kanriyou_h004:20200411150243p:plain

図13.コンポーネント選択画面

インストール後にデスクトップにショートカットを作ったり、Pathに追加したり、追加で実施するタスクを選択し、「Next >」をクリックします。

f:id:kanriyou_h004:20200411150414p:plain

図14.追加タスク選択画面

最後に、これまで選択してきた内容を確認し、問題なければ「Install」をクリックします。

f:id:kanriyou_h004:20200411150621p:plain

図15.インストール確認画面

プログレスバーが表示されるので、インストール完了を待ちます。

f:id:kanriyou_h004:20200411150834p:plain

図16.プログレスバー

インストールが完了したら、「Finish」をクリックしてインストール完了です。

f:id:kanriyou_h004:20200411151023p:plain

図17.インストール確認画面

インストールされたら、「Docker Quickstart Terminal」を実行します。

f:id:kanriyou_h004:20200411152043p:plain

図18.Docker Quickstart Terminal

Boot2Dockerを導入した場合は、最新化の処理が走る場合があります。

f:id:kanriyou_h004:20200411151925p:plain

図19.Boot2Dockerの最新化

しばらく待つと、Docker Toolboxが立ち上がります。(クジラのアスキーアートがいい味をだしています。)

f:id:kanriyou_h004:20200411152502p:plain

図20.Docker 起動画面

5. Dockerの検証

Docker DesktopまたはDocker Toolboxが起動したら以下のコマンドを実行します。

docker run hello-world

正しく実行できると「Hello from Docker!」と表示されます。

これで、検証が完了です。

(以降は、Docker Toolbox(Windows版)での例になります。)

f:id:kanriyou_h004:20200411153200p:plain

図21.Hello from Docker!

6.Python + Anaconda のイメージをダウンロード

今後、機械学習スクレイピングにつかうためにPythonとAnacondaを導入した開発環境を構築します。

まずは、以下のコマンドを実行して、Anacondaを最小限の構成としたminicondaを導入します。 

docker pull continuumio/miniconda3

しばらく、待つとダウンロードが完了します。

f:id:kanriyou_h004:20200411154024p:plain

図22.miniconda3の導入

ダウンロードが完了したら、以下のコマンドを実行してminicondaが導入されたDockerコンテナを立ち上げて、コンテナ上でbashを起動します。

docker run -i -t continuumio/miniconda3 /bin/bash

bashを起動させたら、あとは、コマンドラインPythonが実行できるようになります。

試しに以下のコマンドを実行してみます。

Python3 -c "print(3+4)"

f:id:kanriyou_h004:20200411162727p:plain

図23.Python3 実行結果

Dockerを終了させるには、[exit]で終了できます。

Dockerを使ってみる。

1.コンテナの状態を保存する。

先ほどのコンテナを起動して、状態を更新したら、そのコンテナに名前を付けて保存することができます。

コンテナを終了させた後に、以下のコマンドを実行すると、そのコンテナの情報が表示されます。

docker ps -a

f:id:kanriyou_h004:20200411160325p:plain

図24.コンテナの情報

ここに表示される「CONTAINER ID」が、コンテナの状態を保存するときに必要になります。コンテナを保存するコマンドは以下の通りです。

docker commit コンテナID リポジトリ名:タグ名

上記の「61d70537386b」のコンテナを、レポジトリ名を「machinelearn」、タグ名を「init」で保存する場合、以下のコマンドとなります。

docker commit 61d70537386b machinelearn:init

f:id:kanriyou_h004:20200411161432p:plain

図25.docker commitの実行結果

2.保存したコンテナを確認する。

保存したコンテナは以下のコマンドで確認できます。

docker images

f:id:kanriyou_h004:20200411161753p:plain

図26.docker imagesの実行結果

保存されているすべてのコンテナを確認できるので、検証時にダウンロードした[hellow-world]や、導入した[continuumio/miniconda3]も表示されます。

3.保存したコンテナを起動する。

保存したコンテナを起動する時は、以下のコマンドで起動できます。

docker run -i -t リポジトリ名:タグ名 実行するコマンド

例えば、以下の通りで先ほど保存したコンテナでbashが使えます。

docker run -i -t machinelearn:init /bin/bash 

f:id:kanriyou_h004:20200411163048p:plain

図27.保存したコンテナの起動

4.コンテナから一時的に抜ける。

実行中のコンテナを終了させずに一時的に抜けたり、再開したりすることができます。一時的に抜けるには、以下の操作をします。

[Ctrl]+[p]キー を押して次に [Ctrl]+[q]キー を押す

一時的に抜けている間に以下のコマンドを実行することで、現在実行中のコンテナを確認することができます。

docker ps

f:id:kanriyou_h004:20200411164506p:plain

図28.実行中のコンテナの確認

一時的に抜けているコンテナを再開するには以下のコマンドを実行します。

コンテナIDは、先ほどの[docker ps]で確認します。

docker attach コンテナID

f:id:kanriyou_h004:20200411164731p:plain

図29.一時的に抜けたコンテナの再開

同じように[exit]で終了させたコンテナも以下のように実行することで再開できます。

docker start コンテナID

docker attach コンテナID

5.ホストOSからコンテナ上のホームディレクトリをマウントする。

コンテナ上のファイルを編集する際に、使い慣れたホストOSのテキストエディタを使用できるように、ホストOSからコンテナ上のホームディレクトリをマウントすることができます。

docker run -i -t -v ホストOS上のパス:コンテナ上のパス リポジトリ名:タグ名 実行するコマンド

例えば、以下のように実行することができます。(XXXは、Windowsのユーザ名)

docker run -i -t -v /c/Users/XXX/tmp:/var/tmp machinelearn:init /bin/bash

上記の通り実行すると、ホストOS(Windows)上の/c/Users/XXX/tmpフォルダにコンテナ上の/var/tmpフォルダがマウントされ、同じファイルが編集できます。(図30、図31のように、ホストOSからも、コンテナからも同じ「test.txt」ファイルが見えています。)

f:id:kanriyou_h004:20200411171957p:plain

図30.ホストOS(Windows)上のtmpフォルダ

f:id:kanriyou_h004:20200411171549g:plain

図31.コンテナ上のtmpフォルダ


以上で、Dockerのインストールと、基本的な使い方が理解できました。

これで、開発環境の準備が整ったので、Pythonによるスクレイピング&機械学習開発テクニック増補改訂 Scrapy、BeautifulSoup、scik [ クジラ飛行机 ]で、スクレイピング機械学習開発に取り組んでいきたいと思います。

 

 

 【過去記事】

2019年8月31日(土)にE資格を受験して、合格しました!

E資格対策として勉強の進め方や、参考書などをまとめました。

これから受験される方がいらっしゃいましたらご参考まで。

oregin-ai.hatenablog.com 

 

 2019年3月9日(土)にG検定を受験し、見事合格できました!

受験の体験記や勉強法などを別のブログにまとめました。

これから受験される方がいらっしゃいましたらご参考まで。

g-kentei.hatenablog.com

 【E資格対策に使った参考書】