Delen via


Een evaluatiestroom ontwikkelen in Azure AI Studio

Belangrijk

Sommige van de functies die in dit artikel worden beschreven, zijn mogelijk alleen beschikbaar in de preview-versie. Deze preview wordt aangeboden zonder een service level agreement en we raden deze niet aan voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.

Evaluatiestromen zijn speciale typen stromen die bepalen hoe goed de uitvoer van een uitvoering overeenkomt met specifieke criteria en doelstellingen.

In een promptstroom kunt u uw eigen evaluatiestroom aanpassen of maken die is afgestemd op uw taken en doelstellingen en deze vervolgens gebruiken om andere stromen te evalueren. In dit document leert u het volgende:

  • Een evaluatiemethode ontwikkelen.
  • Informatie over invoer, uitvoer en logboekregistratie van metrische gegevens voor promptstroomevaluaties.

Beginnen met het ontwikkelen van een evaluatiemethode

Er zijn twee manieren om uw eigen evaluatiemethoden te ontwikkelen:

  • Een ingebouwde evaluatiestroom aanpassen: een ingebouwde evaluatiestroom wijzigen.

    1. Selecteer de promptstroom onder Extra.
    2. Selecteer Maken om de wizard Stroom maken te openen.
    3. Selecteer evaluatiestroom in de stroomgalerie onder Galerie Verkennen om op dat type te filteren. Kies een voorbeeld en selecteer Klonen om aanpassingen uit te voeren.
  • Maak een nieuwe evaluatiestroom vanaf het begin: ontwikkel een gloednieuwe evaluatiemethode.

    1. Selecteer de promptstroom onder Extra.
    2. Selecteer Maken om de wizard Stroom maken te openen.
    3. Selecteer In de stroomgalerie onder Maken op type in het vak Evaluatiestroom de optie Maken . Vervolgens ziet u een sjabloon van de evaluatiestroom.

Meer informatie over de evaluatie in de promptstroom

In de promptstroom is een stroom een reeks knooppunten die een invoer verwerken en een uitvoer genereren. Evaluatiestromen nemen ook vereiste invoer en produceren bijbehorende uitvoer.

Enkele speciale functies van evaluatiemethoden zijn:

  • Ze worden meestal uitgevoerd nadat de uitvoering is getest en ontvangen uitvoer van die uitvoering.
  • Afgezien van de uitvoer van de uitvoering die moet worden getest, kunnen ze desgewenst een andere gegevensset ontvangen die overeenkomstige grondwaarheden kan bevatten.
  • Ze hebben mogelijk een aggregatieknooppunt waarmee de algehele prestaties van de stroom worden berekend die wordt getest op basis van de afzonderlijke scores.
  • Ze kunnen metrische gegevens registreren met behulp van de log_metric() functie.

We introduceren hoe de invoer en uitvoer moeten worden gedefinieerd bij het ontwikkelen van evaluatiemethoden.

Invoerwaarden

Een evaluatie wordt uitgevoerd na een andere uitvoering om te beoordelen hoe goed de uitvoer van die uitvoering overeenkomt met specifieke criteria en doelstellingen. Daarom ontvangt de evaluatie de uitvoer die is gegenereerd op basis van die uitvoering.

Andere invoer kan ook vereist zijn, zoals grondwaar, die afkomstig kan zijn van een gegevensset. De evaluatie maakt standaard gebruik van dezelfde gegevensset als de testgegevensset die is opgegeven voor de geteste uitvoering. Als de bijbehorende labels of doelwaarden voor waarheidswaarden zich echter in een andere gegevensset bevinden, kunt u eenvoudig overschakelen naar die gegevensset.

Als u een evaluatie wilt uitvoeren, moet u daarom de bronnen van deze vereiste invoer aangeven. Hiervoor ziet u bij het indienen van een evaluatie een sectie 'invoertoewijzing' .

  • Als de gegevensbron afkomstig is van de uitvoer van de uitvoering, wordt de bron aangegeven als ${run.output.[OutputName]}
  • Als de gegevensbron afkomstig is uit uw testgegevensset, wordt de bron aangegeven als ${data.[ColumnName]}

Notitie

