Dela via


Hantera beräkningssession för promptflöde i Azure Machine Learning Studio

En beräkningssession för promptflöde innehåller de databehandlingsresurser som krävs för att programmet ska kunna köras, inklusive en Docker-avbildning med alla nödvändiga beroendepaket. Med den här tillförlitliga, skalbara miljön kan processflödet köra uppgifter och funktioner effektivt, vilket säkerställer en smidig användarupplevelse.

Behörigheter och roller för hantering av beräkningssessioner

Om du vill tilldela roller behöver du owner eller Microsoft.Authorization/roleAssignments/write behörighet för resursen.

För användare av beräkningssessionen tilldelar du AzureML Data Scientist rollen på arbetsytan. Mer information finns i Hantera åtkomst till en Azure Machine Learning-arbetsyta.

Rolltilldelningen kan ta flera minuter att börja gälla.

Starta en beräkningssession i studio

Innan du använder Azure Machine Learning Studio för att starta en beräkningssession kontrollerar du att:

  • Du har AzureML Data Scientist rollen i arbetsytan.
  • Standarddatalagret (vanligtvis workspaceblobstore) på din arbetsyta är av blobtyp.
  • Arbetskatalogen (workspaceworkingdirectory) finns på arbetsytan.
  • Om du använder ett virtuellt nätverk för promptflöde förstår du övervägandena i Nätverksisolering i promptflödet.

Starta en beräkningssession på en flödessida

Varje flöde knyts till en enda beräkningssession. Starta en beräkningssession på en flödessida.

  • Välj start. Starta en beräkningssession med hjälp av den miljö som definierats i flow.dag.yaml flödesmappen. Den körs på storleken på den virtuella datorn (VM) för serverlös beräkning, förutsatt att du har tillräckligt med kvot på arbetsytan.

    Skärmbild av promptflöde med standardinställningar för att starta en beräkningssession på en flödessida.

  • Välj Börja med avancerade inställningar. I de avancerade inställningarna kan du:

    • Välj beräkningstyp. Du kan välja mellan serverlös beräknings- och beräkningsinstans.
      • Om du väljer serverlös beräkning kan du ange följande inställningar:

        • Anpassa storleken på den virtuella datorn som beräkningssessionen använder. Välj VM-serien D och senare. Mer information finns i avsnittet om VM-serier och storlekar som stöds
        • Anpassa inaktivitetstiden, vilket tar bort beräkningssessionen automatiskt om den inte används på ett tag.
        • Ange den användartilldelade hanterade identiteten. Beräkningssessionen använder den här identiteten för att hämta en basavbildning, autentisering med anslutnings- och installationspaket. Kontrollera att den användartilldelade hanterade identiteten har tillräcklig behörighet. Om du inte anger den här identiteten används användaridentiteten som standard.

        Skärmbild av promptflöde med avancerade inställningar med serverlös beräkning för att starta en beräkningssession på en flödessida.

        az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>
        

        Om innehållet i workspace_update_with_multiple_UAIs.yml är följande:

        identity:
           type: system_assigned, user_assigned
           user_assigned_identities:
            '/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<uai_name>': {}
            '<UAI resource ID 2>': {}
        

        Dricks

        Följande Azure RBAC-rolltilldelningar krävs på din användartilldelade hanterade identitet för din Azure Machine Learning-arbetsyta för att få åtkomst till data på de arbetsyteassocierade resurserna.

        Resurs Behörighet
        Azure Machine Learning-arbetsyta Deltagare
        Azure Storage Deltagare (kontrollplan) + Storage Blob Data Contributor + Storage File Data Privileged Contributor (dataplan, förbruka flödesutkast i fildelning och data i blob)
        Azure Key Vault (när du använder behörighetsmodellen åtkomstprinciper) Deltagare + eventuella behörigheter för åtkomstprinciper förutom rensningsåtgärder , det här är standardläget för länkade Azure Key Vault.
        Azure Key Vault (när du använder RBAC-behörighetsmodell) Deltagare (kontrollplan) + Key Vault-administratör (dataplan)
        Azure Container Registry Deltagare
        Azure Application Insights Deltagare

        Kommentar

        För att skicka jobb behöver användaren assign behörighet för den hanterade identiteten som tilldelats av användaren. Tilldela rollen Managed Identity Operator, eftersom den användartilldelade hanterade identiteten tilldelas till beräkningen varje gång en serverlös beräkningssession skapas.

      • Om du väljer beräkningsinstans som beräkningstyp kan du bara ange inaktiv avstängningstid.

        • Eftersom den körs på en befintlig beräkningsinstans är storleken på den virtuella datorn fast och kan inte ändras under sessionen.

        • Identiteten som används för den här sessionen definieras också i beräkningsinstansen, som standard använder den användaridentiteten. Läs mer om hur du tilldelar identitet till beräkningsinstansen

        • För den inaktiva avstängningstiden används den för att definiera livscykeln för beräkningssessionen, om sessionen är inaktiv under den tid du anger tas den bort automatiskt. Om inaktiv avstängning är aktiverad på beräkningsinstansen börjar den gälla på beräkningsnivå.

          Skärmbild av promptflöde med avancerade inställningar med beräkningsinstans för att starta en beräkningssession på en flödessida.

        • Läs mer om hur du skapar och hanterar beräkningsinstanser

