PyGIP
PyGIP is a Python library designed for experimenting with graph-based model extraction attacks and defenses. It provides a modular framework to implement and test attack and defense strategies on graph datasets.
How to Cite
If you find it useful, please considering cite the following work:
@article{li2025intellectual,
title={Intellectual Property in Graph-Based Machine Learning as a Service: Attacks and Defenses},
author={Li, Lincan and Shen, Bolin and Zhao, Chenxi and Sun, Yuxiang and Zhao, Kaixiang and Pan, Shirui and Dong, Yushun},
journal={arXiv preprint arXiv:2508.19641},
year={2025}
}
Installation
PyGIP supports both CPU and GPU environments. Make sure you have Python installed (version >= 3.8, <3.13).
Base Installation
First, install the core package:
pip install PyGIP
This will install PyGIP with minimal dependencies.
CPU Version
pip install "PyGIP[torch,dgl]" \
--index-url https://download.pytorch.org/whl/cpu \
--extra-index-url https://pypi.org/simple \
-f https://data.dgl.ai/wheels/repo.html
GPU Version (CUDA 12.1)
pip install "PyGIP[torch,dgl]" \
--index-url https://download.pytorch.org/whl/cu121 \
--extra-index-url https://pypi.org/simple \
-f https://data.dgl.ai/wheels/torch-2.3/cu121/repo.html
Quick Start
Here’s a simple example to launch a Model Extraction Attack using PyGIP:
from datasets import Cora
from models.attack import ModelExtractionAttack0
# Load the Cora dataset
dataset = Cora()
# Initialize the attack with a sampling ratio of 0.25
mea = ModelExtractionAttack0(dataset, 0.25)
# Execute the attack
mea.attack()
This code loads the Cora dataset, initializes a basic model extraction attack (ModelExtractionAttack0), and runs the
attack with a specified sampling ratio.
And a simple example to run a Defense method against Model Extraction Attack:
from datasets import Cora
from models.defense import RandomWM
# Load the Cora dataset
dataset = Cora()
# Initialize the attack with a sampling ratio of 0.25
med = RandomWM(dataset, 0.25)
# Execute the defense
med.defend()
which runs the Random Watermarking Graph to defend against MEA.
If you want to use cuda, please set environment variable:
export PYGIP_DEVICE=cuda:0
Implementation & Contributors Guideline
Refer to Implementation Guideline
Refer to Contributors Guideline
License
Contact
For questions or contributions, please contact blshen@fsu.edu.
Metadata
Release files for PyGIP 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pygip-1.1.0.tar.gz | 487.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pygip-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.0 MB
Release files / pygip-1.1.0.tar.gz
| Download URL | pygip-1.1.0.tar.gz |
|---|---|
| Size | 487.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6180145bde78efe3ad7e34a30416205330c373b32bc6437bc84958302317ba26
|
|
BLAKE2b-256 checksum How to use checksums |
dab5b7dfb1e15a83c92b9e1d1d8cfccddc7fd676bfb72884f0bd42e0c9eefe30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.11
|
Release files / pygip-1.1.0-py3-none-any.whl
| Download URL | pygip-1.1.0-py3-none-any.whl |
|---|---|
| Size | 531.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c28798974839cdc70308c53a4d437ce91cfb9d3563ad36beefc9183972b448e
|
|
BLAKE2b-256 checksum How to use checksums |
a0c9a8a9f40aeea6cdb4019d88cd52436e34e2b77d3d56eca9a927780bf5add7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.11
|