Efektivní horizontální navýšení kapacity vlastní dovednosti
Vlastní dovednosti jsou webová rozhraní API, která implementují konkrétní rozhraní. Vlastní dovednost se dá implementovat u libovolného veřejně adresovatelného prostředku. Nejběžnější implementace pro vlastní dovednosti jsou:
- Azure Functions pro vlastní dovednosti logiky
- Webové aplikace Azure pro jednoduché kontejnerizované dovednosti AI
- Azure Kubernetes Service pro složitější nebo větší dovednosti
Konfigurace sady dovedností
Pro škálování se používají následující vlastnosti vlastní dovednosti . Projděte si vlastní rozhraní dovedností, kde najdete úvod do vstupů a výstupů, které by měla vlastní dovednost implementovat.
Sada
batchSize
vlastních dovedností pro konfiguraci počtu záznamů odeslaných do dovednosti v jediném vyvolání dovednosti.degreeOfParallelism
Nastavte kalibraci počtu souběžných požadavků, které indexer provede pro vaši dovednost.Nastavte
timeout
hodnotu, která je dostatečná pro schopnost odpovědět platnou odpovědí.indexer
V definici nastavtebatchSize
počet dokumentů, které by měly být načteny ze zdroje dat a rozšířeny souběžně.
Důležité informace
Neexistuje žádná sada doporučení typu "jedna velikost odpovídá všem". Měli byste naplánovat testování různých konfigurací, abyste dosáhli optimálního výsledku. Strategie vertikálního navýšení kapacity jsou založené na menším počtu velkých požadavků nebo na mnoha malých požadavcích.
Kardinalita vyvolání dovedností: ujistěte se, jestli se vlastní dovednost provádí jednou pro každý dokument (
/document/content
) nebo vícekrát na dokument (/document/reviews_text/pages/*
). Pokud je to vícekrát na dokument, zůstaňte na dolní straněbatchSize
adegreeOfParallelism
snižte četnost změn a zkuste nastavit velikost dávky indexeru na přírůstkově vyšší hodnoty pro větší škálování.Koordinujte vlastní dovednosti
batchSize
a indexerybatchSize
a ujistěte se, že nevytvářujete kritické body. Pokud je například velikost dávky indexeru 5 a velikost dávky dovednosti je 50, budete k vyplnění vlastní žádosti o dovednosti potřebovat 10 dávek indexeru. V ideálním případě by velikost dávky dovednosti měla být menší nebo rovna velikosti dávky indexeru.Pokud
degreeOfParallelism
chcete, použijte průměrný počet požadavků, které může dávka indexeru vygenerovat, abyste se mohli rozhodnout, jak tuto hodnotu nastavit. Pokud vaše infrastruktura hostující dovednost, například funkci Azure, nemůže podporovat vysokou úroveň souběžnosti, zvažte vytočení stupňů paralelismu. Konfiguraci můžete otestovat několika dokumenty, abyste ověřili průměrný počet požadavků.I když je objekt škálovatelný a podporuje velké objemy, testování s menším vzorkem dokumentů pomáhá kvantifikovat různé fáze provádění. Můžete například vyhodnotit dobu provádění své dovednosti vzhledem k celkovému času potřebnému ke zpracování podmnožinu dokumentů. To vám pomůže odpovědět na otázku: tráví váš indexer více času vytvořením dávky nebo čekáním na odpověď z vaší dovednosti?
Zvažte nadřazené důsledky paralelismu. Pokud je vstup do vlastní dovednosti výstupem předchozí dovednosti, jsou všechny dovednosti v sadě dovedností efektivně škálovány, aby se minimalizovala latence?
Zpracování chyb ve vlastní dovednosti
Vlastní dovednosti by měly po úspěšném dokončení dovednosti vrátit stavový kód HTTP 200. Pokud jeden nebo více záznamů v dávce způsobí chyby, zvažte vrácení více stavového kódu 207. Seznam chyb nebo upozornění záznamu by měl obsahovat příslušnou zprávu.
Všechny položky v dávce, které chyby způsobí selhání odpovídajícího dokumentu. Pokud potřebujete, aby byl dokument úspěšný, vraťte upozornění.
Jakýkoli stavový kód nad 299 se vyhodnotí jako chyba a všechny rozšiřování se nezdaří a výsledkem je neúspěšný dokument.
Běžné chybové zprávy
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.
Nastavte parametr časového limitu dovednosti tak, aby umožňoval delší dobu provádění.Could not execute skill because Web Api skill response is invalid.
Indikuje, že dovednost nevrací zprávu ve formátu odpovědi na vlastní dovednosti. Může to být výsledek nezachycené výjimky v dovednostech.Could not execute skill because the Web Api request failed.
Nejpravděpodobnější příčinou jsou chyby autorizace nebo výjimky.Could not execute skill.
Obvykle se výsledek odpovědi dovednosti mapuje na existující vlastnost v hierarchii dokumentů.
Testování vlastních dovedností
Začněte testováním vlastní dovednosti pomocí klienta REST API, který ověří:
Dovednost implementuje vlastní rozhraní dovedností pro požadavky a odpovědi.
Dovednost vrátí platný kód JSON s typem
application/JSON
MIME.Vrátí platný stavový kód HTTP.
Vytvořte ladicí relaci pro přidání dovednosti do sady dovedností a ujistěte se, že vytváří platné rozšiřování. I když ladicí relace neumožňuje ladit výkon dovednosti, umožňuje zajistit, aby byla dovednost nakonfigurovaná s platnými hodnotami a vrátila očekávané rozšířené objekty.
Osvědčené postupy
I když dovednosti můžou přijímat a vracet větší datové části, zvažte omezení odpovědi na 150 MB nebo méně při vrácení JSON.
Zvažte nastavení velikosti dávky indexeru a dovednosti, abyste zajistili, že každá dávka zdroje dat pro vaši dovednost vygeneruje úplnou datovou část.
U dlouhotrvajících úloh nastavte časový limit na dostatečně vysokou hodnotu, aby se zajistilo, že indexer při souběžném zpracování dokumentů nezpůsobí chybu.
Optimalizujte velikost dávky indexeru, velikost dávky dovedností a stupně paralelismu a vygenerujte vzor zatížení, který vaše dovednost očekává, méně velkých požadavků nebo mnoha malých požadavků.
Monitorujte vlastní dovednosti s podrobnými protokoly selhání, protože můžete mít scénáře, kdy konkrétní požadavky v důsledku proměnlivosti dat konzistentně selžou.