Använda en beräkningssession för att skicka en flödeskörning i CLI/SDK

Förutom att använda Studio anger du beräkningssessionen i CLI eller SDK när du skickar en flödeskörning.

Ange instanstypen eller beräkningsinstansens namn under resursavsnittet. Om instanstypen eller beräkningsinstansens namn inte har angetts väljer Azure Machine Learning en instanstyp (VM-storlek) baserat på faktorer som kvot, kostnad, prestanda och diskstorlek. Läs mer om serverlös beräkning.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl

# specify identity used by serverless compute.
# default value
# identity:
#   type: user_identity 

# use workspace first UAI
# identity:
#   type: managed
  
# use specified client_id's UAI
# identity:
#   type: managed
#   client_id: xxx

column_mapping:
  url: ${data.url}

# define cloud resource

resources:
  instance_type: <instance_type> # serverless compute type
  # compute: <compute_instance_name> # use compute instance as compute type

Skicka den här körningen via CLI:

pfazure run create --file run.yml

Kommentar

Den inaktiva avstängningen är en timme om du använder CLI/SDK för att skicka en flödeskörning. Du kan gå till beräkningssidan för att släppa beräkning.

Referensfiler utanför flödesmappen

Ibland kanske du vill referera till en requirements.txt fil som ligger utanför flödesmappen. Du kan till exempel ha ett komplext projekt som innehåller flera flöden, och de delar samma requirements.txt fil. Det gör du genom att lägga till fältet additional_includes i flow.dag.yaml. Värdet för det här fältet är en lista över den relativa sökvägen till flödesmappen. Om requirements.txt till exempel finns i den överordnade mappen i flödesmappen kan du lägga till ../requirements.txt i fältet additional_includes .

inputs:
  question:
    type: string
outputs:
  output:
    type: string
    reference: ${answer_the_question_with_context.output}
environment:
  python_requirements_txt: requirements.txt
additional_includes:
  - ../requirements.txt
...

Filen requirements.txt kopieras till flödesmappen och används för att starta beräkningssessionen.

Uppdatera en beräkningssession på studioflödessidan

