Dela via


Felsökningsvägledning

Den här artikeln tar upp vanliga frågor om användning av promptflöden.

Felet "Paketverktyget hittades inte" uppstår när du uppdaterar flödet för en kodcentrerad upplevelse

Om flödet använde verktygen Faiss Index Lookup, Vector Index Lookup, Vector DB Lookup eller Content Safety (Text) kan följande felmeddelande visas när du uppdaterar flöden för en kod-första upplevelse:

Package tool 'embeddingstore.tool.faiss_index_lookup.search' is not found in the current environment.

För att lösa problemet har du två alternativ:

  • Alternativ 1

    • Uppdatera beräkningssessionen till den senaste basavbildningsversionen.

    • Välj Raw-filläge för att växla till vyn för råkod. Öppna sedan filen flow.dag.yaml .

      Skärmbild som visar hur du växlar till raw-filläge.

    • Uppdatera verktygsnamnen.

      Skärmbild som visar hur du uppdaterar verktygsnamnet.

      Tool Nytt verktygsnamn
      Faiss Index Lookup promptflow_vectordb.tool.faiss_index_lookup.FaissIndexLookup.search
      Vektorindexsökning promptflow_vectordb.tool.vector_index_lookup.VectorIndexLookup.search
      Vektor-DB-sökning promptflow_vectordb.tool.vector_db_lookup.VectorDBLookup.search
      Innehållssäkerhet (text) content_safety_text.tools.content_safety_text_tool.analyze_text
    • Spara filen flow.dag.yaml.

  • Alternativ 2

    • Uppdatera beräkningssessionen till den senaste basavbildningsversionen
    • Ta bort det gamla verktyget och återskapa ett nytt verktyg.

Felet "Det finns ingen sådan fil eller katalog"

Prompt-flödet förlitar sig på en filresurslagring för att lagra en ögonblicksbild av flödet. Om filresurslagringen har ett problem kan det uppstå följande problem. Här följer några lösningar som du kan prova:

  • Om du använder ett privat lagringskonto läser du Nätverksisolering i promptflöde för att se till att din arbetsyta kan komma åt ditt lagringskonto.

  • Om lagringskontot är aktiverat för offentlig åtkomst kontrollerar du om det finns ett datalager med namnet workspaceworkingdirectory på din arbetsyta. Det bör vara en filresurstyp.

    Skärmbild som visar arbetsytearbetskatalog.

    • Om du inte fick det här dataarkivet måste du lägga till det på din arbetsyta.
      • Skapa en filresurs med namnet code-391ff5ac-6576-460f-ba4d-7e03433c68b6.
      • Skapa ett datalager med namnet workspaceworkingdirectory. Se Skapa datalager.
    • Om du har ett workspaceworkingdirectory datalager men dess typ är blob i stället för fileshareskapar du en ny arbetsyta. Använd lagring som inte aktiverar hierarkiska namnområden för Azure Data Lake Storage Gen2 som standardlagringskonto för arbetsytan. Mer information finns i Skapa arbetsyta.

Flöde saknas

Skärmbild som visar ett flöde som saknar en redigeringssida.

Det finns möjliga orsaker till det här problemet:

  • Om offentlig åtkomst till ditt lagringskonto är inaktiverad måste du säkerställa åtkomst genom att antingen lägga till ip-adressen i lagringsbrandväggen eller aktivera åtkomst via ett virtuellt nätverk som har en privat slutpunkt ansluten till lagringskontot.

    Skärmbild som visar brandväggsinställningen för lagringskontot.

  • Det finns vissa fall, kontonyckeln i datalagringen är inte synkroniserad med lagringskontot. Du kan försöka uppdatera kontonyckeln på informationssidan för datalager för att åtgärda detta.

    Skärmbild som visar datalager med fel kontonyckel.

  • Om du använder Azure AI Foundry måste lagringskontot ange CORS så att Azure AI Foundry får åtkomst till lagringskontot, annars ser du att flödet saknar problem. Du kan lägga till följande CORS-inställningar i lagringskontot för att åtgärda problemet.

    • Gå till lagringskontosidan, välj Resource sharing (CORS) under settingsoch välj på File service fliken .
    • Tillåtet ursprung: https://mlworkspace.azure.ai,https://ml.azure.com,https://*.ml.azure.com,https://ai.azure.com,https://*.ai.azure.com,https://mlworkspacecanary.azure.ai,https://mlworkspace.azureml-test.net
    • Tillåtna metoder: DELETE, GET, HEAD, POST, OPTIONS, PUT

    Skärmbild som visar konfigurationen för resursdelning av lagringskontot.

