Documentação
Este pacote consiste em uma pequena biblioteca de extensão de operações de atualização esparsa altamente otimizada (dispersão e segmento) para uso em Pytorch, que estão ausentes no pacote principal. As operações de dispersão e segmento podem ser descritas aproximadamente como redução de operações com base em um determinado tensor de "índice de grupo". As operações de segmento exigem que o tensor "Index do Grupo" seja classificado, enquanto as operações de dispersão não estão sujeitas a esses requisitos.
O pacote consiste nas seguintes operações com tipos de redução "sum"|"mean"|"min"|"max" :
Além disso, fornecemos as seguintes funções compostas que usam operações de scatter_* sob o capô: scatter_std , scatter_logsumexp , scatter_softmax e scatter_log_softmax .
Todas as operações incluídas são transmitidas, trabalham em tipos de dados variados, são implementados para CPU e GPU com implementações atrasadas correspondentes e são totalmente rastreáveis.
ATUALIZAÇÃO: Agora você pode instalar pytorch-scatter via Anaconda para todas as principais combinações OS/Pytorch/Cuda? Dado que você tem pytorch >= 1.8.0 instalado, basta executar
conda install pytorch-scatter -c pyg
Alternativamente, fornecemos rodas PIP para todas as principais combinações de OS/Pytorch/Cuda, veja aqui.
Para instalar os binários para Pytorch 2.5.0, basta executar
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.5.0+${CUDA}.html
onde ${CUDA} deve ser substituído por cpu , cu118 , cu121 ou cu124 dependendo da instalação do Pytorch.
cpu | cu118 | cu121 | cu124 | |
|---|---|---|---|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ |
Para instalar os binários para Pytorch 2.4.0, basta executar
pip install torch-scatter -f https://data.pyg.org/whl/torch-2.4.0+${CUDA}.html
onde ${CUDA} deve ser substituído por cpu , cu118 , cu121 ou cu124 dependendo da instalação do Pytorch.
cpu | cu118 | cu121 | cu124 | |
|---|---|---|---|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| 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/2.1.2, pytorch 2.2.0/2.2.1/2.2.2 e pytorch 2.3.0/2.3.1 (seguindo o mesmo procedimento). Para versões mais antigas, você precisa especificar explicitamente o número mais recente da versão suportada ou instalação via pip install --no-index para impedir que uma instalação manual da fonte. Você pode procurar o número mais recente da versão suportada aqui.
Certifique -se de que pelo menos o Pytorch 1.4.0 esteja instalado e verifique se cuda/bin e cuda/include estão no seu $PATH e $CPATH , respectivamente, por exemplo :
$ python -c "import torch; print(torch.__version__)"
>>> 1.4.0
$ echo $PATH
>>> /usr/local/cuda/bin:...
$ echo $CPATH
>>> /usr/local/cuda/include:...
Em seguida, corra:
pip install torch-scatter
Ao executar em um contêiner do Docker sem motorista da NVIDIA, o Pytorch precisa avaliar os recursos de computação e pode falhar. Nesse caso, verifique se os recursos de computação são definidos via TORCH_CUDA_ARCH_LIST , por exemplo :
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 também oferece uma API C ++ que contém o equivalente em C ++ dos modelos Python. Para isso, precisamos adicionar TorchLib ao -DCMAKE_PREFIX_PATH ( por exemplo , ele pode existir em {CONDA}/lib/python{XX}/site-packages/torch se instalado via conda ):
mkdir build
cd build
# Add -DWITH_CUDA=on support for CUDA support
cmake -DCMAKE_PREFIX_PATH="..." ..
make
make install