GNN을 연습/구동해보기 위해서 가상환경을 셋업하는 과정을 담았다.
GNN은 검색해도 개념적인 부분들만 나와서 솔직히 이 블로그 누가 볼지 모르겠지만
그래도 실습하는데에 도움이 되길 하는 마음으로 적었다.
가상환경 생성 참조
2021/01/21 - [개발새발/개발 셋업] - [Anaconda] conda를 통한 독립된 가상환경 설정하기
해당환경은 한국화학연구원에서 발표한 논문인
GCN | Costless Performance Improvement in Machine Learning for Graph-Based Molecular Analysis
-의 환경을 튜토리얼과 함께 구성하였다.
생성된 가상환경을 터미널에서 활성화를 시켜준다
HAIL_GNN은 내가 설정한 가상환경 이름이다. 각자 환경의 이름을 맞게 명령하면 된다.
# 해당 가상환경은 Python=3.7 로 구성한 가상환경이다.
$conda activate HAIL_GNN
추가적으로 패키지가 제대로 설치되지 않고
아래와 같은 메세지가 반복되는 경우가 있다.
...
Solving environment : failed with initial frozen solve. Retrying with flexible solve.
...
이는 conda가 최신 버전으로 업데이트가 수행되지 않은 경우에
이러한 문제가 발생할 수 있다.
그러니 아래의 명령어를 통해 conda를 업데이트 시켜준 뒤에 실행을하자.
conda update --all
그리고 가상환경에서 PyTorch Geometric를 비롯한 다양한 패키지들이 실행될 수 있게
아래의 명령어들을 순차적으로 실행시켜주었다.
라이브러리 | 설치 명령어 (terminal) |
PyTorch | conda install pytorch cpuonly -c pytorch |
Pandas | conda install pandas |
tqdm | conda install -c conda-forge tqdm |
Mendeleev | pip install mendeleev |
Scikit-learn | conda install -c anaconda scikit-learn |
XGBoost | conda install -c anaconda py-xgboost |
PyTorch Geometric | pip install torch-scatter –f https://pytorch-geometric.com/whl/torch-1.7.0+cpu.html pip install torch-sparse –f https://pytorch-geometric.com/whl/torch-1.7.0+cpu.html pip install torch-cluster –f https://pytorch-geometric.com/whl/torch-1.7.0+cpu.html pip install torch-spline-conv –f https://pytorch-geometric.com/whl/torch-1.7.0+cpu.html pip install torch-geometric -------------------------------------------------------------------------------------- (주의) PyTorch 버전에 따라 설치하며, 예를 들어 설치된 PyTorch가 1.6.x일 경우에는 “-f https://pytorch-geometric.com/whl/torch-1.6.0+cpu.html”으로 변경하여 설치 |
RDKit | conda install -c conda-forge rdkit |
xlrd | conda install -c anaconda xlrd |
openpyxl | conda install -c anaconda openpyxl |
이렇게 수행하면 위에서 언급한 논문의 환경 셋업을 유사하게 구성할 수 있으며
molecule에 대한 GNN 실습하는데에도 문제가 없을 것이다.
*(23.01.18 추가)
배치파일로 된 명령어 모음은 깃허브에 있다. 참고하면 도움이 될 것 같다.
https://github.com/Ahn-Ssu/GCN_framework/blob/main/install(cu102).bat
물론 가상환경을 구성하지 않고 PyTorch Geometric을 CoLab에서 실행 시키는 것도 가능하다.
약식으로, 혹은 시각화를 하면서 수행하는 것이 더 중요할 때는 Colab도 좋은 선택지가 된다.
사용하려면 아래의 코드셀을 실행 시켜야한다.
# Add this in a Google Colab cell to install the correct version of Pytorch Geometric.
# https://gist.github.com/ameya98
import torch
def format_pytorch_version(version):
return version.split('+')[0]
TORCH_version = torch.__version__
TORCH = format_pytorch_version(TORCH_version)
def format_cuda_version(version):
return 'cu' + version.replace('.', '')
CUDA_version = torch.version.cuda
CUDA = format_cuda_version(CUDA_version)
!pip install torch-scatter==latest+{CUDA} -f https://pytorch-geometric.com/whl/torch-{TORCH}.html
!pip install torch-sparse==latest+{CUDA} -f https://pytorch-geometric.com/whl/torch-{TORCH}.html
!pip install torch-cluster==latest+{CUDA} -f https://pytorch-geometric.com/whl/torch-{TORCH}.html
!pip install torch-spline-conv==latest+{CUDA} -f https://pytorch-geometric.com/whl/torch-{TORCH}.html
!pip install torch-geometric
!pip install mendeleev
# !pip install rdkit
install 하지 않는 것들은 Colab local에 미리 설치가 되어있다.
그리고 rdkit은 저렇게 설치하면 에러가 난다. 구글링을 해보니까 다른 코드가 있다.
import sys
import os
import requests
import subprocess
import shutil
from logging import getLogger, StreamHandler, INFO
logger = getLogger(__name__)
logger.addHandler(StreamHandler())
logger.setLevel(INFO)
def install(
chunk_size=4096,
file_name="Miniconda3-latest-Linux-x86_64.sh",
url_base="https://repo.continuum.io/miniconda/",
conda_path=os.path.expanduser(os.path.join("~", "miniconda")),
rdkit_version=None,
add_python_path=True,
force=False):
"""install rdkit from miniconda
```
import rdkit_installer
rdkit_installer.install()
```
"""
python_path = os.path.join(
conda_path,
"lib",
"python{0}.{1}".format(*sys.version_info),
"site-packages",
)
if add_python_path and python_path not in sys.path:
logger.info("add {} to PYTHONPATH".format(python_path))
sys.path.append(python_path)
if os.path.isdir(os.path.join(python_path, "rdkit")):
logger.info("rdkit is already installed")
if not force:
return
logger.info("force re-install")
url = url_base + file_name
python_version = "{0}.{1}.{2}".format(*sys.version_info)
logger.info("python version: {}".format(python_version))
if os.path.isdir(conda_path):
logger.warning("remove current miniconda")
shutil.rmtree(conda_path)
elif os.path.isfile(conda_path):
logger.warning("remove {}".format(conda_path))
os.remove(conda_path)
logger.info('fetching installer from {}'.format(url))
res = requests.get(url, stream=True)
res.raise_for_status()
with open(file_name, 'wb') as f:
for chunk in res.iter_content(chunk_size):
f.write(chunk)
logger.info('done')
logger.info('installing miniconda to {}'.format(conda_path))
subprocess.check_call(["bash", file_name, "-b", "-p", conda_path])
logger.info('done')
logger.info("installing rdkit")
subprocess.check_call([
os.path.join(conda_path, "bin", "conda"),
"install",
"--yes",
"-c", "rdkit",
"python=={}".format(python_version),
"rdkit" if rdkit_version is None else "rdkit=={}".format(rdkit_version)])
logger.info("done")
import rdkit
logger.info("rdkit-{} installation finished!".format(rdkit.__version__))
if __name__ == "__main__":
install()
이렇게 해야 정상적으로 rdkit 패키지가 설치가 된다.
해당 셀을 실행시켜서 Local cloud machine에 설치가 끝났다면 Import를 시켜주면 된다.
import numpy as np
import pandas
import datetime
import torchvision
import torch_geometric
import torch_geometric.nn as geo_nn
import torch
import torch.nn as nn
from torch_geometric import datasets #Dataset package
from torch_geometric import transforms #Preprocessing package
from torch.utils.data import DataLoader, Dataset
from rdkit import Chem
from rdkit.Chem.Descriptors import ExactMolWt
from tqdm import tqdm
from mendeleev import get_table
from sklearn.metrics import r2_score
from sklearn import preprocessing
'개발새발 > 개발 셋업' 카테고리의 다른 글
[Python] 파이썬으로 폴더/디렉토리 생성하기 | create folder/directory in python (0) | 2021.02.15 |
---|---|
[conda] GPU에 맞게 가상환경 세팅하기 (0) | 2021.02.02 |
[conda] conda를 통한 독립된 가상환경 설정하기 (0) | 2021.01.21 |
[VsCode] 개인적으로 사용하는 VsCode Extension (0) | 2021.01.20 |
[Mac] 맥북에 설치하는 것들 (2) | 2021.01.19 |