BESS-KGE

BESS-KGE is a Python package for knowledge graph embedding on IPUs using PopTorch and the distributed framework BESS.

Shallow knowledge graph embedding (KGE) models are typically memory-bound, as little compute needs to be performed to score (h,r,t) triples once the embeddings of entities and relation types used in the batch have been retrieved.

BESS (Balanced Entity Sampling and Sharing) is a KGE distribution framework designed to maximize bandwidth for gathering embeddings, by

  • storing them in fast-access IPU on-chip memory;

  • minimizing communication time for sharing embeddings between workers, leveraging balanced collective operators over high-bandwidth IPU-links.

This allows BESS-KGE to achieve high throughput for both training and inference.

For an introduction to the different distribution schemes used by BESS-KGE, see BESS overview.

Note

The library is still in active development: new features can be expected to be added overtime and occasional bugs may occur. Feel free to open issues in the BESS-KGE github repo to report any problem.

Contents