Документация
Этот пакет состоит из небольшой библиотеки расширения высоко оптимизированного разреженного обновления (разбросано и сегмента) для использования в Pytorch, которые отсутствуют в основном пакете. Операции рассеяния и сегмента могут быть примерно описаны как снижение операций на основе данного тензора «группового индекса». Операции сегментов требуют, чтобы тензор «группа-индекс» был сортирован, тогда как операции рассеяния не подлежат этим требованиям.
Пакет состоит из следующих операций с типами сокращения "sum"|"mean"|"min"|"max" :
Кроме того, мы предоставляем следующие составные функции , которые используют операции scatter_* под капотом: scatter_std , scatter_logsumexp , scatter_softmax и scatter_log_softmax .
Все включенные операции можно транслироваться, работа по различным типам данных реализована как для ЦП, так и для графического процессора с соответствующими обратными реализациями, и полностью прослеживаются.
ОБНОВЛЕНИЕ: Теперь вы можете установить pytorch-scatter через Anaconda для всех основных комбинаций OS/Pytorch/CUDA? Учитывая, что у вас установлен pytorch >= 1.8.0 , просто запустите
conda install pytorch-scatter -c pyg
В качестве альтернативы мы предоставляем колеса PIP для всех основных комбинаций OS/Pytorch/CUDA, см. Здесь.
Чтобы установить двоичные файлы для 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 | ✅ |
ПРИМЕЧАНИЕ: двоичные файлы более старых версий также представлены для 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. 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 и Pytorch 2.3.0/2.3.1 (следуя той же процедуре). Для более старых версий вам необходимо явно указать последний номер версии или установить через pip install --no-index чтобы предотвратить ручную установку из источника. Вы можете найти последний номер поддерживаемого версии здесь.
Убедитесь, что по крайней мере Pytorch 1.4.0 установлен, и убедитесь, что cuda/bin и 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
При запуске в контейнере Docker без драйвера Nvidia 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 также предлагает API C ++, который содержит эквивалент C ++ моделей Python. Для этого нам нужно добавить 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