Google ColabでPsi4:量子化学計算用のpython環境を手軽に構築

01_計算化学

本ブログでは「有機合成化学者のための計算化学入門」を掲げて,特にpythonを用いて量子化学計算を行う際に必要となる環境構築方法から解説してきました.例えば「計算化学にpythonとPsi4で入門」という記事では,pythonの量子化学計算用ライブラリであるPsi4のインストール方法から簡単な使い方まで解説しています.

一方で化学系の多くの人にとってはメール,ウェブブラウジング,オフィス・ChemDrawを用いた文書作成,NMR等の実験データの解析以外にコンピュータを使うことはほとんどなく,pythonの環境構築が大きな課題となることも事実だと思います.

今回はGoogleが提供するブラウザ上でpythonの実行環境が無料で利用可能な,Google Colabの紹介と,Colab上へのPsi4のインストール方法を解説していきます.

2024年6月現在,以前と同様にGoogle Colab上でPsi4を実行することができています.しかし2022年夏頃から11月までPsi4のインストール・importはできるものの,簡単な計算を実行するとランタイムが強制終了するという事象が観測されていました.今後もColab側のシステム変更などにより同様の問題が生じる可能性があることを心に留めておいてください.
本ブログのPsi4関係の記事は「Psi4の使い方」という記事にまとめています。参照してみてください。
【まとめ】Psi4の使い方
本ブログではPythonのオープンソースライブラリであるPsi4を用いて,量子化学計算の初心者を対象にした記事を多数用意しています。 記事の内容を一つずつ習得することで,これから計算化学を始めたい人が知識・経験ゼロの状態から徐々にステップアップしていくことで,量子化学計算の基本コ...

Google Colabとは

Google ColaboratoryとはGoogleが提供しているクラウド上のpython実行環境です.ChromeやSafariなどのブラウザ上で,Jupyter Notebookを基盤とした実行環境でコードが実行できるようになっています.

