Ubuntu 18.04 LTSにDockerを入れて機械学習環境を構築

前回の続き。

Ubuntuが無事(?)に入ったところで、いよいよDocker入れてTensorFlow入れて機械学習をゴリゴリやりたいところですが、その前にはやっぱり準備が必要です。

参考: Docker  |  TensorFlow

やったこと

もたもたとアプデ確認
Dockerのインストール
TensorFlowのDockerイメージを取得?
Dockerイメージを適用して環境構築?
動作確認?

もたもた

諸事情で前回作業から間が空きまくってしまったので、アップデートの確認とか色々します。

パッケージ一覧取得
$ sudo apt update
パッケージの更新
$ sudo apt dist-upgrade
不要になったパッケージの削除
$ sudo apt autoremove

Ubuntuのバージョン管理ツールも入れます。(多分最初から入っているけど念の為)
$ sudo apt install update-manager-core

Ubuntuのアップグレードチェック
$ do-release-upgrade -c
おっと、Ubuntuの最新版は19.10でしたが、LTSはまだなかったみたいです。
There is no development version of an LTS available.
To upgrade to the latest non-LTS develoment release
set Prompt=normal in /etc/update-manager/release-upgrades.

画面の解像度?表示倍率?がおかしかったのでNVIDIAのドライバを再インストール

古いドライバ削除
$ sudo apt --purge remove nvidia-*
パッケージ情報更新
$ sudo apt update
推奨ドライバ確認
$ ubuntu-drivers devices
 (略) nvidia-driver-435 がrecommended
あれ?公式のドライバ検索だと440なんだけど……??

ウーンPPA。
$ sudo add-apt-repository ppa:graphics-drivers/ppa
パッケージ情報更新
$ sudo apt update
推奨ドライバを再度確認
$ ubuntu-drivers devices
 (略)  nvidia-driver-440 がrecommended
公式のドライバ検索と同じ結果になった。

インストール
$ sudo apt install nvidia-driver-440
再起動
$ sudo reboot
……解像度なおったわ!!!

nvidiaの情報チェック
$ nvidia-smi
 (略) 問題なさげ

これでやっとまともにUbuntuのセットアップ作業ができる……
参考: Ubuntu Linux 18.04にGPUドライバをインストールする|setoyama60jp|note

Dockerインストール

アプデチェックはこの辺にして、Dockerを入れます。どっか~んっ!

参考: Get Docker Engine – Community for Ubuntu | Docker Documentation

パッケージ一覧を更新
$ sudo apt update

HTTPSでdocker repositoryを利用するためのパッケージを導入

$ sudo apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

Dockerの公式のGPG Keyを追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

repositoryを追加

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

パッケージ一覧を再度更新
$ sudo apt update

Dockerのインストール
$ sudo apt install docker-ce

インストールできたらDockerのバージョン確認
$ docker version

Client: Docker Engine - Community
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
Git commit: 9013bf583a
Built: Fri Oct 18 15:54:09 2019
OS/Arch: linux/amd64
Experimental: false
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied

Linux で GPU サポートを有効にするため、nvidia-dockerをインストール

# Add the package repositories
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# Install package and restart docker
$ sudo apt update && sudo apt install -y nvidia-container-toolkit
$ sudo systemctl restart docker

TensorFlowセットアップ

TensorFlow の Docker イメージをダウンロード

latest stable release versionのイメージを取得
$ docker pull tensorflow/tensorflow

参考: Docker | TensorFlow

TensorFlow Docker コンテナを起動確認

$ sudo docker run --rm -it -p 8888:8888 tensorflow/tensorflow:latest-py3

~~~~(略)~~~~
Status: Downloaded newer image for tensorflow/tensorflow:latest-py3

________                               _______________
___  __/__________________________________  ____/__  /________      __
__  /  _   \  __ \_  ___/  __ \_  ___/  /   __  /_  __ \_ | /| / /
_  /   /  __/  / / /(__  )/ /_/ /  /   _  __/    / / // /_ |/ |/ /
/_/    \___/// ///____/ \____///    //      /_/  \____/____/|__/

WARNING: You are running this container as root, which can cause new files in
mounted volumes to be created as the root user on your host machine.
To avoid this, run the container by specifying your user's userid:
$ docker run -u $(id -u):$(id -g) args...

なんかでた。

外部からAIサーバとして使うために固定IPアドレスを指定

参考: Ubuntu 18.04 LTSで固定IPアドレスの設定 – Qiita

参考: Ubuntu18.04 LTSでネットワークの設定方法 – ちゃんおぎのメモ置き場

元の

# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager

変更後

# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager

ethernets:
enp3s0:
dhcp4: n
addresses: [192.168.x.xxx/24]
gateway4: 192.168.x.1
nameservers:
addresses: [192.168.x.1]
dhcp6: n

PuTTYでSSHログインのテストしてちゃんと繋がったので、とりあえずこんな感じで作業終了。疲れた。

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です