これまでpyenv for WindowsでPythonのバージョンの使い分けをしてきたが、ディープラーニング関係ではとにかくモジュールの合う・合わないが厳しく、ついにvenvを使うことに。
仕組みが分かるまでは難しそうだと思っていたけれど、要するに任意のフォルダに仮想環境を作ることができ、例えば .bertというところに作るのであれば、
python -m venv .bert
を実行すると、.bertの下に仮想環境用のファイルが作成される。
といってもこのままではその仮想環境は使われず、
.bert¥Scripts¥actibate.bat
を実行することで、元のライブラリとは全く別個に.bert下にモジュールのインストール・アンインストールすることができるようになる。そしてそのコマンドウィンドウをexitすれば、元の環境に戻ってくる。
今回のGoogle BERTはtensorflowのバージョンが2以上だと動かないので、上記のように仮想環境を作成、切り替えた上で、
pip3 install tensorflow-gpu==1.15.0
で一通りモジュールがインストールされる。
因みに上記tensorflowをGPU上で実際に動かすにはCUDA V10.0とそれに対応したcuDNNが必要なのでインストールしておく。
個人的にPythonはプログラミング初心者向けではないと思っているのだけれど、それはあまりにも外部モジュールが充実しており、また実行するタスクによってどのモジュールを使うか、さらにどのバージョンを使うか、かなり習熟しないと実際には言われたとおりのプログラムさえ動かないから。
でも多くのPythonの教科書ではanacondaをインストールすれば、ほら後はできますよ、的なのが多く、いったん上記問題で躓くと初心者は全くついて行けなくなる。ま、PerlもActivePerlとか使っていると、色々なモジュールのインストールでコケそうだけれど。それでもStrawberryPerlであればたぶんLinux等とほぼ同じようにインストールできるはずで、しかもPythonほど凝ったモジュールもないと思うので、逆に初心者から初めてある程度習熟するにはPerlの方が本当はよいようにも思う。でもPerlはたぶん死につつあるので、よい教科書もないか。