Een aangepaste vaardigheid efficiënt uitschalen
Aangepaste vaardigheden zijn web-API's die een specifieke interface implementeren. Een aangepaste vaardigheid kan worden geïmplementeerd op elke openbaar adresseerbare resource. De meest voorkomende implementaties voor aangepaste vaardigheden zijn:
- Azure Functions voor aangepaste logische vaardigheden
- Azure-web-apps voor eenvoudige AI-vaardigheden in containers
- Azure Kubernetes-service voor complexere of grotere vaardigheden.
Configuratie van vaardighedenset
De volgende eigenschappen voor een aangepaste vaardigheid worden gebruikt voor schaalaanpassing. Bekijk de interface voor aangepaste vaardigheden voor een inleiding tot de invoer en uitvoer die een aangepaste vaardigheid moet implementeren.
Set
batchSize
van de aangepaste vaardigheid om het aantal records te configureren dat in één aanroep van de vaardigheid naar de vaardigheid wordt verzonden.Stel het
degreeOfParallelism
in op kalibreren van het aantal gelijktijdige aanvragen dat de indexeerfunctie doet voor uw vaardigheid.Ingesteld
timeout
op een waarde die voldoende is voor de vaardigheid om te reageren met een geldig antwoord.Stel in de
indexer
definitiebatchSize
in op het aantal documenten dat uit de gegevensbron moet worden gelezen en gelijktijdig moet worden verrijkt.
Overwegingen
Er is geen set aanbevelingen die geschikt zijn voor één grootte. U moet van plan zijn om verschillende configuraties te testen om een optimaal resultaat te bereiken. Strategieën voor omhoog schalen zijn gebaseerd op minder grote aanvragen of veel kleine aanvragen.
Kardinaliteit van vaardigheden aanroepen: zorg ervoor dat u weet of de aangepaste vaardigheid eenmaal wordt uitgevoerd voor elk document (
/document/content
) of meerdere keren per document (/document/reviews_text/pages/*
). Als het meerdere keren per document is, blijft u aan de onderkant vanbatchSize
het verloop endegreeOfParallelism
vermindert u het verloop en stelt u de batchgrootte van de indexeerfunctie in op incrementeel hogere waarden voor meer schaal.Coördineer de aangepaste vaardigheid
batchSize
en indexeerfunctiebatchSize
en zorg ervoor dat u geen knelpunten maakt. Als de batchgrootte van de indexeerfunctie bijvoorbeeld 5 is en de grootte van de vaardigheidsbatch 50 is, hebt u 10 indexeerbatches nodig om een aangepaste vaardigheidsaanvraag in te vullen. In het ideale geval moet de grootte van de vaardigheidsbatch kleiner dan of gelijk zijn aan de batchgrootte van de indexeerfunctie.Gebruik
degreeOfParallelism
voor het gemiddelde aantal aanvragen dat een indexeerfunctiebatch kan genereren om uw beslissing te begeleiden bij het instellen van deze waarde. Als uw infrastructuur die als host fungeert voor de vaardigheid, bijvoorbeeld een Azure-functie, geen ondersteuning biedt voor hoge gelijktijdigheidsniveaus, kunt u overwegen om de mate van parallelle uitvoering omlaag te kiezen. U kunt uw configuratie testen met een paar documenten om uw inzicht in het gemiddelde aantal aanvragen te valideren.Hoewel uw object schaalt en ondersteuning biedt voor grote volumes, helpt het testen met een kleiner aantal documenten verschillende fasen van uitvoering te kwantificeren. U kunt bijvoorbeeld de uitvoeringstijd van uw vaardigheid evalueren ten opzichte van de totale tijd die nodig is om de subset van documenten te verwerken. Dit helpt u bij het beantwoorden van de vraag: besteedt uw indexeerfunctie meer tijd aan het bouwen van een batch of het wachten op een reactie van uw vaardigheid?
Houd rekening met de upstream-implicaties van parallelle uitvoering. Als de invoer voor een aangepaste vaardigheid een uitvoer is van een eerdere vaardigheid, worden alle vaardigheden in de vaardighedenset effectief uitgeschaald om de latentie te minimaliseren?
Foutafhandeling in de aangepaste vaardigheid
Aangepaste vaardigheden moeten een HTTP 200-code voor de successtatus retourneren wanneer de vaardigheid is voltooid. Als een of meer records in een batch leiden tot fouten, kunt u overwegen om code 207 met meerdere statussen te retourneren. De lijst met fouten of waarschuwingen voor de record moet het juiste bericht bevatten.
Items in een batch die fouten veroorzaken, mislukken in het bijbehorende document. Als u het document wilt laten slagen, retourneert u een waarschuwing.
Elke statuscode van meer dan 299 wordt geëvalueerd als een fout en alle verrijkingen zijn mislukt, wat resulteert in een mislukt document.
Veelvoorkomende foutberichten
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.
Stel de time-outparameter voor de vaardigheid in om een langere uitvoeringsduur mogelijk te maken.Could not execute skill because Web Api skill response is invalid.
Indicatief van de vaardigheid die geen bericht retourneert in de aangepaste indeling voor vaardigheidsreacties. Dit kan het gevolg zijn van een ondeugende uitzondering in de vaardigheid.Could not execute skill because the Web Api request failed.
Meest waarschijnlijk veroorzaakt door autorisatiefouten of uitzonderingen.Could not execute skill.
Het resultaat van het antwoord op vaardigheden dat wordt toegewezen aan een bestaande eigenschap in de documenthiërarchie.
Aangepaste vaardigheden testen
Begin met het testen van uw aangepaste vaardigheid met een REST API-client om het volgende te valideren:
De vaardigheid implementeert de aangepaste vaardigheidsinterface voor aanvragen en antwoorden
De vaardigheid retourneert geldige JSON met het
application/JSON
MIME-typeRetourneert een geldige HTTP-statuscode
Maak een foutopsporingssessie om uw vaardigheid toe te voegen aan de vaardighedenset en zorg ervoor dat deze een geldige verrijking produceert. Hoewel u met een foutopsporingssessie de prestaties van de vaardigheid niet kunt afstemmen, kunt u ervoor zorgen dat de vaardigheid is geconfigureerd met geldige waarden en de verwachte verrijkte objecten retourneert.
Aanbevolen procedures
Hoewel vaardigheden grotere nettoladingen kunnen accepteren en retourneren, kunt u het antwoord beperken tot 150 MB of minder bij het retourneren van JSON.
Overweeg om de batchgrootte in te stellen op de indexeerfunctie en vaardigheid om ervoor te zorgen dat elke gegevensbronbatch een volledige nettolading genereert voor uw vaardigheid.
Voor langlopende taken stelt u de time-out in op een hoge waarde om ervoor te zorgen dat de indexeerfunctie geen foutmelding treedt bij het gelijktijdig verwerken van documenten.
Optimaliseer de batchgrootte van de indexeerfunctie, de batchgrootte van vaardigheden en de mate van parallelle uitvoering van vaardigheden om het laadpatroon te genereren dat uw vaardigheid verwacht, minder grote aanvragen of veel kleine aanvragen.
Bewaak aangepaste vaardigheden met gedetailleerde logboeken met fouten, omdat u scenario's kunt hebben waarin specifieke aanvragen consistent mislukken als gevolg van de gegevensvariabiliteit.