Condividi tramite


Flussi di valutazione e metriche

I flussi di valutazione sono un tipo speciale di flusso di richieste che calcola le metriche per valutare l'integrità degli output di un'esecuzione che soddisfano criteri e obiettivi specifici. È possibile creare o personalizzare flussi di valutazione e metriche personalizzati in base alle attività e agli obiettivi e usarli per valutare altri flussi di richiesta. Questo articolo illustra i flussi di valutazione, come svilupparli e personalizzarli e come usarli nelle esecuzioni batch del flusso di richiesta per valutare le prestazioni del flusso.

Informazioni sui flussi di valutazione

Un flusso di richiesta è una sequenza di nodi che elaborano l'input e generano l'output. I flussi di valutazione usano anche gli input necessari e producono output corrispondenti che sono in genere punteggi o metriche. I flussi di valutazione differiscono dai flussi standard nell'esperienza di creazione e nell'utilizzo.

I flussi di valutazione vengono in genere eseguiti dopo l'esecuzione dei test ricevendo i relativi output e usando gli output per calcolare punteggi e metriche. I flussi di valutazione registrano le metriche usando la funzione SDK log_metric() del flusso di richiesta.

Gli output del flusso di valutazione sono risultati che misurano le prestazioni del flusso sottoposto a test. I flussi di valutazione possono avere un nodo di aggregazione che calcola le prestazioni complessive del flusso sottoposto a test sul set di dati di test.

Le sezioni successive descrivono come definire input e output nei flussi di valutazione.

Input

I flussi di valutazione calcolano le metriche o i punteggi per le esecuzioni batch eseguendo gli output dell'esecuzione che stanno testando. Ad esempio, se il flusso sottoposto a test è un flusso QnA che genera una risposta in base a una domanda, è possibile assegnare un nome a un input di valutazione come answer. Se il flusso sottoposto a test è un flusso di classificazione che classifica un testo in una categoria, è possibile assegnare un nome a un input di valutazione come category.

Potrebbero essere necessari altri input come verità di base. Ad esempio, se si vuole calcolare l'accuratezza di un flusso di classificazione, è necessario fornire la category colonna del set di dati come verità di base. Se si vuole calcolare l'accuratezza di un flusso QnA, è necessario fornire la answer colonna del set di dati come verità di base. Potrebbero essere necessari altri input per calcolare le metriche, ad esempio question e context in QnA o negli scenari di generazione aumentata (RAG) di recupero.

Gli input del flusso di valutazione vengono definiti nello stesso modo in cui si definiscono gli input di un flusso standard. Per impostazione predefinita, la valutazione usa lo stesso set di dati dell'esecuzione sottoposta a test. Tuttavia, se le etichette corrispondenti o i valori di verità di destinazione si trovano in un set di dati diverso, è possibile passare facilmente a tale set di dati.

Descrizioni di input

Per descrivere gli input necessari per il calcolo delle metriche, è possibile aggiungere descrizioni. Le descrizioni vengono visualizzate quando si esegue il mapping delle origini di input negli invii di esecuzione batch.

Per aggiungere descrizioni per ogni input, selezionare Mostra descrizione nella sezione input durante lo sviluppo del metodo di valutazione e quindi immettere le descrizioni.

Screenshot della valutazione dell'accuratezza della classificazione con nascondi descrizione evidenziata.

Per nascondere le descrizioni dal modulo di input, selezionare Nascondi descrizione.

Screenshot del mapping dell'input di valutazione con la descrizione delle risposte evidenziata.

Output e metriche

Gli output di una valutazione sono risultati che mostrano le prestazioni del flusso sottoposto a test. L'output contiene in genere metriche, ad esempio punteggi, e può includere anche testo per motivi e suggerimenti.

Punteggi di output

Un flusso di richiesta elabora una riga di dati alla volta e genera un record di output. I flussi di valutazione possono anche calcolare i punteggi per ogni riga di dati, in modo da poter controllare le prestazioni di un flusso in ogni singolo punto dati.

È possibile registrare i punteggi per ogni istanza di dati come output del flusso di valutazione specificandoli nella sezione di output del flusso di valutazione. L'esperienza di creazione è identica alla definizione di un output di flusso standard.

Screenshot della sezione output che mostra un nome e un valore.