På en flödessida använder du de här alternativen för att hantera en beräkningssession:

  • Ändra inställningar för beräkningssession: Ändra inställningar som VM-storlek eller den användartilldelade hanterade identiteten för serverlös beräkning. Om du använder en beräkningsinstans växlar du till en annan instans.
  • Om du ändrar storleken på den virtuella datorn återställs beräkningssessionen med den nya VM-storleken.
  • Installera paket från requirements.txt: Öppna requirements.txt i gränssnittet för promptflöde och lägg till paket.
  • Visa installerade paket: Visar de paket som installerats i beräkningssessionen, inklusive de i basavbildningen requirements.txt och som anges i filen i flödesmappen.
  • Återställ beräkningssessionen tar bort den aktuella beräkningssessionen och skapar en ny med samma miljö. Om du stöter på ett problem med paketkonflikter kan du prova det här alternativet.
  • Stoppa beräkningssessionen tar bort den aktuella beräkningssessionen. Om det inte finns någon aktiv beräkningssession på den underliggande beräkningen tas även den serverlösa beräkningsresursen bort.

Skärmbild av åtgärder för en beräkningssession på en flödessida.

Du kan också anpassa miljön som du använder för att köra det här flödet genom att lägga till paket i requirements.txt filen i flödesmappen. När du har lagt till fler paket i den här filen kan du välja något av följande alternativ:

  • Spara och installera utlösare pip install -r requirements.txt i flödesmappen. Processen kan ta några minuter, beroende på vilka paket du installerar.
  • Spara sparar bararequirements.txt filen. Du kan installera paketen senare själv.

Skärmbild av alternativet att spara och installera paket för en beräkningssession på en flödessida.

Kommentar

Du kan ändra platsen och till och med filnamnet requirements.txtför , men se till att även ändra den i flow.dag.yaml filen i flödesmappen.

Fäst inte versionerna av promptflow och promptflow-tools i requirements.txt eftersom de redan ingår i sessionsbasavbildningen.

requirements.txt stöder inte lokala hjulfiler. Skapa dem i avbildningen och uppdatera den anpassade basavbildningen i flow.dag.yaml. Läs mer om hur du skapar en anpassad basavbildning.

Lägga till paket i en privat feed i Azure DevOps

Följ dessa steg om du vill använda ett privat flöde i Azure DevOps:

  1. Tilldela en hanterad identitet till arbetsytan eller beräkningsinstansen.

    1. Om du använder serverlös beräkning som beräkningssession tilldelar du en användartilldelad hanterad identitet till arbetsytan.

      1. Skapa en användartilldelad hanterad identitet och lägg till den i Azure DevOps-organisationen. Mer information finns i Använda tjänstens huvudnamn och hanterade identiteter.

        Kommentar

        Om knappen Lägg till användare inte visas har du förmodligen inte de behörigheter som krävs för att utföra den här åtgärden.

      2. Lägga till eller uppdatera användartilldelade identiteter till en arbetsyta.

        Kommentar

        Kontrollera att den användartilldelade hanterade identiteten har Microsoft.KeyVault/vaults/read på den länkade nyckelvaulten för arbetsytan.

    2. Om du använder en beräkningsinstans som beräkningssession tilldelar du en användartilldelad hanterad identitet till beräkningsinstansen.

  2. Lägg till {private} i din privata feed-URL. Om du till exempel vill installera test_package från test_feed i Azure DevOps lägger du till -i https://{private}@{test_feed_url_in_azure_devops} i requirements.txt:

    -i https://{private}@{test_feed_url_in_azure_devops}
    test_package
    
  3. Ange med användartilldelad hanterad identitet i konfigurationen av beräkningssessionen.

    1. Om du använder serverlös beräkning anger du den användartilldelade hanterade identiteten i Starta med avancerade inställningar om beräkningssessionen inte körs eller använder knappen Ändra inställningar för beräkningssession om beräkningssessionen körs.

      Skärmbild som visar växlingsknappen för att använda en användartilldelad hanterad identitet för arbetsytan.

    2. Om du använder beräkningsinstansen använder den den användartilldelade hanterade identiteten som du tilldelade till beräkningsinstansen.

Kommentar

Den här metoden fokuserar främst på snabb testning i flödesutvecklingsfasen, om du också vill distribuera det här flödet som slutpunkt skapar du det här privata flödet i avbildningen och uppdaterar anpassa basavbildningen i flow.dag.yaml. Läs mer om hur du skapar en anpassad basavbildning

