Docs | Tutorials | Benchmarks | Papiere implementiert
Torchdrug ist eine pytorchbasierte Werkzeugkiste für maschinelles Lernen, die für mehrere Zwecke entwickelt wurde.
Torchdrug kann entweder unter Linux, Windows oder MacOS installiert werden. Es ist mit 3,7 <= Python <= 3,10 und Pytorch> = 1,8.0 kompatibel.
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 So installieren Sie torch-scatter für andere Pytorch- oder CUDA-Versionen
git clone https://github.com/DeepGraphLearning/torchdrug
cd torchdrug
pip install -r requirements.txt
python setup.py installWir müssen zuerst die Build -Tools für Visual Studio installieren. Wir installieren dann die folgenden Module in PowerShell.
Install-Module Pscx - AllowClobber
Install-Module VSSetupInitialisieren Sie Visual Studio in PowerShell mit den folgenden Befehlen. Wir können dies für alle PowerShell -Sitzungen einrichten, indem wir es in das PowerShell -Profil schreiben. Ändern Sie den Bibliothekspfad nach Ihrem eigenen Fall.
Import-VisualStudioVars - Architecture x64
$ env: LIB += " ;C:Program FilesPython37libs " Wir brauchen Pytorch> = 1,13, um Torchdrug auf Apple Silicon zu betreiben. Für torch-scatter und torch-cluster können sie aus ihren Quellen zusammengestellt werden. Hinweis Torchdrug unterstützt keine mps -Geräte.
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 torchdrugTorchdrug ist für den Menschen ausgelegt und konzentriert sich auf strukturierte graphische Daten. Es ermöglicht eine einfache Implementierung von Grafikoperationen in maschinellen Lernmodellen. Alle Operationen in Torchdrug werden durch Pytorch -Framework unterstützt und unterstützen die GPU -Beschleunigung und die automatische Differenzierung.
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 ])Moleküle werden auch in Torchdrug unterstützt. Sie können die gewünschten Moleküleigenschaften ohne Domänenwissen erhalten.
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 ())Sie können auch benutzerdefinierte Node-, Edge- oder Graphattribute registrieren. Sie werden automatisch während der Indizierungsvorgänge verarbeitet.
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 bietet eine breite Palette gemeinsamer Datensätze und Bausteine für die Erkennung von Arzneimitteln. Mit minimalem Code können Sie Standardmodelle anwenden, um Ihr eigenes Problem zu lösen.
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 )Training und Inferenz werden durch mehrere CPUs oder GPUs beschleunigt. Dies kann nahtlos durch eine Codezeile in Torchdrug geschaltet werden.
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 ])Experimente können einfach über die Gewichts- und Vorurteile nachverfolgt und verwaltet werden.
solver = core . Engine ( task , train_set , valid_set , test_set , optimizer , logger = "wandb" )Jeder ist herzlich eingeladen, zur Entwicklung von Torchdrug beizutragen. Weitere Informationen finden Sie unter den Richtlinien für weitere Informationen.
Torchdrug wird unter Apache-2.0-Lizenz veröffentlicht.