Körningen misslyckades på grund av "Ingen modul med namnet XXX"

Den här typen av fel som rör beräkningssessionen saknar nödvändiga paket. Om du använder en standardmiljö kontrollerar du att avbildningen av beräkningssessionen använder den senaste versionen. Om du använder en anpassad basavbildning kontrollerar du att du har installerat alla nödvändiga paket i docker-kontexten. Mer information finns i Anpassa basavbildning för beräkningssession.

Var hittar du den serverlösa instans som används av beräkningssessionen?

Du kan visa den serverlösa instans som används av beräkningssessionen på fliken lista över beräkningssessioner under beräkningssidan. Läs mer om hur du hanterar serverlös instans.

Fel vid beräkningssessioner med anpassad basavbildning

Startfel för beräkningssession med requirements.txt eller anpassad basavbildning

Stöd för beräkningssessioner för att använda requirements.txt eller anpassad basavbildning i flow.dag.yaml för att anpassa avbildningen. Vi rekommenderar att du använder requirements.txt för vanliga fall, som används pip install -r requirements.txt för att installera paketen. Om du har mer beroende än python-paket måste du följa basavbildningen Anpassa för att skapa en ny avbildningsbas ovanpå basavbildningen för promptflöde. Använd den sedan i flow.dag.yaml. Läs mer om hur du anger basavbildning i beräkningssessionen.

  • Du kan inte använda godtyckliga basavbildningar för att skapa Beräkningssession. Du måste använda basavbildningen som tillhandahålls via promptflöde.
  • Fäst inte versionen av promptflow och promptflow-tools i requirements.txt, eftersom vi redan inkluderar dem i basavbildningen. Att använda den gamla versionen av promptflow och promptflow-tools kan orsaka oväntat beteende.

Hur hittar du råa indata och utdata från i LLM-verktyget för vidare undersökning?

I promptflöde, på flödessidan med en lyckad körnings- och körningsinformationssida, hittar du råa indata och utdata från LLM-verktyget i utdataavsnittet. view full output Välj knappen för att visa fullständiga utdata.

Skärmbild som visar visa fullständiga utdata på LLM-noden.

Trace innehåller varje begäran och svar på LLM-verktyget. Du kan kontrollera råmeddelandet som skickas till LLM-modellen och råsvaret från LLM-modellen.

Skärmbild som visar rå begäran skicka till LLM-modell och svar från LLM-modellen.

Så här åtgärdar du 409-fel från Azure OpenAI?

Du kan stöta på 409-fel från Azure OpenAI, det innebär att du har nått hastighetsgränsen för Azure OpenAI. Du kan kontrollera felmeddelandet i utdataavsnittet på LLM-noden. Läs mer om Azure OpenAI-hastighetsgräns.

Skärmbild som visar 429 hastighetsgränsfel från Azure OpenAI.

Så här identifierar du vilken nod som förbrukar mest tid

  1. Kontrollera loggarna för beräkningssessionen.

  2. Försök hitta följande varningsloggformat:

    {node_name} har körts i {duration} sekunder.

    Till exempel:

    • Fall 1: Python-skriptnoden körs under en längre tid.

      Skärmbild som visar en timeout-körningslogg i studiogränssnittet.

      I det här fallet kan du se att det PythonScriptNode kördes under en lång tid (nästan 300 sekunder). Sedan kan du kontrollera nodinformationen för att se vad som är problemet.

    • Fall 2: LLM-noden körs under en längre tid.

      Skärmbild som visar tidsgränsloggar som orsakas av en LLM-timeout i studiogränssnittet.

      I det här fallet kan det bero på att OpenAI API-anropet tar för lång tid och överskrider tidsgränsen om du hittar meddelandet request canceled i loggarna.

      En OpenAI API-timeout kan orsakas av ett nätverksproblem eller en komplex begäran som kräver mer bearbetningstid. Mer information finns i OpenAI API-timeout.

      Vänta några sekunder och försök igen. Den här åtgärden löser vanligtvis eventuella nätverksproblem.

      Om återförsök inte fungerar kontrollerar du om du använder en lång kontextmodell, till exempel gpt-4-32k, och har angett ett stort värde för max_tokens. I så fall förväntas beteendet eftersom din uppmaning kan generera ett långt svar som tar längre tid än det interaktiva lägets övre tröskelvärde. I det här fallet rekommenderar vi att du försöker Bulk test eftersom det här läget inte har någon tidsgränsinställning.

  3. Om du inte hittar något i loggar för att indikera att det är ett specifikt nodproblem:

    • Kontakta promptflödesteamet (promptflow-eng) med loggarna. Vi försöker identifiera rotorsaken.