È possibile visualizzare i singoli punteggi nella scheda Output quando si seleziona Visualizza output, come si controllano gli output di un'esecuzione batch di flusso standard. È possibile aggiungere questi punteggi a livello di istanza all'output del flusso testato.

Registrazione di aggregazioni e metriche

Il flusso di valutazione fornisce anche una valutazione complessiva per l'esecuzione. Per distinguere i risultati complessivi dai singoli punteggi di output, questi valori complessivi delle prestazioni di esecuzione sono denominati metriche.

Per calcolare un valore di valutazione complessivo in base ai singoli punteggi, selezionare la casella di controllo Aggregazione in un nodo Python in un flusso di valutazione per trasformarlo in un nodo di riduzione . Il nodo accetta quindi gli input come elenco e li elabora come batch.

Screenshot dell'intestazione del nodo Python con la casella di controllo Aggregazione selezionata.

Usando l'aggregazione, è possibile calcolare ed elaborare tutti i punteggi di ogni output del flusso e calcolare un risultato complessivo usando ogni punteggio. Ad esempio, per calcolare l'accuratezza di un flusso di classificazione, è possibile calcolare l'accuratezza di ogni output del punteggio e quindi calcolare l'accuratezza media di tutti gli output del punteggio. È quindi possibile registrare l'accuratezza media come metrica usando promptflow_sdk.log_metric(). Le metriche devono essere numeriche, ad esempio float o int. La registrazione di metriche dei tipi di stringa non è supportata.

Il frammento di codice seguente è un esempio di calcolo dell'accuratezza complessiva calcolando la media del punteggio grades di accuratezza di tutti i punti dati. L'accuratezza complessiva viene registrata come metrica usando promptflow_sdk.log_metric().

from typing import List
from promptflow import tool, log_metric

@tool
def calculate_accuracy(grades: List[str]): # Receive a list of grades from a previous node
    # calculate accuracy
    accuracy = round((grades.count("Correct") / len(grades)), 2)
    log_metric("accuracy", accuracy)

    return accuracy

Poiché si chiama questa funzione nel nodo Python, non è necessario assegnarla altrove ed è possibile visualizzare le metriche in un secondo momento. Dopo aver usato questo metodo di valutazione in un'esecuzione batch, è possibile visualizzare la metrica che mostra le prestazioni complessive selezionando la scheda Metriche quando si visualizzano gli output.

Screenshot della scheda delle metriche che mostra le metriche registrate dalle metriche del log.

Sviluppare un flusso di valutazione

Per sviluppare un flusso di valutazione personalizzato, selezionare Crea nella pagina flusso di richiesta studio di Azure Machine Learning. Nella pagina Crea un nuovo flusso è possibile:

  • Selezionare Crea nella scheda Flusso di valutazione in Crea per tipo. Questa selezione fornisce un modello per lo sviluppo di un nuovo metodo di valutazione.

  • Selezionare Flusso di valutazione nella raccolta Esplora e selezionare uno dei flussi predefiniti disponibili. Selezionare Visualizza dettagli per ottenere un riepilogo di ogni flusso e selezionare Clona per aprire e personalizzare il flusso. La creazione guidata del flusso consente di modificare il flusso per uno scenario personalizzato.

Screenshot di modi diversi per creare un nuovo flusso di valutazione.

Calcolare i punteggi per ogni punto dati

I flussi di valutazione calcolano i punteggi e le metriche per i flussi eseguiti nei set di dati. Il primo passaggio dei flussi di valutazione consiste nel calcolare i punteggi per ogni singolo output di dati.

Nel flusso di valutazione dell'accuratezza della classificazione predefinita, ad esempio, l'oggetto grade che misura l'accuratezza di ogni output generato dal flusso nella verità di base corrispondente viene calcolato nel nodo Python di livello .

Se si usa il modello di flusso di valutazione, si calcola questo punteggio nel nodo Python line_process . È anche possibile sostituire il nodo python line_process con un nodo LLM (Large Language Model) per usare un LLM per calcolare il punteggio o usare più nodi per eseguire il calcolo.

Screenshot del nodo del processo linea nel modello.

