{"library":"opacus","title":"Opacus","description":"Opacus is a library for training PyTorch models with differential privacy. It supports per-sample gradient clipping, privacy accounting (including PRVAccountant), and fast gradient clipping. Current version is 1.5.4, compatible with Python >=3.7.5 and PyTorch 1.13+. It is actively maintained by Meta.","language":"python","status":"active","last_verified":"Fri May 01","install":{"commands":["pip install opacus"],"cli":null},"imports":["from opacus import PrivacyEngine","from opacus.optimizers import DPOptimizer","from opacus import GradSampleModule","from opacus.accountants import PRVAccountant","from opacus.accountants import RDPAccountant"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import torch\nfrom torch import nn\nfrom torch.utils.data import DataLoader, TensorDataset\nfrom opacus import PrivacyEngine\n\n# Create a simple model\ntorch.manual_seed(0)\nmodel = nn.Linear(10, 2)\ndata = torch.randn(64, 10)\nlabels = torch.randint(0, 2, (64,))\ntrain_dataset = TensorDataset(data, labels)\ntrain_loader = DataLoader(train_dataset, batch_size=32)\n\n# Define optimizer and loss\noptimizer = torch.optim.SGD(model.parameters(), lr=0.01)\ncriterion = nn.CrossEntropyLoss()\n\n# Attach privacy engine\nprivacy_engine = PrivacyEngine()\nmodel, optimizer, train_loader = privacy_engine.make_private(\n    module=model,\n    optimizer=optimizer,\n    data_loader=train_loader,\n    noise_multiplier=0.5,\n    max_grad_norm=1.0,\n)\n\n# Training loop\nfor epoch in range(2):\n    for x, y in train_loader:\n        outputs = model(x)\n        loss = criterion(outputs, y)\n        loss.backward()\n        optimizer.step()\n        optimizer.zero_grad()\n\n# Get privacy spent\nepsilon = privacy_engine.get_epsilon(delta=1e-5)\nprint(f\"Privacy spent: epsilon = {epsilon:.2f}\")","lang":"python","description":"Minimal DP training loop with Opacus using PrivacyEngine.make_private.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}