Saknar behörighet att utföra åtgärden "Microsoft.MachineLearningService/workspaces/datastores/read"

Om ditt flöde innehåller verktyget Index Look Up måste slutpunkten efter distributionen av flödet komma åt arbetsytans datalager för att läsa MLIndex yaml-fil eller FAISS-mapp som innehåller segment och inbäddningar. Därför måste du manuellt ge slutpunktsidentiteten behörighet att göra det.

Du kan antingen bevilja slutpunktsidentiteten AzureML-Dataforskare på arbetsytans omfång eller en anpassad roll som innehåller åtgärden "MachineLearningService/workspace/datastore/reader".

Timeout-problem med överordnad begäran när slutpunkten förbrukas

Om du använder CLI eller SDK för att distribuera flödet kan det uppstå timeoutfel. Som standard request_timeout_ms är 5000. Du kan ange högst 5 minuter, vilket är 300 000 ms. Följande är ett exempel som visar hur du anger tidsgränsen för begäran i yaml-filen för distribution. Mer information finns i distributionsschemat.

request_settings:
  request_timeout_ms: 300000

OpenAI API träffar autentiseringsfel

Om du återskapar din Azure OpenAI-nyckel och manuellt uppdaterar anslutningen som används i promptflödet kan det uppstå fel som "Obehörig. Åtkomsttoken saknas, är ogiltig, målgruppen är felaktig eller har upphört att gälla." när du anropar en befintlig slutpunkt som skapats innan nyckeln återskapas.

Det beror på att de anslutningar som används i slutpunkterna/distributionerna inte uppdateras automatiskt. Alla ändringar av nyckel- eller hemligheter i distributioner bör göras genom manuell uppdatering, vilket syftar till att undvika att påverka onlineproduktionsdistributionen på grund av oavsiktlig offlineåtgärd.

  • Om slutpunkten distribuerades i studiogränssnittet kan du bara distribuera om flödet till den befintliga slutpunkten med samma distributionsnamn.
  • Om slutpunkten distribuerades med SDK eller CLI måste du göra vissa ändringar i distributionsdefinitionen, till exempel lägga till en dummy-miljövariabel och sedan använda az ml online-deployment update för att uppdatera distributionen.

Problem med sårbarheter i distributioner av promptflöde

För körningsrelaterade säkerhetsrisker för promptflöde är följande metoder som kan hjälpa dig att minimera:

  • Uppdatera beroendepaketen i din requirements.txt i flödesmappen.
  • Om du använder en anpassad basavbildning för ditt flöde måste du uppdatera körningen av kommandotolken till den senaste versionen och återskapa basavbildningen och sedan distribuera om flödet.

För andra sårbarheter i hanterade onlinedistributioner löser Azure Machine Learning problemen på ett månatligt sätt.

"MissingDriverProgram Error" eller "Det gick inte att hitta drivrutinsprogrammet i begäran"

Om du distribuerar ditt flöde och stöter på följande fel kan det vara relaterat till distributionsmiljön.

'error': 
{
    'code': 'BadRequest', 
    'message': 'The request is invalid.', 
    'details': 
         {'code': 'MissingDriverProgram', 
          'message': 'Could not find driver program in the request.', 
          'details': [], 
          'additionalInfo': []
         }
}
Could not find driver program in the request

Det finns två sätt att åtgärda det här felet.

  • (Rekommenderas) Du hittar containeravbildnings-URI:n på din anpassade miljöinformationssida och anger den som flödesbasavbildningen i filen flow.dag.yaml. När du distribuerar flödet i användargränssnittet väljer du bara Använd miljö för aktuell flödesdefinition, så skapar serverdelstjänsten den anpassade miljön baserat på den här basavbildningen och requirement.txt för distributionen. Läs mer om miljön som anges i flödesdefinitionen.

    Skärmbild av sidan med anpassad miljöinformation.

    Skärmbild av att ange basavbildningen i yaml-råfilen för flödet.

  • Du kan åtgärda det här felet genom att lägga till inference_config den anpassade miljödefinitionen.

    Följande är ett exempel på en anpassad miljödefinition.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
  path: ./image_build
  dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
  liveness_route:
    port: 8080
    path: /health
  readiness_route:
    port: 8080
    path: /health
  scoring_route:
    port: 8080
    path: /score

Modellsvaret tar för lång tid