Specificare gli output di questo nodo come output del flusso di valutazione, che indica che gli output sono i punteggi calcolati per ogni campione di dati. È anche possibile generare un motivo per ottenere altre informazioni ed è la stessa esperienza di definizione degli output in un flusso standard.

Calcolare e registrare le metriche

Il passaggio successivo della valutazione consiste nel calcolare le metriche complessive per valutare l'esecuzione. Le metriche vengono calcolate in un nodo Python con l'opzione Aggregazione selezionata. Questo nodo accetta i punteggi del nodo di calcolo precedente e li organizza in un elenco, quindi calcola i valori complessivi.

Se si usa il modello di valutazione, questo punteggio viene calcolato nel nodo di aggregazione . Il frammento di codice seguente mostra il modello per il nodo di aggregazione.


from typing import List
from promptflow import tool

@tool
def aggregate(processed_results: List[str]):
    """
    This tool aggregates the processed result of all lines and log metric.
    :param processed_results: List of the output of line_process node.
    """
    # Add your aggregation logic here
    aggregated_results = {}

    # Log metric
    # from promptflow import log_metric
    # log_metric(key="<my-metric-name>", value=aggregated_results["<my-metric-name>"])

    return aggregated_results

È possibile usare la logica di aggregazione personalizzata, ad esempio il calcolo della media del punteggio, della media o della deviazione standard.

Registrare le metriche usando la promptflow.log_metric() funzione . È possibile registrare più metriche in un singolo flusso di valutazione. Le metriche devono essere numeriche (float/int).

Usare i flussi di valutazione

Dopo aver creato il proprio flusso di valutazione e le metriche, è possibile usare il flusso per valutare le prestazioni di un flusso standard. Ad esempio, è possibile valutare un flusso QnA per testare le prestazioni in un set di dati di grandi dimensioni.

  1. In studio di Azure Machine Learning aprire il flusso da valutare e selezionare Valuta nella barra dei menu in alto.

    Screenshot del pulsante di valutazione.

  2. Nella procedura guidata Esecuzione e valutazione batch completare le impostazioni di base e Esecuzione batch per caricare il set di dati per il test e configurare il mapping di input. Per altre informazioni, vedere Inviare l'esecuzione batch e valutare un flusso.

  3. Nel passaggio Seleziona valutazione è possibile selezionare una o più valutazioni personalizzate o valutazioni predefinite da eseguire. La valutazione personalizzata elenca tutti i flussi di valutazione creati, clonati o personalizzati. I flussi di valutazione creati da altri utenti che lavorano sullo stesso progetto non vengono visualizzati in questa sezione.

    Screenshot della selezione per la valutazione personalizzata.

  4. Nella schermata Configura valutazione specificare le origini di tutti i dati di input necessari per il metodo di valutazione. Ad esempio, la colonna verità del terreno potrebbe provenire da un set di dati. Se il metodo di valutazione non richiede dati da un set di dati, non è necessario selezionare un set di dati o fare riferimento ad alcuna colonna del set di dati nella sezione mapping di input.

    Nella sezione Mapping di input di valutazione è possibile indicare le origini degli input necessari per la valutazione. Se l'origine dati proviene dall'output di esecuzione, impostare l'origine su ${run.outputs.[OutputName]}. Se i dati provengono dal set di dati di test, impostare l'origine su ${data.[ColumnName]}. Tutte le descrizioni impostate per gli input di dati vengono visualizzate qui. Per altre informazioni, vedere Inviare l'esecuzione batch e valutare un flusso.

    Screenshot del mapping di input di valutazione.

    Importante

    Se il flusso di valutazione ha un nodo LLM o richiede una connessione per utilizzare le credenziali o altre chiavi, è necessario immettere i dati di connessione nella sezione Connessione di questa schermata per poter usare il flusso di valutazione.

  5. Selezionare Rivedi e invia e quindi invia per eseguire il flusso di valutazione.

  6. Al termine del flusso di valutazione, è possibile visualizzare i punteggi a livello di istanza selezionando Visualizza esecuzioni>batch Visualizza output di esecuzione batch più recenti nella parte superiore del flusso valutato. Selezionare l'esecuzione della valutazione dall'elenco a discesa Aggiungi risultati correlati per visualizzare il grado per ogni riga di dati.

    Screenshot della scheda di output con il risultato della valutazione accodato ed evidenziato.