Egyéni funkció hatékony skálázása

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Az egyéni képességek olyan webes API-k, amelyek egy adott felületet implementálnak. Egyéni képesség bármilyen nyilvánosan címezhető erőforráson implementálható. Az egyéni készségek leggyakoribb implementációi a következők:

  • Azure Functions egyéni logikai képességekhez
  • Azure Web Apps egyszerű tárolóalapú AI-készségekhez
  • Azure Kubernetes Service összetettebb vagy nagyobb készségekért.

Képességkészlet konfigurálása

A skálázáshoz az egyéni képességek alábbi tulajdonságai használhatók. Tekintse át az egyéni képesség felületét , és ismerkedjen meg az egyéni képesség által implementálandó bemenetekkel és kimenetekkel.

  1. Az batchSize egyéni képesség beállításával konfigurálhatja az egyetlen képességhívásban küldött rekordok számát.

  2. Állítsa be az degreeOfParallelism indexelő által a képességére irányuló egyidejű kérések számának kalibrálásához.

  3. Állítsa olyan timeout értékre, amely elegendő ahhoz, hogy a képesség érvényes választ adjon vissza.

  4. A definícióban állítsa be a indexer elemet úgy, hogy az az adatforrásból egyidejűleg beolvasandó és feldolgozandó dokumentumok számát jelezze.

Megfontolások

Nincs általánosan alkalmazható javaslat. Tervezze meg a különböző konfigurációk tesztelését az optimális eredmény elérése érdekében. A vertikális felskálázási stratégiák vagy kevesebb nagy kérésen vagy sok kisebb kérésen alapulnak.

  • Készséghívási számosság: győződjön meg arról, hogy az egyéni készség minden dokumentumhoz csak egyszer (/document/content), vagy dokumentumonként többször hajt végre (/document/reviews_text/pages/*). Ha dokumentumonként többször is előfordul, tartsa a batchSize és degreeOfParallelism között az alsó határon a forgalom csökkentése érdekében, és próbálja meg az indexelő köteg méretét fokozatosan magasabb értékekre állítani a jobb skálázhatóság érdekében.

  • Koordinálja az egyéni képességeket batchSize és az indexelőt batchSize, és győződjön meg arról, hogy nem okoz szűk keresztmetszeteket. Ha például az indexelő köteg mérete 5, és a képesség kötegmérete 50, akkor 10 indexelő kötegre lenne szükség egy egyéni képességkérés kitöltéséhez. Ideális esetben a képesség kötegméretének kisebbnek vagy egyenlőnek kell lennie az indexelő köteg méreténél.

  • Ehhez degreeOfParallelismhasználja az indexelő köteg által generált kérelmek átlagos számát az érték beállításához. Ha a képességet üzemeltető infrastruktúra (például egy Azure függvény) nem tudja támogatni a magas szintű egyidejűséget, fontolja meg a párhuzamosság fokának letárcsázását. A konfigurációt néhány dokumentummal tesztelheti, így ellenőrizheti, hogy tisztában van-e a kérelmek átlagos számával.

  • Bár a cél a nagy kötetek méretezése és támogatása, a kisebb dokumentummintákkal végzett tesztelés segít számszerűsíteni a végrehajtás különböző szakaszait. Kiértékelheti például a képesség végrehajtási idejét a dokumentumok egy részhalmazának feldolgozásához szükséges teljes időhöz képest. Ez segít megválaszolni a kérdést: az indexelő több időt tölt egy csomag készítésével, vagy a készség válaszára vár?

  • Vegye figyelembe a párhuzamosság felsőbb rétegbeli következményeit. Ha egy egyéni képesség bemenete egy korábbi képesség kimenete, a képességkészlet összes képessége hatékonyan felskálázva van a késés minimalizálása érdekében?

Hibakezelés az egyéni képességben

Az egyéni készségeknek http 200 sikeres állapotkódot kell visszaadnia, amikor a képesség sikeresen befejeződött. Ha egy csomag egy vagy több rekordja hibát eredményez, fontolja meg a többállapotú 207-es kód visszaadását. A rekord hibáinak vagy figyelmeztetéseinek listájának tartalmaznia kell a megfelelő üzenetet.

A köteg minden olyan eleme, amely hibás, a megfelelő dokumentum meghiúsulását okozza. Ha azt szeretné, hogy a dokumentum sikeres legyen, adjon vissza egy figyelmeztetést.

A 299-et meghaladó állapotkódokat a rendszer hibaként értékeli ki, és az összes bővítés meghiúsul, ami egy sikertelen dokumentumot eredményez.

Gyakori hibaüzenetek

  • Could not execute skill because it did not execute within the time limit '00:00:30'. This is likely transient. Please try again later. For custom skills, consider increasing the 'timeout' parameter on your skill in the skillset. Állítsa be az időtúllépési paramétert a képességen, hogy hosszabb végrehajtási időtartamot biztosítson.

  • Could not execute skill because Web Api skill response is invalid. Jelzi, hogy a képesség nem küld üzenetet az egyéni képesség válaszformátumában. Ennek oka lehet, hogy nem merült fel kivétel a képességben.

  • Could not execute skill because the Web Api request failed. Valószínűleg engedélyezési hibák vagy kivételek okozzák.

  • Could not execute skill. Általában annak az eredménye, hogy a képesség válasza a dokumentumhierarchiában egy meglévő tulajdonságra van leképezve.

Egyéni képességek tesztelése

Először tesztelje az egyéni jártasságot egy REST API-ügyféllel az ellenőrzéshez:

  • A képesség implementálja az egyéni készségfelületet a kérésekhez és válaszokhoz

  • A képesség érvényes JSON-t ad vissza a application/json MIME típussal

  • A képesség érvényes HTTP-állapotkódot ad vissza

Hozzon létre egy hibakeresési munkamenetet , amely hozzáadja a készséget a készségkészlethez, és győződjön meg arról, hogy az érvényes bővítést eredményez. Bár a hibakeresési munkamenet nem teszi lehetővé a képesség teljesítményének finomhangolását, lehetővé teszi annak biztosítását, hogy a képesség érvényes értékekkel legyen konfigurálva, és a várt gazdagított objektumokat adja vissza.

Ajánlott eljárások

  • Bár a készségek nagyobb hasznos adatokat is képesek fogadni és visszaadni, érdemes lehet 150 MB-ra vagy annál kisebbre korlátozni a választ a JSON visszaadásakor.

  • Érdemes beállítani a köteg méretét az indexelőn és a funkción annak érdekében, hogy minden adatforrás köteg teljes terhelést hozzon létre a funkciójához.

  • Hosszú ideig futó feladatok esetén állítsa az időtúllépést elég magas értékre, hogy az indexelő ne hibázzon a dokumentumok egyidejű feldolgozásakor.

  • Optimalizálja az indexelő kötegméretét, a képesség kötegméretét és a képesség párhuzamos feldolgozási fokát annak érdekében, hogy a képesség által elvárt terhelési mintát generálja; kevesebb nagy kérést vagy sok kis kérést.

  • Egyéni képességek monitorozása részletes hibanaplókkal, mert az adatok változékonysága adott kérések következetes sikertelenségét okozhatja.