Als uw evaluatie geen gegevens uit de gegevensset vereist, hoeft u niet te verwijzen naar gegevenssetkolommen in de sectie invoertoewijzing, waarmee wordt aangegeven dat de selectie van de gegevensset een optionele configuratie is. De selectie van de gegevensset heeft geen invloed op het evaluatieresultaat.

Beschrijving van invoer

Als u wilt herinneren welke invoer nodig is om metrische gegevens te berekenen, kunt u een beschrijving toevoegen voor elke vereiste invoer. De beschrijvingen worden weergegeven bij het toewijzen van de bronnen in batchuitvoeringsverzending.

Als u beschrijvingen voor elke invoer wilt toevoegen, selecteert u Beschrijving weergeven in de invoersectie bij het ontwikkelen van uw evaluatiemethode. En u kunt 'Beschrijving verbergen' selecteren om de beschrijving te verbergen.

Vervolgens wordt deze beschrijving weergegeven bij het gebruik van deze evaluatiemethode in batchuitvoeringsverzending.

Uitvoer en metrische gegevens

De uitvoer van een evaluatie zijn de resultaten waarmee de prestaties van de geteste stroom worden gemeten. De uitvoer bevat meestal metrische gegevens, zoals scores, en kan ook tekst bevatten voor redenering en suggesties.

Uitvoer van scores op exemplaarniveau

In de promptstroom verwerkt de stroom elke voorbeeldgegevensset één voor één en genereert een uitvoerrecord. In de meeste evaluatiescenario's is er ook een metrische waarde voor elke uitvoer, zodat u kunt controleren hoe de stroom presteert op elke afzonderlijke gegevens.

Als u de score voor elk gegevensvoorbeeld wilt vastleggen, berekent u de score voor elke uitvoer en registreert u de score als stroomuitvoer door deze in te stellen in de uitvoersectie. Deze ontwerpervaring is hetzelfde als het definiëren van een standaardstroomuitvoer.

We berekenen deze score in line_process knooppunt, die u helemaal zelf kunt maken en bewerken bij het maken op type. U kunt dit Python-knooppunt ook vervangen door een LLM-knooppunt om LLM te gebruiken om de score te berekenen.

Wanneer deze evaluatiemethode wordt gebruikt om een andere stroom te evalueren, kan de score op exemplaarniveau worden weergegeven op het tabblad Overzichtsuitvoer>.

Logboekregistratie en aggregatieknooppunt voor metrische gegevens

Daarnaast is het ook belangrijk om een algemene score voor de uitvoering te geven. U kunt de 'aggregatie instellen' van een Python-knooppunt in een evaluatiestroom controleren om het om te zetten in een 'reduce'-knooppunt, zodat het knooppunt de invoer als een lijst kan opnemen en in batch verwerkt.

Op deze manier kunt u alle scores van elke stroomuitvoer berekenen en verwerken en een totaalresultaat berekenen voor elke variant.

U kunt metrische gegevens registreren in een aggregatieknooppunt met prompt flow_sdk.log_metrics(). De metrische gegevens moeten numeriek zijn (float/int). Logboekregistratie van metrische gegevens van tekenreekstypen wordt niet ondersteund.

We berekenen deze score in het aggregate knooppunt, die u helemaal zelf kunt maken en bewerken wanneer u op type maakt. U kunt dit Python-knooppunt ook vervangen door een LLM-knooppunt om de LLM te gebruiken om de score te berekenen. Zie het volgende voorbeeld voor het gebruik van de log_metric API in een evaluatiestroom:

from typing import List
from promptflow import tool, log_metric

@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
    aggregate_grades = {}
    for index in range(len(grades)):
        grade = grades[index]
        variant_id = variant_ids[index]
        if variant_id not in aggregate_grades.keys():
            aggregate_grades[variant_id] = []
        aggregate_grades[variant_id].append(grade)

    # calculate accuracy for each variant
    for name, values in aggregate_grades.items():
        accuracy = round((values.count("Correct") / len(values)), 2)
        log_metric("accuracy", accuracy, variant_id=name)

    return aggregate_grades

Zoals u deze functie aangeroepen hebt in het Python-knooppunt, hoeft u deze nergens anders toe te wijzen en kunt u de metrische gegevens later bekijken. Wanneer deze evaluatiemethode wordt gebruikt in een batchuitvoering, kan de score op exemplaarniveau worden weergegeven op het tabblad Overzicht-Metrische> gegevens .

Volgende stappen