Ibland kanske du märker att distributionen tar för lång tid att svara. Det finns flera potentiella faktorer för att detta ska inträffa.

  • Modellen som används i flödet är inte tillräckligt kraftfull (exempel: använd GPT 3.5 i stället för text-ada)
  • Indexfrågan är inte optimerad och tar för lång tid
  • Flow har många steg att bearbeta

Överväg att optimera slutpunkten med ovanstående överväganden för att förbättra modellens prestanda.

Det gick inte att hämta distributionsschemat

När du har distribuerat slutpunkten och vill testa den på fliken Test på sidan med slutpunktsinformation kan du prova följande två metoder för att åtgärda problemet på flikenTest:

Skärmbild av felet att det inte gick att hämta distributionsschemat på fliken Test i slutpunktsinformationssidan.

  • Kontrollera att du har beviljat rätt behörighet till slutpunktsidentiteten. Läs mer om hur du beviljar behörighet till slutpunktsidentiteten.
  • Det kan bero på att du körde ditt flöde i en gammal version och sedan distribuerade flödet. Distributionen använde även miljön för den körning som fanns i den gamla versionen. Om du vill uppdatera körningen följer du Uppdatera en körning i användargränssnittet och kör flödet igen i den senaste körningen och distribuerar sedan flödet igen.

Åtkomst nekad till lista med arbetsytehemligheter

Om du stöter på ett fel som "Åtkomst nekad att visa arbetsytehemlighet" kontrollerar du om du har beviljat rätt behörighet till slutpunktsidentiteten. Läs mer om hur du beviljar behörighet till slutpunktsidentiteten.

Hur gör jag för att använda datalager utan autentiseringsuppgifter i promptflödet?

Om du vill använda lagring utan autentiseringsuppgifter i Azure AI Foundry-portalen måste du i princip göra följande:

  • Ändra autentiseringstypen för datalager till Ingen.
  • Bevilja projekt-MSI och användarblob-/fildatadeltagare behörighet för lagring.

Ändra autentiseringstyp för datalager till Ingen

Du kan följa identitetsbaserad dataautentisering den här delen för att göra ditt datalager mindre autentiseringsuppgifter.

Du måste ändra autentiseringstypen för datalager till Ingen, som står för meid_token baserad autentisering. Du kan göra ändringar från informationssidan för datalager eller CLI/SDK: https://github.com/Azure/azureml-examples/tree/main/cli/resources/datastore

Skärmbild av autentiseringstyp för datalager.

För blobbaserat datalager kan du ändra autentiseringstyp och även aktivera MSI för arbetsytan för åtkomst till lagringskontot.

Skärmbild av uppdateringsautentiseringstypen för blobbaserat datalager.

För filresursbaserat datalager kan du endast ändra autentiseringstyp.

Skärmbild av uppdateringsautentiseringstypen för filresursbaserat datalager.

Bevilja behörighet till användaridentitet eller hanterad identitet

Om du vill använda datalager utan autentiseringsuppgifter i ett promptflöde måste du ge tillräcklig behörighet till användaridentiteten eller den hanterade identiteten för att få åtkomst till datalagringen.

  • Kontrollera att arbetsytans systemtilldelade hanterade identitet har Storage Blob Data Contributor och Storage File Data Privileged Contributor på lagringskontot behöver du åtminstone läs-/skrivbehörighet (bättre inkludera även borttagning).
  • Om du använder användaridentitet det här standardalternativet i promptflödet måste du se till att användaridentiteten har följande roll i lagringskontot:
    • Storage Blob Data Contributor på lagringskontot behöver du åtminstone läs-/skrivbehörighet (bättre inkludera även borttagning).
    • Storage File Data Privileged Contributor på lagringskontot behöver du åtminstone läs-/skrivbehörighet (bättre inkludera även borttagning).
  • Om du använder användartilldelad hanterad identitet måste du kontrollera att den hanterade identiteten har följande roll i lagringskontot:
    • Storage Blob Data Contributor på lagringskontot behöver du åtminstone läs-/skrivbehörighet (bättre inkludera även borttagning).
    • Storage File Data Privileged Contributor på lagringskontot behöver du åtminstone läs-/skrivbehörighet (bättre inkludera även borttagning).
    • Under tiden måste du tilldela lagringskontot en användaridentitetsroll Storage Blob Data Read , åtminstone om du vill använda promptflöde för redigering och testflöde.
  • Om du fortfarande inte kan visa flödesinformationssidan och första gången du använder promptflöde är tidigare än 2024-01-01 måste du bevilja arbetsytan MSI som lagringskonto som Storage Table Data Contributor är länkat till arbetsytan.