memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

原因不明だが動いた

後期から思いつきで(いまさら)donkeycarを走らせよう、という勉強会を始めまして、ゼミ生3名と一緒にゼミが終わったあとにあれこれやってきました。最初はdonkeycarをシミュレータで走らせ、その後、実機に移行しようとしたのですが、結局、操縦うまくないと教師あり学習ではなんともな感じですし、それ走らせて何が嬉しいのか?ということになりました。どうせなら強化学習したいとなったものの、シミュレータでは繰り返すのは楽だけど実機ではいちいちスタートラインにラジコンを戻さなければならないと考えただけで😞となりました。それでも、YouTubでDRLを解説している方がいたので一緒に写経したのですが途中からどうやっても動作しなくなり。。。これも諦めました。もし動作したとしても見様見真似しても自分の問題に適用できる気がしませんでした。

www.youtube.com

ということで基本に戻って(諦めて)勉強することにしました。とりあえずあと2ヶ月くらいしかないので手頃な教科書でやってみようと進めています。選択したのは以下の初心者向けの教科書です。ゼロからはじめるシリーズも買って挑戦しようとしたのですが、どうも木を見て森を見ずという感じがして、もう少し俯瞰した状態からツールとして使える流れを解説している本がないかなということでたどり着きました。

この本、恐らく学生向けの教科書か何かのようで、読めばわかるように書かれているので準備なしに読んで写経していけば基本はわかるのかな、と思います。ただ、古い。。。python3.7が推奨でそれ以降は未検証というのことでして。

M1 Macと3.7は相性が悪いとdonkeycarか何かをやっていたときに知ったので3.8で進めました。Windowsの子やIntel Macの子は全く問題なく進めてきたのですが、M1 Macな僕ともうひとりの学生は動かなくなり。。。tensorflowが入らない問題でつまずきました。

pyenv、pipenv、なんかよくわからないけど使ってきたのでとりあえず色々やってみたけどダメ。先人の足跡をみるとtensorflowとM1 mac(arm64)はどうもダメらしく。3.8では全く問題なくインストールできたんですけどね。。。よくわかりません。

昨日、夕方、別の作業が終わってからも悔しいのであれこれやってみたんです。DockerやUTMやVirtualBoxでubuntuいれたり。ubuntuでは3.7にするのが大変で。。。(そもそもubuntuを使いこなしていないため)、tensorflowを確かめる前に断念しました。

しかたがない、古いMBAが研究室に転がっているのでそれでやるか。。。と思ったんですね。Intel Macなら問題なく3.7+tensorflowが動作するので。

諦めながらも、そもそもサンプルコードが対応してないなら書き換えればいいじゃんと思ったんです。で、3.8の環境に戻して、pipenvでライブラリをインストールしてみると、なぜか動作しました😯 なぜでしょう。。。あれこれやった残骸が効いたのでしょうか?

とりあえずやったことをメモしておきます。

まず、pyenvのバージョンをsysytem以外は全部消しました。

pyenv versions

表示されたバージョンを以下のようにuninstallします。
pyenv uninstall 3.7とか

あ、ちなみにpyenv用の設定は以下のようにしています。僕は.zprofileに以下のように書いています。

#pyenv
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
export PIPENV_VENV_IN_PROJECT=1

あとは以下です。

pyenv install 3.8
cd サンプルフォルダ
もし、.venvというフォルダがあったら消しておく(rm -rf .venv)

pyenv local 3.8
pipenv --python 3.8

pipenv install tensorflow
pipenv install tf-agents
pipenv install gym
pipevn install pybullet

このあと、サンプルプログラムのディレクトリに移動して実行します。

pipenv shell

python -V
(Python 3.8.20と表示されました)

cd program/ch3/Cartpole_QL
python cartpole_QL.py 

昨日はあれだけやっても動かなかったのに。。。なぜでしょう?

なぜでしょう?なぜこんなに苦労するのでしょう。。。condaは(環境汚染の元なので)使いたくない。pythonこれだけ主流になっているのにバージョン切替にこれだけ苦労するってなぜでしょう。。。もっと簡単な方法はないのかなぁ?そもそも3.7が出たころにはM1がなかったから、ということなんでしょうけど。なんだかなぁ。。。