A PyTorch új CI-rendszere segíti a külső gyorsítók tesztelését
A Torch Spyre elérte a PyTorch Cross-Repository CI Relay rendszerének L2 szintű integrációját. Az IBM Spyre gyorsító PyTorch-háttere automatizált tesztválasztással, YAML-alapú konfigurációval és valós hardveren végzett ellenőrzésekkel követi a változásokat.
- A Torch Spyre elérte a PyTorch CRCR L2 integrációját.
- A CRCR külső gyorsítók downstream CI-folyamatait kapcsolja a PyTorch változásaihoz.
- Az ügynöki folyamat kód és futási eredmények alapján választ teszteket.
- A tesztbesorolásokat YAML-konfigurációkban, indoklással rögzítik.
- A megoldás új operátorok engedélyezésekor automatikusan bővítheti a tesztlefedettséget.
Egységesebb kapcsolat a külső gyorsítókkal
A PyTorch szeptember 30-án bemutatott fejlesztői bejegyzése szerint a Cross-Repository CI Relay, röviden CRCR, szabványos módot ad a PyTorch-on kívül fejlesztett gyorsítók, vagyis az out-of-tree, OOT hátterek számára az upstream folyamatos integrációhoz.
A rendszer képes a PyTorch tárházából downstream CI-folyamatokat indítani, az eredményeket közvetlenül a PyTorch felülvizsgálóinak megmutatni, valamint a regressziókat egységes nézetben megjeleníteni a PyTorch CI CRCR HUD felületén. Az alapintegrációhoz engedélyezési lista, egy repository_dispatch eseményre figyelő munkafolyamat és egy összetett visszahívási művelet szükséges.
A CRCR négy integrációs szintet kínál. A projektek fokozatosan léphetnek előre az upstream értesítések fogadásától a HUD-on jelentett eredményeken át a PyTorch pull requestjeinek nem blokkoló, illetve blokkoló ellenőrzéséig.
Három változó réteget kell egyszerre vizsgálni
A Torch Spyre csapata szerint a külső gyorsítók tesztelését három, folyamatosan változó tényező nehezíti. Az első maga az OOT PyTorch-háttér, amely a PyTorch bővítési felületein keresztül szorosan kapcsolódik a maghoz. A második a PyTorch magja, ahol a futtatási környezet vagy más központi elemek módosításai okozhatnak hibát. A harmadik a tesztkészlet, amelyben új tesztek jelenhetnek meg, illetve a meglévők módosulhatnak vagy eltűnhetnek.
A CRCR-értesítés után ezért több lehetséges kombináció közül kell választani. Az elsődleges összeállítás a háttér, a PyTorch mag és a tesztkészlet legfrissebb állapotát használja. Ez segíti a regressziók hozzárendelését, különösen akkor, ha az előző sikeres futtatás óta csak az upstream kód változott. A rendszer ezen felül több háttérverzió és egy változó PyTorch-magtörzs kombinációit is kezelheti, az egyes összeállításokat külön feladatként jelentve a HUD számára.
Ügynöki folyamat választja ki a releváns teszteket
A PyTorch több tízezer tesztje miatt a kézi kiválasztás és karbantartás nem skálázható. A Torch Spyre ezért négylépcsős, ügynöki folyamatot épített. Az első lépés a háttér által használt PyTorch-bővítési pontok és a megadott hatókör alapján leszűkíti a vizsgálandó mappákat és fájlokat. Így például kihagyhatók azok a területek, amelyekhez a háttér még nem kapcsolódik.
Ezt követően egy Repository Memory Generator lekérdezhető indexet készít szimbólumokkal, fájlokkal, nyelvi modell által írt összefoglalókkal és tesztenkénti beágyazásokkal. A kiválasztási ügynök ezután a háttér kódját, dokumentációját és metaadatait, például a támogatott operátorokat vizsgálja, majd a teszteket a mandatory_success vagy a skip kategóriába sorolja. Minden döntéshez indoklás tartozik.
A kiválasztott tesztek valódi hardveren futnak. A folyamat egy újabb elemzéssel fel tudja tárni a futásidejű hibákat és a statikus vizsgálattal nem látható numerikus eltéréseket, majd frissíti a tesztek besorolását. A konfigurációban fájlonként, több ezer név szerint megadott tesztesetre kiterjedően rögzítik az indoklásokat. A csapat szerint így egy új operátor engedélyezése automatikusan elérhetővé teheti a hozzá kapcsolódó teszteket, kézi listakarbantartás nélkül.
A konfiguráció marad az ellenőrizhető eredmény
A folyamat egyik fontos eleme, hogy az ügynök javasol, de a felülvizsgálható konfigurációs fájl marad a döntések elsődleges dokumentuma. Ha egy tesztet kihagynak, annak oka közvetlenül a konfigurációban szerepel, nem egy modell memóriájára kell hagyatkozni.
A PyTorch szerint a megközelítés szándékosan nem Torch Spyre-specifikus. A gyorsító a konfiguráció mögött marad, miközben a CI-logika általánosan használható. A csapat a PyTorch közösségével együttműködve szeretné a felhasználható részeket upstreamelni, amelyhez a PyTorch OpenReg szolgálhat természetes referenciapontként. A felhasználók számára ez azt jelentheti, hogy a külső gyorsítók tesztelése követhetőbben alkalmazkodik a PyTorch, a háttérkód és a tesztkészlet változásaihoz.