Dela via


Skala effektivt ut en anpassad färdighet

Anpassade kunskaper är webb-API:er som implementerar ett specifikt gränssnitt. En anpassad färdighet kan implementeras på alla offentligt adresserbara resurser. De vanligaste implementeringarna för anpassade kunskaper är:

  • Azure Functions för anpassade logikkunskaper
  • Azure-webbappar för enkla kunskaper om containerbaserad AI
  • Azure Kubernetes-tjänsten för mer komplexa eller större kunskaper.

Konfiguration av kompetensuppsättning

Följande egenskaper för en anpassad färdighet används för skalning. Granska det anpassade kompetensgränssnittet för en introduktion till indata och utdata som en anpassad färdighet ska implementera.

  1. Ange batchSize den anpassade färdigheten för att konfigurera antalet poster som skickas till färdigheten i ett enda anrop av färdigheten.

  2. degreeOfParallelism Ange för att kalibrera antalet samtidiga begäranden som indexeraren gör till din skicklighet.

  3. Ange timeoutett värde som är tillräckligt för att färdigheten ska svara med ett giltigt svar.

  4. indexer I definitionen anger du batchSize antalet dokument som ska läsas från datakällan och berikas samtidigt.

Att tänka på

Det finns ingen uppsättning rekommendationer för "en storlek passar alla". Du bör planera att testa olika konfigurationer för att uppnå ett optimalt resultat. Uppskalningsstrategier baseras på färre stora begäranden eller många små begäranden.

  • Kardinalitet för kompetensanrop: Kontrollera att du vet om den anpassade färdigheten körs en gång för varje dokument (/document/content) eller flera gånger per dokument (/document/reviews_text/pages/*). Om det är flera gånger per dokument stannar du kvar på den nedre sidan av batchSize och degreeOfParallelism minskar omsättningen och försöker ställa in indexerarens batchstorlek till inkrementellt högre värden för mer skalning.

  • Samordna anpassad kompetens batchSize och indexerare batchSizeoch se till att du inte skapar flaskhalsar. Om till exempel indexerarens batchstorlek är 5 och kunskapsbatchstorleken är 50, skulle du behöva 10 indexerarbatch för att fylla en anpassad kompetensbegäran. Helst bör storleken på kunskapsbatch vara mindre än eller lika med indexerarens batchstorlek.

  • För degreeOfParallelismanvänder du det genomsnittliga antalet begäranden som en indexerarbatch kan generera för att vägleda ditt beslut om hur du anger det här värdet. Om din infrastruktur som är värd för kunskapen, till exempel en Azure-funktion, inte kan stödja höga samtidighetsnivåer kan du överväga att sänka parallellitetens grader. Du kan testa konfigurationen med några dokument för att verifiera din förståelse av genomsnittligt antal begäranden.

  • Även om objektet är skalning och stöd för stora volymer kan testning med ett mindre dokumentexempel kvantifiera olika steg i körningen. Du kan till exempel utvärdera körningstiden för dina kunskaper i förhållande till den totala tid det tar att bearbeta delmängden av dokument. Detta hjälper dig att besvara frågan: Ägnar indexeraren mer tid åt att skapa en batch eller vänta på ett svar från din skicklighet?

  • Tänk på parallellitetens överordnade konsekvenser. Om indata till en anpassad färdighet är utdata från en tidigare färdighet, skalas alla färdigheter i kompetensuppsättningen ut effektivt för att minimera svarstiden?

Felhantering i den anpassade färdigheten

Anpassade kunskaper bör returnera statuskoden HTTP 200 när kunskapen har slutförts. Om en eller flera poster i en batch resulterar i fel kan du överväga att returnera kod för flera statusar 207. Listan med fel eller varningar för posten bör innehålla lämpligt meddelande.

Alla objekt i en batch som fel resulterar i att motsvarande dokument misslyckas. Om du behöver dokumentet för att lyckas returnerar du en varning.

Statuskoden över 299 utvärderas som ett fel och alla berikningar misslyckas, vilket resulterar i ett misslyckat dokument.

Vanliga felmeddelanden

  • 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. Ange timeout-parametern för färdigheten för att tillåta en längre körningstid.

  • Could not execute skill because Web Api skill response is invalid. En indikation på att färdigheten inte returnerar ett meddelande i anpassat svarsformat för färdigheter. Detta kan bero på ett undantagsfel i kunskapen.

  • Could not execute skill because the Web Api request failed. Orsakas troligen av auktoriseringsfel eller undantag.

  • Could not execute skill. Vanligtvis är resultatet av kunskapssvaret som mappas till en befintlig egenskap i dokumenthierarkin.

Testa anpassade kunskaper

Börja med att testa din anpassade färdighet med en REST API-klient för att verifiera:

  • Färdigheten implementerar det anpassade kompetensgränssnittet för begäranden och svar

  • Färdigheten returnerar giltig JSON med application/JSON MIME-typen

  • Returnerar en giltig HTTP-statuskod

Skapa en felsökningssession för att lägga till dina kunskaper i kompetensuppsättningen och se till att den ger en giltig berikning. Även om en felsökningssession inte tillåter att du justerar färdighetens prestanda kan du se till att färdigheten har konfigurerats med giltiga värden och returnerar de förväntade berikade objekten.

Bästa praxis

  • Även om färdigheter kan acceptera och returnera större nyttolaster kan du överväga att begränsa svaret till 150 MB eller mindre när du returnerar JSON.

  • Överväg att ange batchstorleken på indexeraren och färdigheten för att säkerställa att varje datakällas batch genererar en fullständig nyttolast för dina kunskaper.

  • För tidskrävande uppgifter anger du tidsgränsen till ett tillräckligt högt värde för att säkerställa att indexeraren inte felsöker när dokument bearbetas samtidigt.

  • Optimera indexerarens batchstorlek, storlek på kunskapsbatch och färdighetsgrader för parallellitet för att generera det belastningsmönster som dina kunskaper förväntar sig, färre stora begäranden eller många små begäranden.

  • Övervaka anpassade kunskaper med detaljerade loggar med fel eftersom du kan ha scenarier där specifika begäranden konsekvent misslyckas till följd av datavariansen.