Docs | Tutoriels | Benchmarks | Documents mis en œuvre
TorchDrug est une boîte à outils d'apprentissage automatique basée sur Pytorch conçue à plusieurs fins.
Torchdrug peut être installé sur Linux, Windows ou MacOS. Il est compatible avec 3,7 <= python <= 3,10 et pytorch> = 1,8,0.
conda install torchdrug -c milagraph -c conda-forge -c pytorch -c pygpip install torch==1.9.0
pip install torch-scatter torch-cluster -f https://pytorch-geometric.com/whl/torch-1.9.0+cu102.html
pip install torchdrug Pour installer torch-scatter pour d'autres versions Pytorch ou Cuda, veuillez consulter les instructions dans https://github.com/rusty1s/pytorch_scattem
git clone https://github.com/DeepGraphLearning/torchdrug
cd torchdrug
pip install -r requirements.txt
python setup.py installNous devons d'abord installer les outils de construction pour Visual Studio. Nous installons ensuite les modules suivants dans PowerShell.
Install-Module Pscx - AllowClobber
Install-Module VSSetupInitialisez Visual Studio dans PowerShell avec les commandes suivantes. Nous pouvons configurer cela pour toutes les sessions PowerShell en l'écrivant dans le profil PowerShell. Changez le chemin de la bibliothèque en fonction de votre propre cas.
Import-VisualStudioVars - Architecture x64
$ env: LIB += " ;C:Program FilesPython37libs " Nous avons besoin de pytorch> = 1,13 pour exécuter la torchdrug sur le silicium Apple. Pour torch-scatter et torch-cluster , ils peuvent être compilés à partir de leurs sources. Remarque TorchDrug ne prend pas en charge les appareils mps .
pip install torch==1.13.0
pip install git+https://github.com/rusty1s/pytorch_scatter.git
pip install git+https://github.com/rusty1s/pytorch_cluster.git
pip install torchdrugLa torchdrug est conçue pour les humains et axée sur les données structurées du graphique. Il permet une implémentation facile des opérations de graphiques dans les modèles d'apprentissage automatique. Toutes les opérations dans TorchDrug sont soutenues par Pytorch Framework et prennent en charge l'accélération du GPU et la différenciation automatique.
from torchdrug import data
edge_list = [[ 0 , 1 ], [ 1 , 2 ], [ 2 , 3 ], [ 3 , 4 ], [ 4 , 5 ], [ 5 , 0 ]]
graph = data . Graph ( edge_list , num_node = 6 )
graph = graph . cuda ()
# the subgraph induced by nodes 2, 3 & 4
subgraph = graph . subgraph ([ 2 , 3 , 4 ])Les molécules sont également soutenues dans la torche. Vous pouvez obtenir les propriétés de molécule souhaitées sans aucune connaissance de domaine.
mol = data . Molecule . from_smiles ( "CCOC(=O)N" , atom_feature = "default" , bond_feature = "default" )
print ( mol . node_feature )
print ( mol . atom_type )
print ( mol . to_scaffold ())Vous pouvez également enregistrer des attributs de nœud, de bord ou de graphe personnalisés. Ils seront automatiquement traités lors des opérations d'indexation.
with mol . edge ():
mol . is_CC_bond = ( mol . edge_list [:, : 2 ] == td . CARBON ). all ( dim = - 1 )
sub_mol = mol . subgraph ( mol . atom_type != td . NITROGEN )
print ( sub_mol . is_CC_bond )Torchdrug fournit une large gamme d'ensembles de données et de blocs de construction communs pour la découverte de médicaments. Avec un code minimal, vous pouvez appliquer des modèles standard pour résoudre votre propre problème.
import torch
from torchdrug import datasets
dataset = datasets . Tox21 ()
dataset [ 0 ]. visualize ()
lengths = [ int ( 0.8 * len ( dataset )), int ( 0.1 * len ( dataset ))]
lengths += [ len ( dataset ) - sum ( lengths )]
train_set , valid_set , test_set = torch . utils . data . random_split ( dataset , lengths ) from torchdrug import models , tasks
model = models . GIN ( dataset . node_feature_dim , hidden_dims = [ 256 , 256 , 256 , 256 ])
task = tasks . PropertyPrediction ( model , task = dataset . tasks )La formation et l'inférence sont accélérées par plusieurs CPU ou GPU. Cela peut être transporté de manière transparente dans Torchdrug par une seule ligne de code.
from torchdrug import core
# Single CPU / Multiple CPUs / Distributed CPUs
solver = core . Engine ( task , train_set , valid_set , test_set , optimizer )
# Single GPU
solver = core . Engine ( task , train_set , valid_set , test_set , optimizer , gpus = [ 0 ])
# Multiple GPUs
solver = core . Engine ( task , train_set , valid_set , test_set , optimizer , gpus = [ 0 , 1 , 2 , 3 ])
# Distributed GPUs
solver = core . Engine ( task , train_set , valid_set , test_set , optimizer , gpus = [ 0 , 1 , 2 , 3 , 0 , 1 , 2 , 3 ])Les expériences peuvent être facilement suivies et gérées par la plate-forme de poids et de biais.
solver = core . Engine ( task , train_set , valid_set , test_set , optimizer , logger = "wandb" )Tout le monde est invité à contribuer au développement de la torchdrug. Veuillez vous référer aux directives contributives pour plus de détails.
Torchdrug est libéré sous la licence Apache-2.0.