VMware使って初めての環境構築 Part.2
おひさしブリ大根
ブログを書くのは久しぶりなのですが、書いている人とその数が少ないために久しぶりではありません。最近ではクソ多い課題も何とか友達の力を借りながら手を抜くことで他の勉強をする余裕ができました。相変わらずふざけた量の課題はあるのですが。
という感じの最近ですが久しぶりにVMWareでも触って環境構築の練習、黒い画面になれるお勉強でもしようかなと思ったのでついでにブログを書きます。
前回のおさらい
前回の記事では、VMWareにUbuntu18.04.4LTS導入を入れ、VisualStudioCodeをインストールし、Python3.7.5を導入して終わりました。よくよく考えると、nanoとvimだけでいいのではと思ったり、なんでVSCodeなんだよ標準のでやれよバカかと言われたりなどしたので、VSCodeは封印することにしました。大規模な何かを作るときは便利だと思ってるのですが、実際どうなんでしょうか?vimは使い慣れてないのでほんとに使いにくいです。コマンド(?)とかを覚える練習が必要そうですね。
今回やりたいこと
とりあえず、この仮想環境を作ると決めた際に「TensorFlow」を入れようと思って(なんか触ってみたかった)いたことを思い出したので、これをインストールして定番の「Hello World!」が表示できればなと思います。
TensorFlowを早速インストール
1. Python 開発環境をシステムにインストールする
とりあえず、TensorFlow公式のインストール方法の書いてあるページに従ってやっていきます。
sudo apt update
sudo apt install python3-dev python3-pip
さっそくお馬鹿さんなので何も確認しないで公式ページに書いてあった上のコードを打ちます。ここまで打ち終わったタイミングで変なエラーが出ました。
E: ロック /var/lib/dpkg/lock-frontend が取得できませんでした - open (11: リソースが一時的に利用できません)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
あれ~おっかしーなーという状況だったので、とりあえず、アップグレードでもしてみたら解決するのでは!?と思い、アップグレードコマンドを打ちます。
sudo apt upgrade
実行した結果がこちら
E: ロック /var/lib/dpkg/lock-frontend が取得できませんでした - open (11: リソースが一時的に利用できません)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
デジャヴでしょうか?一言一句同じ文字が出ているような気がします。困ったのでGoogle先生に聞いてみたら、以下のコードを実行すると解決するよ!と教えてくれたのですがそれがこちら
sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
あれ、rmって消すってやつじゃなかった???????とは思ったのですが、どうにかなるでしょと軽い気持ちでコードを打ち込み(ちゃんと調べましょう)、もう一度
sudo apt install python3-dev python3-pip
コマンドを打ち込んでみたとろ、インストールが成功したようです。何をかはわかりませんが(ちゃんと勉強しましょう)。
sudo pip3 install -U virtualenv # system-wide install
次に公式ページで言う3行目のコードを打ちます。パスワードを求められて、入力からのエンターで色々と出てきましたが成功したようです。
2. 仮想環境を作成する(推奨)
TensorFlowでは仮想環境の作成を推奨しているようなので、仮想環境に仮想環境を作ります。仮想環境なのに仮想環境を作るのは面白いです(初心者並感)。
virtualenv --system-site-packages -p python3 ./venv
コードを打ち込むとちゃんとフォルダができているのが確認できました。
source ./venv/bin/activate # sh, bash, ksh, or zsh
これを打つと仮想環境の有効化ができるようです。コマンドプロントの先頭に(venv)という文字が追加されました。仮想環境ができたようなので、次からインストールしていくのかな?
pip install --upgrade pip
pip list # show packages installed within the virtual environment
とりあえず、順に打ってみたのですが、アップグレードするものはなかったようです。
deactivate # don't exit until you're done using TensorFlow
終了時は上のコマンドで終了できるようです。
3. TensorFlow の pip パッケージをインストールする
ここでついにインストールまでこぎつけました。困ったら安定版のインストールということで安定版のインストールをしていきます。ちゃんと仮想環境でインストールします。
pip install --upgrade tensorflow
コマンドは上のものです(公式曰く)。打ち込んでみたところ、
Collecting tensorflow
Downloading tensorflow-2.2.0-cp36-cp36m-manylinux2010_x86_64.whl (516.2 MB)
|████████████████████████████████| 516.2 MB 5.4 MB/s eta 0:00:01強制終了
強制終了….???よくわかりませんが、インストールできたような気がしたので、実行してみました。
python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
公式ページのインストールのコマンドの下に書いてあった確認用の物らしいのですが、打ってみたところこのような表示がされました。
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'tensorflow'
明らかにインストールされてません。色々調べてJupyterを入れてみたり、あれこれ試したのですがわからなく、最終的にたどり着いた結論は、CPU版のインストールなんじゃないか。ということです。コマンドはこちら。
pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.1.0-cp36-cp36m-manylinux2010_x86_64.whl
Collecting tensorflow-cpu==2.1.0
CPU版、Linux、Python3.6という環境ではこれでいいようです。URLでのインストールです。他の場合は公式に書いてあるのでURLと自身のPythonバージョンを確認しましょう。これを打ったらエラーっぽいものはなかったのでインストールできたみたい(?)です。
2020-07-12 04:20:10.280439: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2020-07-12 04:20:10.285373: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 1799995000 Hz
2020-07-12 04:20:10.285652: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x4e3e950 initialized for platform Host (this does not guarantee that XLA will be used). Devices:
2020-07-12 04:20:10.285708: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version
tf.Tensor(-836.46436, shape=(), dtype=float32)
検証用コマンドを打ったらこのようなものが表示されました。エラーではなさそう…?多分インストールできました。
チュートリアルのソースコードを実行する
よくわからないのでとりあえずチュートリアルに書いてあるソースをコピペで動かして、インストール出来てるかの確認を行います。ソースは貼ろうかなと思ったのですが、著作権とかあったらまずいので、公式ページから参照してください。くっつけただけです。
実行したらデータのダウンロード、学習の流れで動き始め、チュートリアルページと同じ結果になりました。インストール出来ているようです。
とりあえず「Hello World」
とりあえずと言ったものの、結論を先に言えば、ここまで大変なHello Worldは初めてでした。環境構築でもそうでしたが、ここから更に苦労しました。とりあえずGoogleで「TensorFlow HelloWorld」で検索して出てきたコードを書き写して実行してみました。ページはこちら
このページのコードを実行したのですが、エラーが出ました。
↓エラーはこちら
print sess.run(hello)
このエラーが謎だったのですが、調べたら、このHelloWordの表示プログラムはTensorFlowのソースコードであって、TensorFlow2では動かないようなものでした。詳細はここに質問されているので見てください(書くの疲れた)。
最終的にはここに書かれていたソースを参考(丸パクリ)にしました。
import tensorflow as tf
hello = tf.constant('Hello World!')
tf.print(hello)
実行したら無事に表示されました。ということで今回はここまでにします。
終わりに
仮想環境の構築をしてみようと思ったときの最低限の目標は達成できました。よかったです。ちなみに、前の記事でノートパソコンの冷却ファンを買ったのですが、もう既にほとんど動いている様子がありません(電力が足りてないとかではない)。要するに壊れたっぽいので、残念なことに只のパソコンを斜めにしてくれる台とかしてます。最初から怪しかったのですが、1月持ちこたえただけいいのでしょうか。新たによさげなものを見つけたのでそれを買ってみようかなと思ってます。おかげさまで、最近はパソコンのファンがうるさいです。次は新しく買ったやつのレビューでもかこうかな。ということで終わります。
電算OB(P学科)の者です。
久しぶりに掲示板にアクセスしようとしたら、豪華なホームページにリニューアルされていてびっくりしました!精力的に活動されているようで、目を見張ります。活動内容や知見を共有する意識を醸成する場として、大いに役立つ良い取り組みかと思います。
こういった環境構築やPythonのノウハウは、AWSやIoTなどの新しい技術に触れるうえで欠かせないスキルとなってきています。この技術を使ってどういった面白いこと・役立つことができるのかなど検証して突き詰めていくと面白いですね。