Ändra basavbildningen för beräkningssessionen

Som standard använder vi den senaste basavbildningen för promptflöde. Om du vill använda en annan basavbildning kan du skapa en anpassad.

  • I Studio kan du ändra basavbildningen i basavbildningsinställningarna under inställningarna för beräkningssessionen.

Skärmbild av ändring av basavbildningen av en beräkningssession på en flödessida.

  • Du kan också ange den nya basavbildningen environment under flow.dag.yaml i filen i flödesmappen.

    Skärmbild av åtgärder för att anpassa en basavbildning för en beräkningssession på en flödessida.

    environment:
        image: <your-custom-image>
        python_requirements_txt: requirements.txt
    

Om du vill använda den nya basavbildningen måste du återställa beräkningssessionen. Den här processen tar flera minuter eftersom den hämtar den nya basavbildningen och installerar om paketen.

Hantera serverlös instans som används av en beräkningssession

Använd serverlös beräkning som en beräkningssession för att hantera den serverlösa instansen. Visa den serverlösa instansen på fliken för beräkningssessionslistan på beräkningssidan.

Skärmbild av en lista över serverlösa instanser.

Få åtkomst till flöden och körningar på beräkningen under fliken Aktiva flöden och körningar. Om du tar bort instansen påverkas flödena och körningarna där.

Skärmbild av beräkningsinformationssidan för en serverlös instans.

Relation mellan beräkningssession, beräkningsresurs, flöde och användare

  • En enskild användare kan ha flera beräkningsresurser (serverlös eller beräkningsinstans). En användare kan till exempel ha beräkningsresurser med olika VM-storlekar eller användartilldelade hanterade identiteter.
  • En beräkningsresurs kan bara användas av en enskild användare. Den fungerar som en privat utvecklingsruta för den användaren. Flera användare kan inte dela samma beräkningsresurs.
  • En beräkningsresurs kan vara värd för flera beräkningssessioner. En beräkningssession är en container som körs på den underliggande beräkningsresursen. Till exempel kräver redigering av promptflöde inte många beräkningsresurser, så en enda beräkningsresurs kan vara värd för flera beräkningssessioner för samma användare.
  • En beräkningssession tillhör endast en beräkningsresurs i taget. Du kan ta bort eller stoppa en beräkningssession och omallokera den till en annan beräkningsresurs.
  • Ett flöde kan bara ha en beräkningssession. Varje flöde är fristående och definierar basavbildningen och nödvändiga Python-paket i flödesmappen för beräkningssessionen.

Växla körning till beräkningssession

Beräkningssessioner erbjuder dessa fördelar jämfört med körning av beräkningsinstanser:

  • Hantera livscykeln för sessioner och underliggande beräkning automatiskt. Du behöver inte skapa eller hantera dem manuellt längre.
  • Anpassa paket enkelt genom att lägga till requirements.txt dem i filen i flödesmappen i stället för att skapa en anpassad miljö.

Växla en beräkningsinstans körning till en beräkningssession med följande steg:

  • requirements.txt Förbered filen i flödesmappen. Fäst inte versionerna av promptflow och promptflow-tools i requirements.txt eftersom de redan ingår i basavbildningen. Beräkningssessionen installerar paketen i requirements.txt filen när den startas.
  • Om du skapar en anpassad miljö för beräkning av instansens körning, hämta avbildningen från miljöinformationssidan och ange den i flow.dag.yaml filen i flödeskatalogen. Mer information finns i Ändra basavbildningen för beräkningssessionen. Kontrollera att du eller den relaterade användartilldelade hanterade identiteten på arbetsytan har acr pull behörighet för bilden.

Skärmbild som visar hur du hittar bilden på miljöinformationssidan.

  • För beräkningsresursen fortsätter du att använda den befintliga beräkningsinstansen för att manuellt hantera livscykeln eller prova serverlös beräkning som hanteras av systemet.

Nästa steg