Dokumentation
Dieses Paket besteht aus einer kleinen Erweiterungsbibliothek mit hochoptimierten Sparse -Update -Vorgängen (Streu- und Segment-) Vorgängen für die Verwendung in Pytorch, die im Hauptpaket fehlen. Streu- und Segmentvorgänge können in etwa als reduzierter Vorgänge auf der Grundlage eines bestimmten "Gruppenindex" -Tensors bezeichnet werden. Segmentvorgänge erfordern, dass der Tensor "Gruppenindex" sortiert wird, während Streuvorgänge nicht diesen Anforderungen unterliegen.
Das Paket besteht aus den folgenden Operationen mit Reduktionstypen "sum"|"mean"|"min"|"max" :
Zusätzlich stellen wir die folgenden zusammengesetzten Funktionen bereit, die scatter_* -Operationen unter der Haube verwenden: scatter_std , scatter_logsumexp , scatter_softmax und scatter_log_softmax .
Alle eingeschlossenen Vorgänge sind ausgestattbar, arbeiten zu unterschiedlichen Datentypen, werden sowohl für CPU als auch für die GPU mit entsprechenden Rückwärtsimplementierungen implementiert und sind vollständig nachvollziehbar.
UPDATE: Sie können jetzt pytorch-scatter über Anaconda für alle wichtigen OS/Pytorch/CUDA-Kombinationen installieren? Da Sie pytorch >= 1.8.0 installiert haben, fahren Sie einfach aus.
conda install pytorch-scatter -c pyg
Wir stellen alternativ PIP -Räder für alle großen OS/Pytorch/CUDA -Kombinationen zur Verfügung, siehe hier.
Um die Binärdateien für Pytorch 2.5.0 zu installieren, laufen Sie einfach aus
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.5.0+${CUDA}.html
wobei ${CUDA} je nach cpu , cu118 , cu121 oder cu124 abhängig von Ihrer Pytorch -Installation ersetzt werden sollte.
cpu | cu118 | cu121 | cu124 | |
|---|---|---|---|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Fenster | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ |
Um die Binärdateien für Pytorch 2.4.0 zu installieren, laufen Sie einfach aus
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.4.0+${CUDA}.html
wobei ${CUDA} je nach cpu , cu118 , cu121 oder cu124 abhängig von Ihrer Pytorch -Installation ersetzt werden sollte.
cpu | cu118 | cu121 | cu124 | |
|---|---|---|---|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Fenster | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ |
HINWEIS: Binaries älterer Versionen werden auch für Pytorch 1.4.0, Pytorch 1.5.0, Pytorch 1.6.0, Pytorch 1.7.0/1.7.1, Pytorch 1.8.0/1.8.1, Pytorch 1.9.0, Pytorch 1.10/1.10/1.10, 1,10/1.10, 1,10/1.10/1.10.2, Pytorch 1.10/1.10/1.10.2, Pytorch 1.10/1.10/1.10.2, bereitgestellt. 1.12.0/1.12.1, Pytorch 1.13.0/1.13.1, Pytorch 2.0.0/2.0.1, Pytorch 2.1.0/2.1.1/2.1.2, Pytorch 2.2.0/2.2.1/2.2.2 und Pytorch 2.3.0/2.3.1 (nach dem gleichen Verfahren). Für ältere Versionen müssen Sie explizit die neueste unterstützte Versionsnummer oder die Installation über pip install --no-index angeben, um eine manuelle Installation aus der Quelle zu verhindern. Hier können Sie die neueste unterstützte Versionsnummer nachschlagen.
Stellen Sie sicher, dass mindestens Pytorch 1.4.0 installiert ist, und überprüfen Sie, ob sich cuda/bin und cuda/include in Ihrem $PATH bzw. $CPATH , befinden:
$ python -c "import torch; print(torch.__version__)"
>>> 1.4.0
$ echo $PATH
>>> /usr/local/cuda/bin:...
$ echo $CPATH
>>> /usr/local/cuda/include:...
Dann rennen:
pip install torch-scatter
Wenn Pytorch in einem Docker -Container ohne NVIDIA -Treiber ausgeführt wird, muss er die Berechnungsfunktionen bewerten und möglicherweise fehlschlagen. Stellen Sie in diesem Fall sicher, dass die Rechenfunktionen über TORCH_CUDA_ARCH_LIST , z . B.:
export TORCH_CUDA_ARCH_LIST = "6.0 6.1 7.2+PTX 7.5+PTX"
import torch
from torch_scatter import scatter_max
src = torch . tensor ([[ 2 , 0 , 1 , 4 , 3 ], [ 0 , 2 , 1 , 3 , 4 ]])
index = torch . tensor ([[ 4 , 5 , 4 , 2 , 3 ], [ 0 , 0 , 2 , 2 , 1 ]])
out , argmax = scatter_max ( src , index , dim = - 1 ) print(out)
tensor([[0, 0, 4, 3, 2, 0],
[2, 4, 3, 0, 0, 0]])
print(argmax)
tensor([[5, 5, 3, 4, 0, 1]
[1, 4, 3, 5, 5, 5]])
pytest
torch-scatter bietet auch eine C ++-API, die C ++-Äquivalent von Python-Modellen enthält. Dafür müssen wir dem -DCMAKE_PREFIX_PATH TorchLib hinzufügen ( z . B. kann es in {CONDA}/lib/python{XX}/site-packages/torch falls über conda installiert) vorhanden:
mkdir build
cd build
# Add -DWITH_CUDA=on support for CUDA support
cmake -DCMAKE_PREFIX_PATH="..." ..
make
make install