O Sputnik é uma biblioteca de grãos de álgebra linear esparsa e serviços públicos para aprendizado profundo.
O Sputnik usa o sistema de construção cmake. O Sputnik depende do kit de ferramentas CUDA (v10.1+) e suporta SM70+. A única dependência adicional para a biblioteca é o Google/Glog. Para construir a biblioteca, insira o diretório do projeto e execute os seguintes comandos:
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j12
Além disso, as suítes de teste e benchmark dependem de abseil/abseil-cpp, google/googltest e google/benchmark. Essas dependências incluem como submódulos em terceiro_party. Para construir o conjunto de testes e/ou o conjunto de benchmark, set -DBUILD_TEST=ON
e/ou -DBUILD_BENCHMARK=ON
no seu comando cmake
.
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TEST=ON -DBUILD_BENCHMARK=ON -DCUDA_ARCHS="70;75"
O Sputnik fornece um DockerFile que constrói o ambiente adequado com todas as dependências. Observe que o NVIDIA-Docker deve ser instalado para ser executado na GPU. Para construir a imagem, execute o seguinte comando:
docker build . -t sputnik-dev
Para iniciar o contêiner com a fonte Sputnik montada em /mount
(assumindo que você está trabalhando em $ Home), execute o seguinte:
sudo docker run --runtime=nvidia -v ~/:/mount/ -it sputnik-dev:latest
Se você usar esta biblioteca, cite:
@inproceedings{sgk_sc2020,
author = {Trevor Gale and Matei Zaharia and Cliff Young and Erich Elsen},
title = {Sparse {GPU} Kernels for Deep Learning},
booktitle = {Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, {SC} 2020},
year = {2020},
}
Os modelos esparsos e o conjunto de dados de matrizes esparsas de redes neurais profundas do artigo acima podem ser encontradas aqui.
Este não é um produto oficial do Google.