文件
該軟件包由一個小型擴展庫組成,該庫具有高度優化的稀疏更新(散點和段)操作,用於Pytorch中的使用,這些庫在主包中缺少。散射和段操作可以大致描述為基於給定的“組索引”張量的減少操作。細分操作要求對“組索引”張量進行排序,而散點操作則不受這些要求的約束。
該軟件包由以下操作組成,帶有減少類型"sum"|"mean"|"min"|"max" :
此外,我們還提供以下複合功能,可利用scatter_*在引擎蓋下的操作: scatter_std , scatter_logsumexp , scatter_softmax和scatter_log_softmax 。
所有隨附的操作都是可廣播的,在不同的數據類型上進行的工作,並針對CPU和GPU實施,並具有相應的向後實現,並且完全可追溯。
更新:您現在可以通過Anaconda安裝pytorch-scatter以適用於所有主要的OS/Pytorch/CUDA組合?鑑於您安裝了pytorch >= 1.8.0 ,只需運行
conda install pytorch-scatter -c pyg
或者,我們為所有主要的OS/Pytorch/CUDA組合提供PIP輪轂,請參見此處。
要安裝Pytorch 2.5.0的二進製文件,只需運行
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.5.0+${CUDA}.html
${CUDA}應取代cpu , cu118 , cu121或cu124 ,具體取決於您的pytorch安裝。
cpu | cu118 | cu121 | cu124 | |
|---|---|---|---|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| 視窗 | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ |
要安裝Pytorch 2.4.0的二進製文件,只需運行
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.4.0+${CUDA}.html
${CUDA}應取代cpu , cu118 , cu121或cu124 ,具體取決於您的pytorch安裝。
cpu | cu118 | cu121 | cu124 | |
|---|---|---|---|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| 視窗 | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ |
Note: Binaries of older versions are also provided for 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.0/1.10.1/1.10.2, PyTorch 1.11.0, PyTorch 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.1/2.1.2,Pytorch 2.2.0/2.2.1.2.1.2.1/2.2.2,以及Pytorch 2.3.0/2.3.0/2.3.0/2.3.1/2.3.1(遵循同一過程)。對於較舊的版本,您需要明確指定最新的支持版本號,或通過pip install --no-index安裝,以防止源頭安裝手動安裝。您可以在此處查找最新支持的版本號。
確保安裝了至少Pytorch 1.4.0,並驗證cuda/bin and cuda/include分別在您的$PATH和$CPATH中,例如:
$ python -c "import torch; print(torch.__version__)"
>>> 1.4.0
$ echo $PATH
>>> /usr/local/cuda/bin:...
$ echo $CPATH
>>> /usr/local/cuda/include:...
然後運行:
pip install torch-scatter
當在沒有NVIDIA驅動程序的Docker容器中運行時,Pytorch需要評估計算功能,並且可能會失敗。在這種情況下,請確保通過TORCH_CUDA_ARCH_LIST設置計算功能,例如:
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還提供了一個C ++ API,其中包含python模型的C ++。為此,我們需要將TorchLib添加到-DCMAKE_PREFIX_PATH (例如,它可能存在於{CONDA}/lib/python{XX}/site-packages/torch中,如果通過conda安裝):
mkdir build
cd build
# Add -DWITH_CUDA=on support for CUDA support
cmake -DCMAKE_PREFIX_PATH="..." ..
make
make install