6.1.1. Telepítés és konfiguráció

2025.10.06.
AI Biztonság Blog

Mielőtt belevágnánk a kifinomult támadások és védelmek építésébe, először elő kell készítenünk a műhelyünket. Az Adversarial Robustness Toolbox (ART) lesz az egyik legfontosabb szerszámosládánk, de mint minden profi eszközt, ezt is precízen kell telepíteni és beállítani. Ez a fejezet végigvezet a folyamaton, hogy egy stabil, harcra kész környezetet hozzunk létre.

Kapcsolati űrlap

AI Biztonság kérdésed van? Itt elérsz minket:

Előfeltételek: A stabil alapok

Az ART egy Python könyvtár, így a legfontosabb alapfeltétel egy működő Python környezet. Bár több verzióval is kompatibilis, a zökkenőmentes működés érdekében javasolt a legfrissebb stabil kiadások egyikét használni.

  • Python: Verzió 3.8 vagy újabb.
  • pip: A Python csomagkezelője. Általában a Python telepítésével együtt érkezik.
  • Virtuális környezet (ajánlott): Erősen javasolt egy dedikált virtuális környezet (pl. venv vagy conda) használata, hogy elkerüld a globális csomagfüggőségi konfliktusokat.

Ha még nem hoztál létre virtuális környezetet, most tedd meg:


# Hozzunk létre egy 'art-env' nevű környezetet
python -m venv art-env

# Aktiváljuk a környezetet (Windows)
art-env\Scripts\activate

# Aktiváljuk a környezetet (Linux/macOS)
source art-env/bin/activate

Az ART telepítése

Az ART egyik nagy előnye, hogy keretrendszer-agnosztikus. Ez azt jelenti, hogy együttműködik a legnépszerűbb mélytanulási keretrendszerekkel, mint a TensorFlow, PyTorch, Keras, vagy a Scikit-learn. Azonban a telepítés során neked kell megadnod, melyik keretrendszerhez kéred a specifikus függőségeket. Ezzel elkerülhető a felesleges csomagok telepítése.

A telepítés a pip segítségével történik. Az alábbi parancsok közül válaszd ki a projektednek megfelelőt.


# Telepítés PyTorch függőségekkel
pip install adversarial-robustness-toolbox[pytorch]

# Telepítés TensorFlow függőségekkel (beleértve a Kerast is)
pip install adversarial-robustness-toolbox[tensorflow]

# Telepítés Scikit-learn függőségekkel (nem mélytanulási modellekhez)
pip install adversarial-robustness-toolbox[scikitlearn]

# Telepítés az összes támogatott keretrendszerhez (nem ajánlott, hacsak nincs rá különös okod)
pip install adversarial-robustness-toolbox[all]

A telepítési folyamat letölti az ART magját és a kiválasztott keretrendszerhez szükséges további csomagokat (pl. NumPy, SciPy). Ez eltarthat néhány percig.

A telepítés ellenőrzése

Egy gyors ellenőrzéssel győződjünk meg róla, hogy minden a helyére került. Hozz létre egy egyszerű Python fájlt (pl. verify_art.py) a következő tartalommal, és futtasd le.


# verify_art.py
try:
    import art
    print(f"Az ART sikeresen importálva. Verzió: {art.__version__}")
except ImportError as e:
    print(f"Hiba az ART importálása során: {e}")
    print("Ellenőrizd, hogy a virtuális környezet aktív-e, és a telepítés sikeres volt-e.")

Ha a kimeneten megjelenik a verziószám, akkor a telepítés sikeres volt, és készen állsz a következő lépésre.

Az alapvető konfiguráció: A modell „becsomagolása”

Az ART nem közvetlenül a nyers TensorFlow vagy PyTorch modelleken dolgozik. Ehelyett egy egységes interfészt használ, amihez az eredeti modelledet egy ART-specifikus „wrapper” (csomagoló) osztályba kell helyezned. Ez a lépés kulcsfontosságú, mert lehetővé teszi, hogy ugyanazokat a támadási algoritmusokat alkalmazd különböző keretrendszerekben írt modellekre anélkül, hogy a támadás kódját módosítanod kellene.

Eredeti Modell(pl. PyTorch, TF) ART Wrapper(pl. PyTorchClassifier) ART Modulok(Támadás / Védelem)

Nézzünk egy példát egy egyszerű PyTorch modell becsomagolására. Tegyük fel, hogy van egy betanított modelled.


import torch
import torch.nn as nn
from art.estimators.classification import PyTorchClassifier

# 1. Definiáljuk a modellt (ez a te saját, betanított modelled lenne)
model = nn.Sequential(nn.Linear(784, 128), nn.ReLU(), nn.Linear(128, 10))

# 2. Definiáljuk a veszteségfüggvényt és az optimalizálót
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)

# 3. Hozzuk létre az ART wrapper-t
classifier = PyTorchClassifier(
    model=model,
    loss=criterion,
    optimizer=optimizer,
    input_shape=(1, 28, 28), # A bemeneti adatok formátuma (pl. MNIST kép)
    nb_classes=10 # Az osztályok száma
)

print("A modell sikeresen becsomagolva az ART PyTorchClassifier-be.")

Ez a `classifier` objektum most már készen áll, hogy támadásokat indítsunk ellene vagy védelmi mechanizmusokat teszteljünk rajta az ART eszköztárával, amint azt a következő fejezetekben látni fogod. Minden keretrendszerhez (TensorFlow, Keras, stb.) létezik megfelelő wrapper osztály.

Gyakori buktatók és megoldásaik

Probléma: Függőségi konfliktusok, különösen a numpy, tensorflow, vagy torch verziói között.
Megoldás: Mindig használj dedikált virtuális környezetet! Ha hibaüzenetet kapsz, próbáld meg a csomagokat egyenként, specifikus verzióval telepíteni (pl. pip install numpy==1.21.0), mielőtt az ART-ot telepítenéd.

Probléma: A modell becsomagolásakor `input_shape` vagy `nb_classes` hiba.
Megoldás: Győződj meg róla, hogy a wrappernek megadott paraméterek pontosan megegyeznek a modelled architektúrájával. Az `input_shape` a bemeneti tenzor alakja (a batch méret nélkül), az `nb_classes` pedig a kimeneti réteg neuronjainak száma.

Ezzel a fejezettel sikeresen lefektettük az alapokat. Most már egy működőképes, harcra kész ART környezettel rendelkezel. A következő fejezetben ezt az alapot használjuk fel, hogy végrehajtsuk az első adverzariális támadásunkat.