Googleアカウントさえ持っていれば「無料」でGPUを利用可能ということで,注目を集めているサービスです.このように無料で使えるGoogle Colabですが,実行時間に制限があります.覚えておくべき制限は以下の通りです.

  • 新しいインスタンス(実行環境)を作成して最大12時間経過するとリセットされる(12時間ルール
  • セッションが切れて90分経過するとリセットされる(90分ルール

その他メモリやディスク容量にも制限がありますので,あまりに大きなデータセットを扱って分析を行うのは現実的でありません.インスタンスが消えると初期状態にリセットされてしまうので,ライブラリのインストールなどを始めから行う必要がある点に注意が必要です.

このような制限を緩和し,より高機能なGPUが優先的に割り当てられる有料サブスクリプションColab ProColab Pro+といったプランも登場しています.

また2022年10月からはコンピューティングユニットという,90日間有効な高性能マシンの利用権にあたるものを都度買い(従量課金)することも可能となりました.

Google Colabの使い方

Google Colabにアクセスすると以下のようなウィンドウが登場します.

Colab first window

上のタブには

  • Googleが最初から用意しているデモ用ノートブック
  • 最近Colab上で使ったノートブック
  • Googleドライブ上のノートブック
  • GitHub上のノートブック
  • ローカルからアップロード

の選択肢があります.また右下から新規ノートブックの作成が可能です.作成したノートブックはGoogleドライブ上の「Colab Notebooks」というフォルダに保存されます.

技術書ではコードの例がgithubにアップロードされていて,コードを実行しながら読み進めたい場合も多いと思います.そういった場合には「github」タブから,ノートブックにアクセス可能です.

例として,Aurélien Geron著の「Hands-on Machine Learning with Scikit-Learn, Keras and TensorFlow」を見てみます.URLの部分にgithubのページを打ち込むとrepositoryのデータが取得され,ノートブックの一覧が表示されます.あとは希望のファイル名を選択するだけで,Colab上でノートブックが開かれます.

Hands on ml2

ノートブックの設定方法

GPUの利用設定

Google Colabは「無料でGPUが利用可能」ということで話題を集めているサービスですが,新しくノートブックを作成した段階ではGPUを利用する設定になっていません.

まず「Edit-> Notebook settings」に進みます.

Notebook setting

表示されたウィンドウの「Hardware accelerator」からGPUを選択することでGPUの利用が有効になります.ここではGoogleの開発しているTPU(Tensor Processing Unit)も選択可能ですが,TPU利用に最適化したコードを書く必要があるようです.

Gpu activate

なお有料プランを選択している方は,こちらの設定画面から

  • 高性能GPU
  • 高メモリマシン

などが選択可能です.

インストール済みライブラリ

Google Colabでは,ノートブック作成後にすぐに作業が開始できるように主要なライブラリーが既にインストールされています.

2023年5月時点でpythonのバージョンは3.10,pipで確認可能なものは405個でした.

!python -V
# Python 3.10.11
!pip freeze | wc -l
# 405

いくつかデータ分析・可視化・機械学習で使いそうなライブラリーを挙げておきます.

ライブラリ名 バージョン
altair 4.2.2
arviz 0.15.1
beautifulsoup4 4.11.2
bokeh 2.4.3
graphviz 0.20.1
jax 0.4.8
Keras 2.12.0
lightgbm 3.3.5
matplotlib 3.7.1
numba 0.56.4
numpy 1.22.4
pandas 1.5.3
plotly 5.13.1
pymc 5.1.2
scikit-learn 1.2.2
scipy 1.10.1
seaborn 0.12.2
statsmodels 0.13.5
sympy 1.11.1
tensorflow 2.12.0
torch 2.0
xgboost 1.7.5
yellowbrick 1.5

このようにColabでは標準で非常に多くのライブラリが用意されており,すぐに作業に取り掛かることが可能となっています.しかし,化学者用のツールなど専門性の高いものは準備されていませんので各自でインストールする必要があります.

例として「化合物データベースPubChemをpythonで使いこなす」という記事で解説しているpubchempyをpipを用いてインストールしてみましょう.

!pip install pubchempy

Psi4のインストールとimport

計算化学にpythonとPsi4で入門」という記事でも説明したように,Psi4はcondaを用いてインストールすることが推奨されています.

Colab上へのconda環境の構築

初期状態ではcondaコマンドが使えませんので,まずcondaインストールのためのスクリプトファイルをダウンロードして環境構築を行う必要があります.

以下に,長々とColab上へのPsi4のインストール方法を書きましたが,時間がない人やとりあえず動けばいいという人は,以下のコードを貼り付ければColab上にconda環境の構築からPsi4のimportまでができるようになるはずです.

!wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
!chmod +x Miniconda3-latest-Linux-x86_64.sh
!bash ./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local
!conda install -q -y psi4=1.8 python=3.10 -c conda-forge/label/libint_dev -c conda-forge
import sys
sys.path.append('/usr/local/lib/python3.10/site-packages')

コード各部の説明については以下に説明をつけていますので参照してください.

Google ColabでRDKit:ケモインフォマティクス用のpython環境を手軽に構築」という記事で紹介したcondacolabというライブラリを用いてconda環境を構築すると,2022年12月現在Psi4のインストールがうまくいかないことを確認しています.

conda環境の構築とPsi4のインストール

Colab上にconda環境を構築するために,

  1. minicondaのインストールスクリプトのダウンロード
  2. スクリプトの実行権限の付与
  3. インストールスクリプトを実行して/use/local下に環境構築
  4. condaコマンドでPsi4のインストール

という手順でconda環境構築を行い,Psi4をインストールしていきます.pythonのバージョンはシステムと同じ3.10を指定しています.

!wget -c https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
!chmod +x Miniconda3-latest-Linux-x86_64.sh
!bash ./Miniconda3-latest-Linux-x86_64.sh -b -f -p /usr/local
!conda install -q -y psi4=1.8 python=3.10 -c conda-forge/label/libint_dev -c conda-forge

Psi4のimport

ここまででpsi4はインストールできていますが,このままではimportできません.pythonがimportするライブラリ・モジュールを探す場所を「モジュール検索パス」といいますが,condaでインストールしたPsi4の入っているディレクトリはこの中に入っていません.

モジュール検索パスの確認はsys.pathで確認できます.

import sys
import pprint
pprint.pprint(sys.path)
['/content',
 '/env/python',
 '/usr/lib/python310.zip',
 '/usr/lib/python3.10',
 '/usr/lib/python3.10/lib-dynload',
 '',
 '/usr/local/lib/python3.10/dist-packages',
 '/usr/lib/python3/dist-packages',
 '/usr/local/lib/python3.10/dist-packages/IPython/extensions',
 '/root/.ipython']

インストールできてもimportできないということは,Psi4は上記パス中には存在していないということになります.それではPsi4はどこにインストールされているのでしょうか?

下のコードのようにsystemで使われているpythonは3.10.11です.

print(sys.version)
3.10.11 (main, Apr  5 2023, 14:15:10) [GCC 9.4.0]

一方でcondaで使われているpythonは3.10.10であり,同じ3.10でも実態は異なることがわかります.

# condaインストール後
!python -V
# Python 3.10.10

以下のコマンドを用いることで,conda環境のpython3.10.10に付随してインストールしたパッケージの場所を確認可能です.

!python -c "import site; print (site.getsitepackages())
['/usr/local/lib/python3.10/site-packages']

後はこの場所をモジュール検索パスに追加してあげればimportできるようになります.

sys.path.append('/usr/local/lib/python3.10/site-packages')
import psi4
print(f'psi4 version: {psi4.__version__}')
psi4 version: 1.8.2

Google Colabへのファイルのアップロード方法

作業するにあたってファイルからデータを読み込む作業は必須ですので,どのようにGoogle Colabにファイルをアップロードするかを学んでおきましょう.

大きくわけて

  • ローカルから直接ファイルを選択してアップロード
  • Googleドライブ上のファイルへアクセス

の2つの方法があります.

ローカルからファイルのアップロード

google.colab.files.upload()

ローカルからファイルを選択して,Colab上にアップロードすることが可能です.

例えばコードブロックの左側に存在するファイルエクスプローラー部位に所望のファイルをドラッグ&ドロップすることでファイルのアップロードが可能になっています.

File Upload

またコードブロックにて以下のコードを実行することでもファイルのアップロードが可能です.

from google.colab import files
uploaded = files.upload()

コマンドを入力すると以下のようにファイル選択画面が表示されますので,アップロードしたいファイルを選択します.

Colab upload

無事にアップロードされれば,ファイルが確認できます.今回は「線形モデルを用いた化合物の溶解度予測:通常最小二乗法,Ridge回帰,Lasso回帰」などの記事で使っている溶解度のデータをアップロードしてみました.

Uploaded

この方法は1つ1つのファイルを扱う必要があるため,大量のファイルを扱いたい場合などには不便です.また容量の大きいファイルをアップロードしようとすると失敗することが多い気がしています.こういった場合には次項のGoogleドライブ上のファイルにアクセスする方法を使いましょう.

Googleドライブのファイルにアクセス

google.colab.drive.mount(path)

colab.drive.mountを用いることで,Colab上にGoogleドライブをマウントすることができます.

以下のコードを実行するとまず

  • Googleドライブへのアクセスを許可する認証

が行われ,その後

  • drive以下にGoogleドライブをマウント

します.なお次のコードは直接コードブロックに書いてもいいですし,左側のファイルエクスプローラー部位の「Google Drive」のアイコンをクリックすることでも登場します.

File Upload Drive

from google.colab import drive
drive.mount('/content/drive')

Drive mounted

Googleドライブのトップディレクトリ(My Drive)にPsi4というフォルダがありその中にEtOH.txtというファイルが入っているとします.

Google drive psi4

EtOH.txtの中身は以下の通りです.

0 1
C         -3.27997        0.37694        0.00000
C         -2.20997        0.37694        0.00000
H         -3.63663        0.09994       -0.97003
H         -3.63664        1.35551        0.24513
H         -3.63664       -0.32463        0.72490
H         -1.85331        1.07851       -0.72490
O         -1.85330       -0.60163       -0.24513
H         -1.85330        0.65393        0.97003
H         -2.17664       -0.85274       -1.12450

ここでは

  1. EtOH.txtを読み込んでpsi4のMoleculeオブジェクトを作成
  2. HF/3-21Gレベルで構造最適化
  3. 最適化構造をファイルとしてGoogleドライブに保存

という作業を行ってみます.

with open('EtOH.txt', 'r') as f:
    mol = psi4.geometry(f.read())

psi4.optimize('hf/3-21g', molecule=mol)

with open('opt_structure.xyz', 'w') as f:
    print(mol.save_string_xyz(), file=f)

確かにファイルが作成されていることが確認できます.

After opt

終わりに

今回は「Google ColabでPsi4:量子化学計算用のpython環境を手軽に構築」という話題について,

  • Google Colabとは何か
  • Google Colabの使い方
  • Google ColabへのPsi4のインストールの仕方

などについて説明してきました.初心者にとってpythonの環境構築は挫折ポイントの1つですので,Google Colabを使うことで気軽に計算が始められる点は大きな利点だと思います.

本ブログではpythonの量子化学計算用ライブラリであるPsi4について基本から解説しています.是非学習を継続していきましょう.

>>次の記事:「計算化学にpythonとPsi4で入門

コメント

タイトルとURLをコピーしました