AI-számítási feladatok tesztelése és kiértékelése az Azure-ban
Az AI-számítási feladatok tesztelésének célja a minőség biztosítása a rendszerváltáskor. A tesztelés képes ellenőrizni, hogy a számítási feladat megfelel-e az azonosított céloknak, és megfelel-e a felhasználói elvárásoknak. Emellett megakadályozza a minőségi regressziókat is. Ez a folyamat magában foglalja a különböző funkcionális területeken végzett teszteket, valamint a funkciók minőségének, a terheléskezelésnek, a kiszámíthatóságnak és a számítási feladatokra vonatkozó követelményeken alapuló egyéb kritériumoknak a felmérését.
A teszteredmények kritikus adatpontokat biztosítanak olyan döntésekhez , mint például az, hogy az AI-összetevők készen állnak-e a kiadásra, és hogy mely termékváltozatok vagy funkciók megfelelőek. A tesztelés emellett értesítési rendszerként is szolgálhat a hibákhoz , és rutin- vagy szintetikus tesztek segítségével segít az éles problémák észlelésében.
Az Azure Well-Architected Framework átfogó tesztelési módszertant vázol fel. A fejlesztési életciklus különböző szakaszaiban és különböző rendszerösszetevőkben és folyamatokban különböző típusú teszteket kell használnia. Ezek nélkül a tesztek nélkül a végrehajtott módosítások ronthatják a rendszer minőségét. Az alkódhibák például nagy rendszerhibákká válhatnak. A rendszer viselkedése kiszámíthatatlanná válhat, vagy elfogult eredményeket eredményezhet az AI-rendszerek nemdeterminista jellege miatt. Előfordulhat, hogy az erőforrás-kiosztás nem hatékony, és a valós felhasználói adatok vagy rendszererőforrások kihasználhatók, mert ezek a rendszerek sebezhetők a visszaélésekkel szemben.
A tesztelést szem előtt tartva kell megterveznie és fejlesztenie a számítási feladatok eszközeit. Ha például adatmanipulációt végez, és a forrásadatokat átalakítja a funkciófejlesztéshez, tartsa be a helyes kódolási eljárásokat, és gondoskodjon arról, hogy a kódot a tesztelés támogatásához strukturálja. Ez a stratégia magában foglalja a kód tervezését, hogy megkönnyítse a hatékony egységtesztelést, és elkülönítse a teszteket a kód funkcióitól és függőségeitől. Ebben a példában olyan rendszert kell megterveznie, amely képes olyan tesztkörnyezetben végrehajtani, amely a kötet és a hasonlóság szempontjából megfelelően reprezentatív tesztadatokat használ.
A számítási feladatok összetevőit biztonságosan kell üzembe helyeznie az éles környezetben. A számítási feladatok biztonságos üzembehelyezési gyakorlatának része a stratégiai tesztelés, amely segít a helyes működés biztosításában, mielőtt a felhasználók vagy adatok felhasználják a rendszert. A stratégiai tesztelés alapvető fontosságú a kezdeti üzembe helyezés során, és a rendszer fejlődésével és a kód- vagy infrastruktúra-módosításokon megy keresztül. Tesztelje az AI-hez kapcsolódó kód és infrastruktúra javasolt módosításait, mielőtt üzembe helyezené a módosításokat az éles környezetben.
Ez a cikk az architektúra AI-aspektusaira alkalmazza ezt a módszertant. Ezeknek a teszteknek a végrehajtása nem terjed ki a hatókörre.
Ajánlások
Íme a cikkben szereplő javaslatok összegzése.
Ajánlás | Leírás |
---|---|
A tesztelési stratégia sikermetrikáinak meghatározása. | A számítási feladatok más típusaihoz hasonlóan az adott teszthez szükséges metrikákat is rögzítenie és elemeznie kell annak érdekében, hogy a teszt hasznos elemzéseket nyújtson az AI-számítási feladatról. ▪ Sikerességi metrikák definiálása |
Végezze el az adatbetöltési és feldolgozási folyamatok teljes körű tesztelését a fejlesztési életciklus során. | A tesztek ellenőrizhetik az adatokat, és gondoskodhatnak arról, hogy az adatkezelési folyamat a kívánt módon működjön. A tervezési fázis korai szakaszában alkalmazza a tesztelést az adatminőség és a megfelelő technológia, valamint a méretezési lehetőségek biztosítása érdekében. A fejlesztés során fejleszthet egységteszteket az egyéni kódhoz, és valós idejű éles teszteket hajthat végre a problémák észlelése és a funkciók ellenőrzése érdekében. ▪ Adatbetöltés tesztelése |
A betanítási feladatok tesztjeinek futtatásával győződjön meg arról, hogy a szkriptek meghívása és működése a várt módon történik. | A terhelés- és teljesítménytesztelés betekintést nyújt a feladatok futtatására alkalmas számítási feladatok kiválasztásába és méretezésébe. Az egységtesztek ellenőrizhetik a kód segédprogramját, és észlelhetik a regressziókat a függőségek frissítésekor. ▪ A betanítási munkafolyamat tesztelése |
A modell kiértékelése és tesztelése a betanítási, kiértékelési és tesztelési adatok duplikációjának elkerülése érdekében. | Annak érdekében, hogy a forrásadatok ne legyenek teljes mértékben használatban a betanításhoz, egyedi adatokat kell lefoglalnia a modell kiértékeléséhez és a végső teszteléshez. Ezek az alhalmazok nem szerepelnek a tényleges betanítási folyamatban. ▪ A modell kiértékelése és tesztelése |
Tesztelje a következtetési végpontot. | Végezzen terheléstesztelést azon a végponton, amelyet a következtetési kiszolgáló üzemeltet, és a tesztelési eredmények alapján válassza ki a GPU-termékváltozatokat. Szolgáltatásként nyújtott platform (PaaS) által üzemeltetett végpontok esetében tesztelje az átviteli sebességet és a lehetséges hibákat. Ezek a végpontok elérhetőek, ezért megfelelő biztonsági tesztelést kell végezni a feltörési helyzetek megelőzése érdekében. ▪ A következtetési végpont tesztelése |
Tesztelje az indexterv helyességét, hogy a lekérdezések releváns eredményeket eredményezhessenek. | A funkcionális és integrációs tesztelés segít biztosítani, hogy az adatok pontosak legyenek, és az indexséma tesztelése ellenőrizze a visszamenőleges kompatibilitást. Tesztelnie kell az előfeldolgozási lépéseket a minőség érdekében. A terheléstesztelés meghatározza az erőforrások megfelelő termékváltozatait, és a biztonsági vezérlők védik az adatok bizalmasságát. ▪ A földelési adatok tesztelése |
Tesztelje a vezénylőt a funkció és a biztonság ellenőrzéséhez. | A teljesítmény és a megbízhatóság biztosítása érdekében hajtson végre egység-, funkcionális, integrációs és futásidejű teszteket, beleértve a terhelési és meghibásodási mód tesztelését is. A biztonsági és tartalombiztonsági tesztelés szintén elengedhetetlen a rendszer és az adatok védelme szempontjából. ▪ A vezénylő tesztelése |
Tesztelje a modell romlását. | A modellpusztulás elkerülhetetlen probléma, amely a legtöbb AI-számítási feladatot érinti. Az adatok és a fogalmak eltérésének tesztelése segíthet a modell romlásának korai észlelésében, és enyhítheti a problémát, mielőtt az hátrányosan érintené a számítási feladatot. ▪ A modell romlásának megakadályozása |
Sikerességi metrikák definiálása
Javasoljuk, hogy rendelkezzen alapkonfigurációval, és jól meghatározott metrikák használatával mérje meg a modell prediktív teljesítményét. Íme néhány gyakori metrika.
A pontosság a helyesen előrejelzett példányok és a tesztadatkészlet összes példányának arányát jelenti. Ez a modell általános teljesítményének általános mértéke.
A pontosság a valódi pozitív előrejelzések és a valódi pozitívok és a hamis pozitívok összegének aránya. Hasznos, ha a hamis pozitív értékek minimalizálása fontos, például orvosi diagnózisok esetén.
A bizalmasság a valódi pozitívok és a hamis negatívok összegének arányát méri. A hamis negatív értékek vagy a hiányzó releváns esetek elkerülése kritikus fontosságú.
A specificitás kiszámítja a valódi negatívok és a hamis pozitívok összegének arányát. Ez akkor fontos, ha pontos negatív előrejelzésekre optimalizál.
Feljegyzés
Ha sikermetrikákat határoz meg a regressziós modellekhez, vegye fel a következő metrikákat:
Az átlagos abszolút hiba (MAE) az előrejelzett értékek és a tényleges értékek közötti átlagos abszolút különbséget méri. Ezt úgy számíthatja ki, hogy az egyes tényleges értékek és a hozzá tartozó előrejelzett értékek közötti abszolút különbség középértékét veszi figyelembe. A MAE kevésbé érzékeny a kiugró értékekre az MSE-hez és az RMSE-hez képest.
A közép négyzetes hiba (MSE) a tényleges értékek és az előrejelzett értékek közötti átlagos négyzetes különbséget méri. Ezt úgy számíthatja ki, hogy az egyes tényleges értékek és a hozzá tartozó előrejelzett értékek négyzetes különbségeinek átlagát veszi figyelembe. Az MSE nagyobb hibákat büntet, mint a MAE, mert a hibák négyzetesek.
A fő középérték négyzetes hiba (RMSE) az MSE négyzetgyöke. Méri a tényleges és az előrejelzett értékek közötti átlagos abszolút hibát, de ugyanabban az egységben, mint az eredeti adatok. Az RMSE a MAE-hez képest érzékenyebb a kiugró értékekre, mert átlagolás előtt négyzetesen jelzi a hibákat.
Adatbetöltés tesztelése
Az adatfolyamatok, például az adatok kinyerése, átalakítása és betöltése (ETL) folyamatai, áthelyezése és kezelése. Tesztelje a számítási feladat ETL-részét, és győződjön meg arról, hogy megbízhatóan betölti az adatokat, és hogy az adatok kiváló minőségűek és elfogadhatók az elemzéshez és a funkciófejlesztéshez. Győződjön meg arról, hogy az adatok tisztítása és feldolgozása olyan teszteket tartalmaz, amelyek ellenőrzik, hogy az adatmanipuláció a kívánt módon működik-e.
A tesztelést az életciklus során integrálni kell, beleértve a tervezést, a fejlesztést és az éles fázisokat is.
Tesztelés a tervezési lehetőségek megkönnyítése érdekében
A számítási feladatokra vonatkozó követelmények összegyűjtésekor a legfontosabb döntési lépés egy adott, a tervezéshez használható technológiai lehetőség kiválasztása.
Az ETL-követelmények és az elfogadási kritériumok alapján végezzen feltáró funkcionális teszteket a legmegfelelőbb termék, termékváltozatok és a kívánt feladatokat végrehajtó funkciók kiválasztásához. A koncepció igazolása, a technológia igazolása és a képességtesztek elengedhetetlenek annak kiértékeléséhez, hogy a megfelelő technológiát választja-e, és hogy megfelelő méretű-e.
Az olyan forgatókönyvek esetében, amelyekben a mi-t egy meglévő architektúrába építi be, tesztelje, hogy az új technológia mennyire integrálható a jelenlegi rendszerrel.
A kezdeti számítási feladatokra vonatkozó követelmények változhatnak. Tegyük fel, hogy az üzlet növekedésre számít, és a rendszernek a rendszeres felhasználói lekérdezések kétszeresét kell kezelnie. Ez az elvárás megfelelő kapacitástervezést igényel. Javasoljuk a proaktív tesztelést, hogy megértse, hogyan reagál a rendszer a többletadatokra, és hogy adatvezérelt módosításokat hajt végre a meglévő méretezésen, vagy új termékválasztást hozzon létre. A kapacitásteszteléshez javasoljuk, hogy kombinálja a funkcionális tesztelést a terhelés- és teljesítményteszteléssel, és használjon szintetikus anyagokat a reális feltételek szimulálásához.
A kódminőség ellenőrzése
Ha a kód szerepel a csomagban, győződjön meg arról, hogy az egységtesztelésen megy keresztül, és nem jelenik meg, ha sikertelen. Gyakori például, hogy az egyéni kód a betöltés részeként fut. Az adattisztításhoz és -feldolgozáshoz is van kód. Egységtesztek futtatásával győződjön meg arról, hogy a kód a kialakításnak megfelelően működik, és hogy az adatmanipuláció a várt módon működik.
Teszteket futtathat a folyamatos integráció és a folyamatos kézbesítési folyamat részeként.
Tesztelés az élő rendszerben
A funkcionális tesztelésnek az élő rendszerre is ki kell terjednie. Ha ezek a tesztek sikertelenek, érdemes riasztásokat aktiválni, hogy szükség esetén azonnali vizsgálatot kezdeményezhessenek. Íme néhány példa:
Ütemezett tesztek futtatásával ellenőrizze, hogy a megfelelő mennyiségű adat lett-e összegyűjtve, ha az adatok betöltése egy megadott ütemezés szerint történik a várt mennyiséggel.
Olyan teszteket futtathat, amelyek észlelik az adatproblémákat, például hiányzó értékeket vagy duplikált adatokat, és alapvető adatintegritási ellenőrzéseket hajtanak végre. Ha az adatok frissességét jelző időbeli információkat tartalmaznak, ezek a tesztek ellenőrizhetik ezeket az információkat, és megakadályozhatják, hogy az alsóbb rétegbeli folyamatok elavult adatokat használjanak.
Ellenőrizze a külső függőségek rendelkezésre állását. Egy adattisztítási feladat például meghívhat egy másik szolgáltatást táblák kinyerése vagy előfeldolgozás céljából. Futtasson teszteket annak ellenőrzésére, hogy elérhetők-e, mert az elérhetetlenségük hatással lehet az ETL-folyamatra.
Az ETL-rendszer helyességének tesztelésének másik módja a szintetikus tesztelés. Az ismert tesztadatok éles környezetben való rendelkezésre állása rendkívül hatékony. Ezzel ellenőrizheti a végpontok közötti feldolgozást úgy, hogy összehasonlítja az ismert kezdő állapotot az adatok várható végállapotával. Egy dokumentumnak például át kell haladnia a dokumentumintelligencia-adatokon, és személyes adatokat is tartalmaz. A szintetikus dokumentumok injektálásával tesztelhető, hogy a számítási feladat a kívánt módon végzi-e el az adatmanipulációs feladatot.
Emellett kísérletezzen különböző, más néven A/B-tesztekkel, hogy a teljes véglegesítés előtt tanuljon a felhasználói interakciókból. Az A/B-tesztelés segít megelőzni a minőségi regressziókat.
A betöltés során gyűjtött adatok tesztelése
A különböző adatforrásokból származó betöltési folyamat részeként olyan teszteket is tartalmazzon, amelyek ellenőrzik, hogy a betanítási adatok megfelelnek-e az elvárásainak.
A hiányos vagy sérült adatokkal rendelkező gépi tanulási modellek betanítása kontraproduktív lehet. Ez pazarláshoz vezethet, és olyan modellt eredményezhet, amely nem tud értelmes előrejelzéseket készíteni. Az adatbetöltési és az előfeldolgozási folyamatok ellenőrzőpontokként tartalmaznak minőségi teszteket. Ezek a tesztek segítenek ellenőrizni, hogy az adatok összhangban vannak-e az adatelemzés és a szolgáltatásfejlesztés során beállított elvárásokkal.
Az alábbi lista néhány példatesztes esetet tartalmaz:
Tesztelje a teljességet. Tesztelje a betanítási adatok várt mennyiségét az adathalmaz teljességének ellenőrzéséhez. Ez a teszt biztosítja, hogy elegendő adatot biztosítson a modell betanítása érdekében.
Kritikus információk tesztelése. Ha a betanítás ismert entitásokon, például meghatározott rekordokon vagy azonosítókon alapul, tesztelje az adathalmazt, hogy meggyőződjön arról, hogy ezek az entitások megtalálhatók. Ez az ellenőrzés biztosítja, hogy a kritikus információk ne hiányoznak.
Irreleváns adatok tesztelése. A betöltött adatok nem tartalmazhatnak irreleváns vagy téves bejegyzéseket. Az adatbetöltési folyamatnak ki kell szűrnie az adatokat.
Tesztelje a frissességet. A betöltött adatok frissessége nem befolyásolhatja a modell prediktív teljesítményét. Ellenőrizze, hogy az adatok az ésszerűen aktuális információkat tükrözik-e, és nem elavultak-e az előző futtatásokból. Ha például arra számít, hogy az adatok az elmúlt hét rekordjait tartalmazzák, de az adatok importálása után nincsenek ilyen rekordok, az sikertelen importálást vagy adatfrissítési problémát jelezhet a forrásrendszerben.
Rutintesztek végrehajtása
Az adatbetöltéssel kapcsolatos jelentős probléma az adatok mennyisége és az átviteli sebesség. A teljesítmény szűk keresztmetszeteinek elkerülése érdekében a műveletek során folyamatos értékelésre van szükség. Ennek a folyamatban lévő értékelésnek az üzemeltetési folyamatok részét kell képeznie, nem pedig egyszeri tesztelésnek. A cél annak biztosítása, hogy a számítási feladatok csapata ne hagyja ki a szolgáltatási szintű célkitűzéseket.
Fontolja meg azt a helyzetet, amikor a monitorozás teljesítménycsökkenést jelez. Az ilyen feltételek enyhítése érdekében értékelje át és optimalizálja az ETL-folyamatokat. A módosítások elvégzése után a teljesítménytesztekkel meggyőződhet arról, hogy a módosítások megfelelnek a szükséges átviteli sebességnek.
Feljegyzés
A tesztelés és a monitorozás különböző célokat szolgál. Végezzen teszteket a rendszer lehetséges változásainak kiértékelésére, általában a módosítások implementálása előtt. Folyamatos monitorozás a rendszer általános állapotának felmérése érdekében.
A betanítási munkafolyamat tesztelése
Modell betanítása egyéni kóddal, például PyTorch-szkriptekkel, amelyek elvégzik a tényleges betanítási munkát. Ezek a szkriptek számítási feladatokon futnak, például jegyzetfüzetekben vagy Azure Machine Learning-feladatokban, amelyek memória- és hálózati erőforrásokat is igényelnek. Javasoljuk, hogy a tervezési fázisban tesztelje a terhelést a számítási igények kiértékelése és a javasolt termékváltozatok megfelelőségének biztosítása érdekében. Gyakran manuális tesztelésre van szükség a számítási feladat időkereten belüli hatékony futtatásához szükséges legjobb konfiguráció meghatározásához.
A szkriptek írása speciális SDK-k használatával történik, amelyek a legtöbb feladatot kezelik. Mivel azonban a szkriptek továbbra is kódnak számítanak, a fejlesztés részeként integrálnia kell az egységtesztelést. Ezek a tesztek segítenek biztosítani, hogy a függőségek frissítésekor ne történjen regresszió. Ha az egységtesztelés nem lehetséges, az új kód üzembe helyezése előtt manuális tesztelésre van szükség a minőségi regressziók elkerülése érdekében.
Ezek a szkriptek egy munkafolyamat részeként futnak, például az Azure Machine Learning Studióban, amely betekintést nyújt abba, hogy mikor és hogy futott-e a szkript. Javasoljuk azonban, hogy futtassa az integrációs teszteket, hogy ezek a szkriptek megbízhatóan legyenek meghívva.
A modell kiértékelése és tesztelése
Feljegyzés
A modell kiértékelését és tesztelését gyakran használják felcserélhetően, de külön folyamatnak kell tekinteni őket, amelyek különböző adathalmazokat használnak. A kiértékelés egy iteratív tevékenység, amelyet a fejlesztési fázisban végez. A kísérletezésre összpontosít, hogy megtalálja a legjobb modellt a megfelelő hangolással. Ez magában foglalja a hiperparaméterek, konfigurációk vagy szolgáltatások módosítását, majd a modell kiértékelését különböző metrikák alapján. A legjobb modell azonosítása után végezzen teszteket az üzembe helyezés során.
A tesztelés magában foglalja a teljes rendszer ellenőrzését, beleértve a hangolt modellt és a nem AI-összetevőket annak ellenőrzésére, hogy megfelelően működnek-e, jól integrálhatók-e, és a minőségi szabványoknak megfelelően biztosítják a várt eredményeket. Értékelje ki a modell in situ elemét a számítási feladat más összetevőivel együtt. A folyamat magában foglalja a kérések a modellnek való elküldését, a válaszok kiértékelését, valamint a tesztadatok alapján a go vagy a no-go döntést. Bár a tesztelés nem tárgyalható az éles környezet előtt, javasoljuk, hogy valós adatok és szintetikus adatok használatával is végezzen teszteket éles környezetben.
Adatok használata kiértékelésre és tesztelésre
A forrásadatokból általában három fő adatkészlet van particionálva: betanítás, kiértékelés és tesztelés.
A modell betanításához használja a betanítási adatkészletet, amely általában a legnagyobb részhalmaz. A kiértékeléshez használjon másik adatkészletet a modell iteratív folyamaton keresztüli finomításához különböző permutációk értékelésével. Miután kielégítő permutációt talált, tesztelje a tesztadatkészleten.
Minden adathalmaznak kiváló minőségű adatokat kell tartalmaznia a zaj minimalizálása érdekében. Az adatbetöltés és az előfeldolgozási folyamatok tesztelési esetei minőségi ellenőrzőpontokként szolgálhatnak. A minták hiánya a gyenge minőségű adatoknak is tulajdonítható. Szintetikus adatok használata az adathalmaz egységességének és egyensúlyának kialakításához. Ez a megközelítés olyan betanítási modellek esetében hasznos, mint a csalásészlelési modellek, ahol a valódi csalási példányok ritkák, ami megnehezíti a megbízható előrejelzésekhez szükséges statisztikai teljesítmény biztosítását.
Az előrejelzések torzításának elkerülése érdekében tartsa az összes adathalmazt elkülönítve. Ne használjon kiértékeléshez betanítási adatokat, és ne használjon kiértékelési adatokat teszteléshez. Egyedi adatok lefoglalása a modell kiértékelése és a végső tesztelés céljából.
Értékelési metrikák használata
A modell betanítása és a megfelelő éles környezet kiválasztása egymástól függő folyamatok. Először ki kell választania egy modellt, de a kísérletezés és a kiértékelés után változhat.
A modellértékelés egy kísérletezési ciklus, amely metrikák használatával méri fel a modellek, paraméterek és funkciók számos permutációját. Ezek a metrikák tudományos értékeléseket biztosítanak, amelyeket iteratív módon kell összehasonlítani a különböző verziókban és konfigurációkban a legjobb modell meghatározásához. További információ: Kiértékelési metrikák.
Hasonló megközelítés vonatkozik a generatív AI-modellekre. Olyan folyamatokkal rendelkezik, amelyek a modell teljesítménye alapján értékelik és számszerűsítik a felhasználói élmény eredményeit. A földiesség például az egyik legfontosabb mérőszám, amely számszerűsíti, hogy a modell mennyire igazodik a forrásadatokhoz. A relevancia egy másik fontos metrika, amely azt jelzi, hogy a válasz mennyire releváns a lekérdezésre. Például a metrikákat a generatív AI kiértékelési és monitorozási metrikái című témakörben talál.
Különböző típusú modellek kiértékelése különböző metrikák használatával. Az egyes metrikák fontossága a forgatókönyvtől függően változhat. A metrikák rangsorolása a használati eset alapján. A méltányosság például kulcsfontosságú a felelős AI-ben. A jó tesztelés ellenére a modellek továbbra is tisztességtelen torzításokat mutathatnak az elfogult forrásadatok miatt. Az eredmények relevanciája magas, de a méltányosságuk alacsony lehet. A méltányossági értékelések integrálása a folyamatba az elfogulatlan eredmények biztosítása érdekében.
A Generatív AI integrálható a vezénylési kóddal, az útválasztási logikával és a lekérésesen bővített generáció (RAG) indexével, amely bonyolítja a kiértékelést. Bár a modelleket metrikák használatával egyenként kell értékelnie, más rendszerösszetevők kiértékelése is fontos.
A modell tesztelése
A finomhangolás lényegében tesztelés, mert módosítja az előre betanított modellek viselkedését. A modell kezdeti teljesítményének megértéséhez alapkonfigurációval kell kezdenie. A finomhangolás után értékelje újra a modell teljesítményét, hogy megfeleljen a minőségi szabványoknak. Vegye figyelembe a következő gyakori értékelési metrikákat:
A megalapozottság a modellnek a forrásadatokkal való igazítására utal. A megalapozott modell olyan válaszokat hoz létre, amelyek összhangban vannak a valósággal.
A relevancia azt jelzi, hogy a válasz mennyire releváns egy adott kérdésre. Egy erősen megalapozott válasz nem feltétlenül releváns, ha nem foglalkozik közvetlenül a kérdéssel.
A hasonlóság a forrásadatszöveg és a generált válasz közötti hasonlóságot méri. A modell pontos szövegezést használt? A szerkesztői irányítás hiánya csökkentheti a hasonlósági pontszámot.
A lekérés az indexlekérdezések hatékonyságát jelzi. Értékelje ki, hogy a lekért indexadatok mennyire igazodnak a kérdéshez. Az indexkeresés irreleváns adatai csökkentik ezt a pontszámot. A magasabb lekérési pontszámok alacsonyabb varianciát jeleznek, mivel kizárólag az indexlekérdezésekre támaszkodnak.
A fluency a szókincs használatára vonatkozik. Ha a modell megfelel egy stíluskalauznak, és a tartalmat a megfelelő formátumban jeleníti meg, akkor is folyékony lehet, ha nincs megalapozottsága vagy relevanciája.
A koherencia azt értékeli, hogy a modell beszéde természetes és koherens módon folyik-e. Felméri, hogy a beszélgetés valódi cserének tűnik-e.
Hiperparaméterek tesztelése
A modellparaméterek alkalmazásspecifikus tervezési döntésektől függnek. Az alkalmazásterv részeként válassza ki a modellt és a paramétereket a számítási feladat használati esetei alapján. A tesztelési folyamat egy iteratív belső hurokkal rendelkezik, amelyben a betanítási adatokat összehasonlítják a tesztadatokkal annak ellenőrzéséhez, hogy a modell betanítást végez-e a tervezett adathalmazon. Emellett a paraméterek úgy vannak hangolva, hogy a modell elfogadható pontosságú előrejelzéseket készítsen.
Kompromisszum. A belső hurok magában foglalja a modell betanításának számítási költségeit és a teszteken keresztüli kiértékelésének költségeit. Figyelembe kell vennie, hogy a modell betanítása és tesztelése mennyi időt igényel ebben a ciklusban. A tesztelési folyamat várhatóan tovább tart, mint a betanítási folyamat. A betanítási adatok egy részhalmazán végzett kezdeti teszteléssel felmérheti, hogy a modell ésszerű eredményeket hoz-e. Ezt a tesztelést fokozatosan felskálázhatja a teljes adatkészletre.
A következtetési végpont tesztelése
A következtetési végpont a REST API, amely lehetővé teszi az előrejelzések készítéséhez szükséges modellek elérését. Ez az a felület, ahol adatokat küld a kérés részeként, és olyan választ kap, amely a modell eredményeit tartalmazza. A végpont a számításon alapul, amely lehet PaaS, például Az Azure OpenAI szolgáltatás vagy egy nem Microsoft-következtetési kiszolgáló, például az NVIDIA Triton Inference Server, a TorchServe és a BentoML. PaaS-forgatókönyvekben a szolgáltató bizonyos mértékig kezeli a tesztelést. Ha azonban a végpontot üzemelteti, kezelje úgy, mint bármely más API-t, és tesztelje alaposan.
Bár a modell tesztelése a betanítás és a kiértékelés során, a következtetési végpont tesztelése magában foglalja annak biztosítását, hogy a modell körüli mechanizmusok, például a kérelmek feldolgozása, a válasz létrehozása, a skálázás és a példányok közötti koordináció megfelelően működjön. Hozzon létre egy átfogó teszttervet, amely a használati eseteket fedi le a követelmények alapján. Ez a szakasz néhány megfontolandó tesztesetet és teszttípust ismertet.
A következtetést üzemeltető kiszolgálók tesztelési szempontjai
Fontos megérteni a számítás terhelési jellemzőit, és terhelésteszteléssel ellenőrizni a teljesítményt. Ezek a műveletek segítenek a technológiák kiválasztásában az architektúra tervezésekor vagy optimalizálásakor. A különböző következtetési kiszolgálók például eltérő teljesítményjellemzőkkel rendelkeznek. A kód processzorciklusokat és memóriát használ fel az egyidejű kapcsolatok számának növekedésével. Ismerje meg, hogyan működik a kód és a számítási erőforrások normál és csúcsterhelési feltételek mellett. Az Azure Load Testing jó választás a terhelésteszteléshez, és nagy mennyiségű terhelést eredményezhet. Más nyílt forráskódú lehetőségek, például az Apache JMeter is népszerűek. Fontolja meg ezeknek a teszteknek a közvetlen meghívását a környezetből. A Machine Learning például jól integrálható a terhelésteszteléssel.
Egy másik fontos döntés a GPU-képességek kiválasztása. Számos modell esetében gpu-kra van szükség a hatékony következtetéshez a kialakításuk miatt. A terheléstesztelés segít megérteni a GPU-termékváltozatok teljesítménykorlátjait, és megakadályozza a túlterheltségeket, ami jelentős pénzügyi szempontok.
Kompromisszum. A GPU-termékváltozatok költségesek. Bár lehet, hogy konzervatív döntéseket hoz a termékváltozat kiválasztásában, fontos, hogy folyamatosan ellenőrizze, hogy a GPU-erőforrások kihasználatlanok-e, és ha lehetséges, jogosultsági jogokkal kell-e őket kihasználni. A módosítások elvégzése után tesztelje az erőforrás-használatot, hogy fenntartsa a költséghatékonyság és a teljesítményoptimalizálás közötti egyensúlyt. A költségoptimalizálási stratégiákért tekintse meg az összetevők költségeinek optimalizálására vonatkozó javaslatokat.
A nem PaaS-alapú üzemeltetési platformok esetében a biztonság kulcsfontosságú, mivel az API nyilvánosan elérhető. Fontos, hogy a végpont ne legyen kihasználva vagy sérüljön, ami veszélyeztetheti a teljes rendszert. Vegye fel ezt a végpontot a rutin biztonsági tesztelés részeként más nyilvános végpontokkal együtt. Fontolja meg a teszteket, például a behatolástesztelést az élő rendszeren. A biztonság másik aspektusa a tartalombiztonság. A kód olyan speciális API-kat hívhat meg, amelyek észlelik a kérés és a válasz hasznos adatainak káros tartalmát. Az Azure AI Content Safety meghívható a tesztelésből a tartalombiztonsági tesztelés megkönnyítése érdekében.
A legfontosabb stratégiákat a biztonsági tesztelésre vonatkozó javaslatokban talál.
PaaS-következtetési végpontok tesztelési szempontjai
Az ügyfélnek hibákra kell számítania, amikor kéréseket küld a következtetési végpontnak a PaaS szolgáltatásban. A hibák a rendszer túlterhelése, a nem válaszoló háttérvégzmények és egyéb hibaállapotok miatt fordulhatnak elő. Végezzen hibamód-elemzést a szolgáltatáson, és tesztelje ezeket a lehetséges hibákat. A hibamód elemzése szükséges az ügyfélkódban található kockázatcsökkentési stratégiák tervezéséhez és implementálásához. Az Azure OpenAI API-k például egy HTTP 429 hibaválaszkód visszaadásával szabályozják a kéréseket. Az ügyfélnek újrapróbálkozásos mechanizmusokkal és megszakítókkal kell kezelnie ezt a hibát. További információ: Javaslatok a hibamód-elemzés végrehajtásához.
A PaaS-szolgáltatások tesztelése segíthet a szolgáltatási termékváltozatok kiválasztásában, mivel tisztában van a kapcsolódó költségekkel, például használatalapú fizetéssel vagy előre kiosztott számítással. Az Azure díjszabási kalkulátorai segítségével kiértékelheti a számítási feladatokat, a gyakoriságot és a tokenhasználatot a legjobb számlázási és számítási lehetőségek meghatározásához. Számítási feladatokat szimulálhat alacsony költségű termékváltozatokkal, és indokolhatja a magas szintű lehetőségeket, például a kiosztott átviteli egységeket (PTU-kat) az Azure OpenAI-hoz.
A terheléstesztelés nem annyira releváns a használatalapú fizetéses számításhoz, mert végtelen kapacitás esetén nem tapasztal problémákat. A tesztelés ellenőrzi a korlátokat és a kvótákat. Nem javasoljuk a használatalapú fizetéses számítás terheléses tesztelését, mert ez jelentős pénzügyi költség. Az átviteli sebesség ellenőrzéséhez azonban be kell töltenie a tesztet, amelyet percenkénti jogkivonatokban vagy kérésekben mérnek. A standard API-któl eltérően, amelyek olyan metrikákat tekintenek, mint a kérések mérete, ez a módszer jogkivonatok alapján értékeli ki a számítási feladatokat a használat meghatározásához. A legfontosabb az aktív felhasználók számának megértése és az átviteli sebesség ennek megfelelően történő mérése. További információ: Az átviteli sebesség mérése.
Biztonsági vezérlők használata
Függetlenül attól, hogy következtetési kiszolgálót vagy PaaS-beállítást használ, a biztonság az Ön felelőssége. Az API-végpontok esetében elengedhetetlen a feltörési és tartalombiztonsági vezérlők tesztelése. Győződjön meg arról, hogy ezek a vezérlők nem megkerülhetők, és a várt módon működnek. Egy ismert letiltott elem elküldésével például ellenőrizheti, hogy a biztonsági vezérlők érvényben vannak-e, és megfelelően működnek-e az üzembe helyezés előtt. Érdemes szükség szerint futtatni ezeket a teszteket, vagy integrálni őket a kiadási folyamatba.
Fontos tesztelni, hogy a rendszer véletlenül képes-e olyan információkat elérhetővé tenni, amit nem szabad. A rendszernek például nem szabad személyes adatokat elérhetővé tennie a válasz hasznos adatai között. Tesztelje azt is, hogy az ügyfél nem fér-e hozzá más identitásokhoz szánt végpontokhoz. Végezzen biztonsági teszteket annak ellenőrzésére, hogy az API hitelesítési és engedélyezési mechanizmusaival nem szivárog-e ki bizalmas információ, és megfelelő felhasználói szegmentációt tart-e fenn.
A földelési adatok tesztelése
Az adattervezés befolyásolja a generatív modellek hatékonyságát, és az adatok földelése a kritikus összetevő. Az adatok földelése több kontextust biztosít a válasz relevanciájának növeléséhez. A modell elérése előtt indexeli. Ez az index valós időben érhető el, amikor a felhasználó a válaszra vár.
Végezzen végpontok közötti tesztelést, és építse be ezt a folyamatot az adattervezés részeként. Olyan tesztelési folyamat implementálása, amely kiértékeli és számszerűsíti az ügyfél tapasztalatainak eredményeit a modell teljesítménye, vezénylése, indexelése, előfeldolgozása és forrásadatai alapján. A minőségi metrikák iteratív monitorozása és mérése. Íme néhány szempont:
Az adatfeldolgozás alapos tesztelése funkcionális és integrációs teszteléssel. Ellenőrizze, hogy az adatok a várt módon vannak-e betöltve, és hogy minden adat megtalálható-e.
Tesztelje az indexsémát a visszamenőleges kompatibilitás érdekében. Tesztelje a dokumentum vagy mező módosításait, hogy az új verzió továbbra is elférjen az adatok korábbi verzióiban.
Az adatok indexelése előtt a zaj és az elfogultság csökkentése és a hatékony lekérdezés lehetővé tétele érdekében előkészítésen megy keresztül. Ez a folyamat magában foglalja az előfeldolgozást, az adattömböket és a beágyazások kiszámítását, és minden lépés adatokat ment az index környezeteibe vagy fájljaiba. Egy vezénylési folyamat, például az Azure AI Search által biztosított képességkészletek hajtják végre ezeket a lépéseket. Tesztelnie kell a vezénylési kódot, hogy ne maradjon le a lépésekről, és a feldolgozott adatok kiváló minőségűek legyenek.
A teszteknek ellenőrizniük kell a régi adatokat, a szintetikus értékeket, az üres táblákat, az adatfrissítést és a feldolgozást a legújabb verzión. Ha tesztelési hibák történnek, előfordulhat, hogy módosítania kell a keresési lekérdezést és az indexet. Ez a folyamat magában foglalja a szűrők és a korábban tárgyalt egyéb elemek módosítását. A tesztelést iteratív tevékenységnek kell tekinteni.
Az indexek összetettek, és a lekérdezési teljesítmény az indexszerkezettől függően változhat, ami terhelésbecslést igényel. A megfelelő terheléstesztelés segíthet meghatározni a különböző tárolási, számítási és egyéb erőforrások termékváltozatait, amelyek a követelmények támogatására rendelkezésre állnak.
Minden biztonsági vezérlőt tesztelnie kell. Előfordulhat például, hogy az adatok külön dokumentumokba particionálhatók. Minden partíció rendelkezik hozzáférés-vezérléssel. A bizalmasság védelme érdekében megfelelően kell tesztelnie ezeket a vezérlőket.
A vezénylő tesztelése
A RAG-alkalmazások fő összetevője a központi vezénylő. Ez a kód koordinálja a kezdeti felhasználói kérdéshez kapcsolódó különböző feladatokat. A vezénylési feladatok általában megkövetelik a felhasználói szándék megértését, az indexhez való kapcsolódást az alapadatok kereséséhez és a következtetési végpont meghívásához. Ha az ügynököknek olyan feladatokat kell elvégeznie, mint például a REST API-k meghívása, ez a kód kezeli ezeket a feladatokat a környezetben.
A vezénylési kódot bármilyen nyelven fejlesztheti, vagy az alapoktól kezdve megírhatja. Javasoljuk azonban, hogy a fejlesztési folyamat felgyorsítása és egyszerűsítése érdekében olyan technológiákat használjon, mint a parancssori folyamat az Azure AI Foundry portálon vagy az Apache Airflow irányított aciklikus gráfjai (DAG-k). A parancssori folyamat tervezési időt biztosít. A használatával egységekként modulárisíthatja a feladatokat, és csatlakoztathatja az egyes egységek bemeneteit és kimeneteit, végül létrehozva a vezénylési kódot, amely az egész folyamatot képviseli.
A vezénylési kód elkülönítése. Külön fejlesztheti és mikroszolgáltatásként üzembe helyezheti egy online végponttal és a REST API-val a hozzáféréshez. Ez a megközelítés biztosítja a modularitást és a könnyű üzembe helyezést.
Tesztelési szempontból kezelje ezt a kódot, mint bármely más kódot, és végezzen egységteszteket. A fontosabb szempont azonban a funkcionalitása, például az útválasztási logikája, amelyet funkcionális és integrációs teszteléssel ellenőrizheti. Tesztelje a parancssori tervezést, hogy a kód képes legyen a felhasználói szándék észlelésére és a hívások megfelelő átirányítására. A teszteléshez számos keretrendszer és kódtár tartozik, például a Scikit-learn, a PyTorch torch.testing modulja, a FairML az elfogultság és a méltányosság teszteléséhez, valamint a TensorFlow modellelemzés a modell kiértékeléséhez.
Futtatókörnyezeti teszteket is végezhet, például hibamódos tesztelést. Tesztelje például a tokenkorlátozásokkal kapcsolatos lehetséges hibákat.
Bizonyos futtatókörnyezeti tesztek segíthetnek a döntéshozatalban. Terheléses tesztek futtatásával megtudhatja, hogyan viselkedik ez a kód stressz esetén, és használja az eredményeket a kapacitástervezéshez. Mivel ez a kód az architektúra kritikus pontján van elhelyezve, ahol más szolgáltatásokat kell elérnie, segíthet a telemetriai adatok gyűjtésében az összes hívásból. Ezek az adatok betekintést nyújtanak abba, hogy mennyi időt töltenek a helyi feldolgozással és a hálózati hívásokkal, és meghatározhatják más összetevők viselkedését, például a lehetséges késést. Az olyan technológiák, mint a parancssori folyamat, beépített telemetriai képességekkel rendelkeznek a folyamat megkönnyítésére. Ellenkező esetben telemetria beépítése az egyéni kódba.
Feljegyzés
A kód tesztelésének költségvonzatai vannak. Ha például az Azure OpenAI használatával üzemelteti a következtetési végpontot, a stressztesztelés egy gyakori eljárás, amely segíthet meghatározni a rendszer korlátait. Az Azure OpenAI azonban minden hívásért díjat számít fel, ami költségessé teheti a kiterjedt stressztesztelést. A díjak optimalizálásának egyik módja az Azure OpenAI nem használt PTU-jainak használata tesztkörnyezetben. Másik lehetőségként szimulálhatja a következtetési végpontot.
A biztonsági szempontok a vezénylési kódra és a modellre is érvényesek. Tartalmazza a tesztelést a jailbreakeléshez, ahol a cél a modell biztonságának megtörése. A támadók nem kommunikálnak közvetlenül a modellel. Először a vezénylési kóddal kommunikálnak. A vezénylési kód fogadja a felhasználói kéréseket, és elemzi őket. Ha a vezénylési kód rosszindulatú kérést kap, továbbíthatja a kérést a modellnek, és potenciálisan veszélyeztetheti a modellt.
A tartalombiztonság egy másik fontos szempont. Egy csevegőrobot-alkalmazásban a vezénylési kód csevegőszöveget kap. A kódban fontolja meg egy tartalombiztonsági szolgáltatás meghívását. Küldje el a felhasználói kérést és az alapkörnyezetet elemzésre, és kapjon értékelést a kockázatról. A Prompt Shields egy egységes API, amely nagy nyelvi modellbemeneteket elemez, és észleli a felhasználó által kezdeményezett támadásokat és a dokumentumtámadásokat, amelyek a támadó bemenetek két gyakori típusa.
A biztonsági ellenőrzés és a hitelesítés kulcsfontosságú a RESTful-végpontok esetében. Kezelnie kell a hitelesítést, és biztosítania kell az alapos tesztelést.
A modell romlásának megakadályozása
Az összes modell esetében gyakori probléma, hogy bizonyos mértékű lebomlást okoz az idő múlásával. A számítási feladat belső és külső változásai végül a modell és a kimenetek minőségének romlását okozzák. A modell bomlása kétféleképpen történik:
Az adateltolódás a bemeneti adatok megváltozásakor következik be. Az új adatbevitel elavulttá teszi a betanított modellt. Előfordulhat például, hogy van egy modellje, amely előrejelzi egy adott földrajzi terület, például egy körzet szavazati mintáit. Ha a körzetet újrarajzoltuk, és az adott körzet népességének demográfiai adatait megváltoztatjuk, a modellt frissíteni kell, hogy figyelembe lehessen venni a változásokat.
A koncepció eltérése akkor fordul elő, ha a számítási feladaton kívüli feltételek és a modell úgy változnak, hogy a modell kimenete már nem felel meg a valóságnak. Előfordulhat például, hogy egy technológiai termék értékesítési előrejelzési modellje van. Ha egy versenytárs váratlanul bevezet egy fejlettebb konkurens terméket, amely jelentős figyelmet fordít a nyilvánosságra, frissítenie kell a modellt a fogyasztói trendek változásának megfelelően.
Ha lehetséges, használjon automatizált tesztelést a modell életciklusa során a modell romlásának észleléséhez és kiértékeléséhez. Ha a modell diszkrét értékeket jelez előre, teszteket hozhat létre az értékek előrejelzéseinek kiértékelésére az idő függvényében, és mérheti a várt és a tényleges eredmények közötti eltérést. Egészítse ki ezt a tesztelést monitorozással az időbeli eltérés észleléséhez az összefoglaló statisztikák és a távolsági metrikák összehasonlításával.
A modell romlásának azonosítására egy másik gyakori módszer a felhasználói visszajelzés. A felhasználói visszajelzések például egy hüvelykujj felfelé vagy lefelé mutató válaszmechanizmus. A pozitív és negatív visszajelzések időbeli nyomon követése és a negatív visszajelzési küszöbérték elérésekor megjelenő riasztások segíthetnek megállapítani, hogy mikor érdemes megvizsgálni a modell minőségét.
Függetlenül attól, hogy milyen jeleket használ a modell romlásának azonosítására, a lehetséges bomlásról riasztást kapó műveleti csapatnak egy adatelemzőt kell bevonnia a jel kutatásához, és annak megállapításához, hogy a bomlás történik-e, és hogy mi a kiváltó ok.
Eszközök implementálása
Az Azure Machine Learning-adatgyűjtő használatával valós idejű naplózást kaphat a bemeneti és kimeneti adatokról a felügyelt online végpontokon vagy Kubernetes online végpontokon üzembe helyezett modellekből. A Machine Learning a naplózott következtetési adatokat az Azure Blob Storage-ban tárolja. Ezeket az adatokat ezután modellfigyelésre, hibakeresésre vagy naplózásra használhatja, amely megfigyelhetővé teszi az üzembe helyezett modellek teljesítményét. Ha egy modellt a Machine Learningen kívül vagy egy Machine Learning-kötegvégponton helyez üzembe, nem használhatja ki az adatgyűjtő előnyeit, és egy másik adatgyűjtési folyamatot kell üzembe helyeznie.
A monitorozás implementálásához használja a Machine Learning-modell monitorozását . A Machine Learning a streamelt termelési következtetési adatok és referenciaadatok statisztikai számításainak végrehajtásával figyelési jeleket szerez be. A referenciaadatok lehetnek korábbi betanítási adatok, érvényesítési adatok vagy alapadatok. Másrészt az éles következtetési adatok a modell éles környezetben gyűjtött bemeneti és kimeneti adataira vonatkoznak.
- A Machine Learning-modell monitorozásával megismerkedhet a Machine Learning monitorozási képességeivel, valamint az általa rögzített és elemezett metrikákkal .
- További figyelési javaslatokért tekintse meg az ajánlott eljárásokat .