Utilice la fmeval biblioteca para ejecutar una evaluación automática - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice la fmeval biblioteca para ejecutar una evaluación automática

El uso de la fmeval biblioteca en su propio código le brinda la mayor flexibilidad para personalizar su flujo de trabajo. Puede usar la fmeval biblioteca para evaluar cualquier LLM conjunto de datos y también para tener más flexibilidad con sus conjuntos de datos de entrada personalizados. Los siguientes pasos le muestran cómo configurar su entorno y cómo ejecutar un flujo de trabajo inicial y uno personalizado utilizando la fmeval biblioteca.

Comience a utilizar la fmeval biblioteca

Puede configurar la evaluación del modelo básico y personalizarla para su caso de uso en un bloc de notas de Studio. La configuración depende tanto del tipo de tarea para la que se creó el modelo base como de la forma en que desee evaluarla. FMEvaladmite tareas abiertas de generación, resumen de textos, respuesta a preguntas y clasificación. Los pasos de esta sección muestran cómo configurar un flujo de trabajo inicial. Este flujo de trabajo inicial incluye la configuración del entorno y la ejecución de un algoritmo de evaluación mediante un modelo básico de Amazon Bedrock JumpStart o uno con conjuntos de datos integrados. Si debe utilizar un flujo de trabajo y un conjunto de datos de entrada personalizados para un caso de uso más específico, consulte. Personalice su flujo de trabajo mediante la biblioteca fmeval

Si no quieres realizar una evaluación del modelo en un cuaderno de Studio, continúa con el paso 11 de la siguiente sección Cómo empezar a usar Studio.

Requisitos previos
  • Para ejecutar una evaluación de un modelo en una interfaz de usuario de Studio, tu rol AWS Identity and Access Management (IAM) y cualquier conjunto de datos de entrada deben tener los permisos correctos. Si no tiene un SageMaker dominio o un IAM rol, siga los pasos que se indican. Guía para configurar Amazon SageMaker

Para configurar los permisos de su bucket de Amazon S3

Una vez creados el dominio y el rol, siga los siguientes pasos para añadir los permisos necesarios para evaluar su modelo.

  1. Abre la SageMaker consola de Amazon en https://console.aws.amazon.com/sagemaker/.

  2. En el panel de navegación, S3 ingresa a la barra de búsqueda en la parte superior de la página.

  3. Elija S3 en Servicios.

  4. Seleccione Buckets en el panel de navegación.

  5. En la sección Depósitos de uso general, en Nombre, elija el nombre del depósito S3 que desee usar para almacenar la entrada y la salida del modelo en la consola. Si no tiene un bucket de S3, haga lo siguiente:

    1. Seleccione Crear depósito para abrir una nueva página de creación de depósito.

    2. En la sección Configuración general, en AWS Región, seleccione la AWS región en la que se encuentra el modelo de cimentación.

    3. Asigne un nombre a su depósito de S3 en el cuadro de entrada situado debajo del nombre del depósito.

    4. Acepte todas las opciones predeterminadas.

    5. Selecciona Crear depósito.

    6. En la sección Depósitos de uso general, en Nombre, selecciona el nombre del depósito de S3 que has creado.

  6. Elija la pestaña Permisos.

  7. Desplázate hasta la sección Uso compartido de recursos entre orígenes (CORS) en la parte inferior de la ventana. Elija Editar.

  8. Para añadir permisos a tu depósito para las evaluaciones de fundaciones, asegúrate de que aparezca el siguiente código en el cuadro de entrada. También puedes copiar y pegar lo siguiente en el cuadro de entrada.

    [ { "AllowedHeaders": [ "*" ], "AllowedMethods": [ "GET", "PUT", "POST", "DELETE" ], "AllowedOrigins": [ "*" ], "ExposeHeaders": [ "Access-Control-Allow-Origin" ] } ]
  9. Elija Guardar cambios.

Para añadir permisos a tu IAM política
  1. En la barra de búsqueda de la parte superior de la página, ingresaIAM.

  2. En Servicios, seleccione Identity and Access Management (IAM).

  3. Elija Políticas en el panel de navegación.

  4. AmazonSageMakerFullAccessIntroduce en la barra de búsqueda. Seleccione el botón de radio situado junto a la política que aparece. Ahora se puede seleccionar el botón Acciones.

  5. Selecciona la flecha hacia abajo situada junto a Acciones. Aparecen dos opciones.

  6. Elija Adjuntar.

  7. En la IAM lista que aparece, busca el nombre del rol que has creado. Seleccione la casilla de verificación situada junto al nombre.

  8. Elija Asociar política.

Comience a usar Studio
  1. En la barra de búsqueda de la parte superior de la página, escribeSageMaker.

  2. En Servicios, selecciona Amazon SageMaker.

  3. Selecciona Studio en el panel de navegación.

  4. Elige tu dominio en la sección Cómo empezar, después de expandir la flecha hacia abajo situada debajo de Seleccionar dominio.

  5. Elige tu perfil de usuario en la sección Cómo empezar después de expandir la flecha hacia abajo situada debajo de Seleccionar perfil de usuario.

  6. Selecciona Open Studio para abrir la página de inicio de Studio.

  7. Seleccione el explorador de archivos en el panel de navegación y navegue hasta el directorio raíz.

  8. Seleccione Crear bloc de notas.

  9. En el cuadro de diálogo del entorno del bloc de notas que se abre, seleccione la imagen de Data Science 3.0.

  10. Elija Seleccionar.

  11. Instale el fmeval paquete en su entorno de desarrollo, como se muestra en el siguiente ejemplo de código:

    !pip install fmeval
    nota

    Instale la fmeval biblioteca en un entorno que utilice Python 3.10. Para obtener más información sobre los requisitos necesarios para la ejecuciónfmeval, consulte fmevallas dependencias.

FMEvalutiliza un contenedor de alto nivel llamado ModelRunner para componer la entrada, invocar y extraer la salida del modelo. El fmeval paquete puede evaluar cualquieraLLM, sin embargo, el procedimiento a configurar ModelRunner depende del tipo de modelo que desee evaluar. En esta sección se explica cómo configurar ModelRunner un modelo JumpStart o Amazon Bedrock. Si desea utilizar un conjunto de datos de entrada personalizado y personalizadoModelRunner, consultePersonalice su flujo de trabajo mediante la biblioteca fmeval.

Utilice un JumpStart modelo

Para usarlo ModelRunner para evaluar un JumpStart modelo, crear o proporcionar un punto final, defina el modelo y el conjunto de datos integrado, configúrelo y pruébeloModelRunner.

Defina un JumpStart modelo y configure un ModelRunner
  1. Proporcione un punto final mediante una de las siguientes acciones:

    • Especifique EndpointNameel JumpStart punto final existentemodel_id, el ymodel_version.

    • Especifique el punto final model_id y model_version para su modelo y cree un JumpStart punto final.

    El siguiente ejemplo de código muestra cómo crear un punto final para un Llama 2 foundation modelque está disponible a través de JumpStart.

    import sagemaker from sagemaker.jumpstart.model import JumpStartModel #JumpStart model and version model_id, model_version = "meta-textgeneration-llama-2-7b-f", "*" my_model = JumpStartModel(model_id=model_id) predictor = my_model.deploy() endpoint_name = predictor.endpoint_name # Accept the EULA, and test the endpoint to make sure it can predict. predictor.predict({"inputs": [[{"role":"user", "content": "Hello how are you?"}]]}, custom_attributes='accept_eula=true')

    El ejemplo de código anterior hace referencia aEULA, que significa end-use-license-agreement (EULA). EULASe puede encontrar en la descripción de la tarjeta de modelo del modelo que está utilizando. Para utilizar algunos JumpStart modelos, debe especificarlosaccept_eula=true, como se muestra en la llamada anteriorpredict. Para obtener más información al respectoEULA, consulte la sección Licencias y fuentes de modelos enFuentes modelo y acuerdos de licencia.

    Puede encontrar una lista de los JumpStart modelos disponibles en la tabla de algoritmos integrados con modelos previamente entrenados.

  2. Configure ModelRunner mediante elJumpStartModelRunner, tal y como se muestra en el siguiente ejemplo de configuración:

    from fmeval.model_runners.sm_jumpstart_model_runner import JumpStartModelRunner js_model_runner = JumpStartModelRunner( endpoint_name=endpoint_name, model_id=model_id, model_version=model_version )

    En el ejemplo de configuración anterior, utilice los mismos valores para endpoint_namemodel_id, y model_version que utilizó para crear el punto final.

  3. Pon a prueba tuModelRunner. Envíe una solicitud de muestra a su modelo como se muestra en el siguiente ejemplo de código:

    js_model_runner.predict("What is the capital of London")

Usa un modelo de Amazon Bedrock

Para evaluar un modelo de Amazon Bedrock, debe definir el modelo y el conjunto de datos integrado, y ModelRunner configurarlo.

Defina un modelo de Amazon Bedrock y configure un ModelRunner
  1. Para definir e imprimir los detalles del modelo, utilice el siguiente ejemplo de código para un modelo Titan que está disponible en Amazon Bedrock:

    import boto3 import json bedrock = boto3.client(service_name='bedrock') bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = "amazon.titan-tg1-large" accept = "application/json" content_type = "application/json" print(bedrock.get_foundation_model(modelIdentifier=modelId).get('modelDetails'))

    En el ejemplo de código anterior, el accept parámetro especifica el formato de los datos que desea utilizar para evaluar suLLM. contentTypeEspecifica el formato de los datos de entrada de la solicitud. Solo MIME_TYPE_JSON es compatible con accept y contentType para los modelos Amazon Bedrock. Para obtener más información sobre estos parámetros, consulte InvokeModelWithResponseStream.

  2. Para configurarlosModelRunner, utilice elBedrockModelRunner, como se muestra en el siguiente ejemplo de configuración:

    from fmeval.model_runners.bedrock_model_runner import BedrockModelRunner bedrock_model_runner = BedrockModelRunner( model_id=model_id, output='results[0].outputText', content_template='{"inputText": $prompt, "textGenerationConfig": \ {"maxTokenCount": 4096, "stopSequences": [], "temperature": 1.0, "topP": 1.0}}', )

    Parametrice la ModelRunner configuración de la siguiente manera.

    • Utilice los mismos valores model_id que utilizó para implementar el modelo.

    • Se utiliza output para especificar el formato de la json respuesta generada. Por ejemplo, si has LLM proporcionado la respuesta[{"results": "this is the output"}], output='results[0].outputText' vuelvethis is the output.

    • Se usa content_template para especificar cómo LLM interactúa con las solicitudes. La siguiente plantilla de configuración se detalla únicamente para explicar el ejemplo de configuración anterior y no es obligatoria.

      • En el ejemplo de configuración anterior, la variable inputText especifica la solicitud, que captura la solicitud realizada por el usuario.

      • La variable textGenerationConfig especifica cómo LLM genera las respuestas de la siguiente manera:

        • El parámetro maxTokenCount se usa para limitar la longitud de la respuesta al limitar el número de fichas devueltas por elLLM.

        • El parámetro stopSequences se usa para especificar una lista de secuencias de caracteres que le indican LLM que deje de generar una respuesta. La salida del modelo se detiene la primera vez que se encuentra alguna de las cadenas de la lista en la salida. Por ejemplo, puede utilizar una secuencia de retorno de vagones para limitar la respuesta del modelo a una sola línea.

        • El parámetro topP controla la aleatoriedad al limitar el conjunto de fichas que se deben tener en cuenta al generar la siguiente ficha. Este parámetro acepta valores comprendidos entre 0.0 y. 1.0 Los valores más altos topP permiten un conjunto que contenga un vocabulario más amplio y los valores más bajos restringen el conjunto de símbolos a palabras más probables.

        • El parámetro temperature controla la aleatoriedad del texto generado y acepta valores positivos. Los valores más altos temperature indican al modelo que genere respuestas más aleatorias y diversas. Los valores más bajos generan respuestas más predecibles. Los rangos típicos temperature se encuentran entre 0.2 y2.0.

        Para obtener más información sobre los parámetros de un modelo de cimentación específico de Amazon Bedrock, consulte Parámetros de inferencia para modelos de cimentación.

      El formato del parámetro content_template depende de las entradas y los parámetros que admita. LLM Por ejemplo, .Anthropic’s Claude 2 el modelo puede admitir lo siguiente: content_template

      "content_template": "{\"prompt\": $prompt, \"max_tokens_to_sample\": 500}"

      Como otro ejemplo, el modelo Falcon 7b puede admitir lo siguiente. content_template

      "content_template": "{\"inputs\": $prompt, \"parameters\":{\"max_new_tokens\": \ 10, \"top_p\": 0.9, \"temperature\": 0.8}}"

      Por último, pruebe su. ModelRunner Envía una solicitud de muestra a tu modelo como se muestra en el siguiente ejemplo de código:

      bedrock_model_runner.predict("What is the capital of London?")

Después de configurar sus datosModelRunner, puede ejecutar un algoritmo de evaluación con las respuestas generadas por susLLM. Para ver una lista de todos los algoritmos de evaluación disponibles, ejecuta el siguiente código:

from fmeval.eval_algo_mapping import EVAL_ALGORITHMS print(EVAL_ALGORITHMS.keys())

Cada algoritmo tiene una evaluación y un evaluate_sample método. El evaluate método calcula una puntuación para todo el conjunto de datos. El evaluate_sample método evalúa la puntuación de una sola instancia.

El evaluate_sample método devuelve EvalScore objetos. EvalScorelos objetos contienen puntuaciones agregadas que indican el rendimiento del modelo durante la evaluación. El evaluate_sample método tiene los siguientes parámetros opcionales:

  • model_output— La respuesta modelo para una sola solicitud.

  • model_input— Un mensaje que contiene la solicitud a su modelo.

  • target_output— La respuesta esperada del mensaje contenido enmodel_input.

En el siguiente ejemplo de código se muestra cómo utilizarevaluate_sample:

#Evaluate your custom sample model_output = model_runner.predict("London is the capital of?")[0] eval_algo.evaluate_sample(target_output="UK<OR>England<OR>United Kingdom", model_output=model_output)

El evaluate método tiene los siguientes parámetros opcionales:

  • model— Un ejemplo del ModelRunner uso del modelo que se quiere evaluar.

  • dataset_config— La configuración del conjunto de datos. Si no dataset_config se proporciona, el modelo se evalúa con todos los conjuntos de datos integrados que están configurados para esta tarea.

  • prompt_template— Una plantilla que se utiliza para generar solicitudes. Si no prompt_template se proporciona, el modelo se evalúa mediante una plantilla de solicitud predeterminada.

  • save— Si se establece enTrue, las respuestas y puntuaciones de las solicitudes registrales se guardan en el archivo. EvalAlgorithmInterface.EVAL_RESULTS_PATH El valor predeterminado es False.

  • num_records— El número de registros que se muestrean aleatoriamente del conjunto de datos de entrada para su evaluación. El valor predeterminado es 300.

El evaluate algoritmo devuelve una lista de EvalOutput objetos que puede incluir lo siguiente:

  • eval_name— El nombre del algoritmo de evaluación.

    dataset_name— El nombre del conjunto de datos utilizado por el algoritmo de evaluación.

    prompt_template— Una plantilla utilizada para redactar mensajes que se consume si el parámetro no model_output se proporciona en el conjunto de datos. Para obtener más información, consulte prompt_template la JumpStart ModelRunnersección Configurar una.

    dataset_scores— Una puntuación agregada calculada en todo el conjunto de datos.

    category_scores— Una lista de CategoryScore objetos que contienen las puntuaciones de cada categoría del conjunto de datos.

    output_path— La ruta local al resultado de la evaluación. Este resultado contiene respuestas rápidas con puntajes de evaluación sin precedentes.

    error— Un mensaje de error de cadena para un trabajo de evaluación fallido.

Están disponibles las siguientes dimensiones para la evaluación del modelo:

  • Precisión

  • Conocimiento fáctico

  • Estereotipos rápidos

  • Robustez semántica

  • Toxicidad

Precisión

Puede ejecutar un algoritmo de precisión para una tarea de respuesta a preguntas, resumen de texto o clasificación. Los algoritmos son diferentes para cada tarea a fin de adaptarse a los diferentes tipos de entrada de datos y problemas de la siguiente manera:

  • Para las tareas de respuesta a preguntas, ejecute el QAAccuracy algoritmo con un QAAccuracyConfig archivo.

  • Para las tareas de resumen de texto, ejecute el SummarizationAccuracy algoritmo con unSummarizationAccuracyConfig.

  • Para las tareas de clasificación, ejecute el ClassificationAccuracy algoritmo con unClassificationAccuracyConfig.

El QAAccuracy algoritmo devuelve una lista de EvalOutput objetos que contiene una puntuación de precisión para cada muestra. Para ejecutar el algoritmo de precisión de las preguntas y respuestas, cree una instancia de a QAAccuracygeConfig y pase una <OR> o None como la. target_output_delimiter El algoritmo de precisión de preguntas-respuesta compara la respuesta que genera el modelo con una respuesta conocida. Si se utiliza <OR> como delimitador objetivo, el algoritmo califica la respuesta como correcta si genera parte del contenido separado por <OR> la respuesta. Si pasas None una cadena vacía comotarget_output_delimiter, el código arroja un error.

Llama al evaluate método y pasa los parámetros que desees, tal y como se muestra en el siguiente ejemplo de código:

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.qa_accuracy import QAAccuracy, QAAccuracyConfig eval_algo = QAAccuracy(QAAccuracyConfig(target_output_delimiter="<OR>"))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

El SummarizationAccuracy algoritmo devuelve una lista de EvalOutput objetos que contienen puntuaciones para ROUGE-N, Meteor, y BERTScore. Para obtener más información sobre estas puntuaciones, consulte la sección de resumen de textos enUso de conjuntos de datos rápidos y dimensiones de evaluación disponibles en los trabajos de evaluación de modelos . Para ejecutar el algoritmo de precisión del resumen de texto, cree una instancia de a SummarizationAccuracyConfig y pase lo siguiente:

  • Especifique el tipo de ROUGEmétrica para la que desea utilizar en la evaluaciónrouge_type. Puede elegir rouge1, rouge2, o rougeL. Estas métricas comparan los resúmenes generados con los resúmenes de referencia. ROUGE-1 compara los resúmenes generados y los resúmenes de referencia mediante unigramas superpuestos (secuencias de un elemento, como «el» o «es»). ROUGE-2 compara los resúmenes generados y los de referencia mediante bigramas (grupos de dos secuencias, como «lo grande» o «es el hogar»). ROUGE-L compara la secuencia de palabras coincidente más larga. Para obtener más información acerca de ROUGE, consulte ROUGE: A Package for Automatic Evaluation of Resúmenes.

  • Establezca use_stemmer_for_rouge en True o False. Un rastreador elimina los afijos de las palabras antes de compararlos. Por ejemplo, una rastrilladora elimina los afijos de «nadar» y «nadar» para que ambos sean «nadar» después de la derivación.

  • Defina model_type_for_bertscore en el modelo que desee usar para calcular un BERTScore. Puede elegir ROBERTA_ MODEL o la más avanzada MICROSOFT_ DEBERTA _ MODEL.

Por último, llama al evaluate método y pasa los parámetros que desees, tal y como se muestra en el siguiente ejemplo de código:

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy import SummarizationAccuracy, SummarizationAccuracyConfig eval_algo = SummarizationAccuracy(SummarizationAccuracyConfig(rouge_type="rouge1",model_type_for_bertscore="MICROSOFT_DEBERTA_MODEL")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

El ClassificationAccuracy algoritmo devuelve una lista de EvalOutput objetos que contiene las puntuaciones de precisión, recuperación y precisión equilibrada de la clasificación de cada muestra. Para obtener más información sobre estas puntuaciones, consulte la sección Clasificación enUso de conjuntos de datos rápidos y dimensiones de evaluación disponibles en los trabajos de evaluación de modelos . Para ejecutar el algoritmo de precisión de la clasificación, cree una instancia de a ClassificationAccuracyConfig y pase una estrategia de promedios a. multiclass_average_strategy Puede elegirmicro,, macrosamples, weighted o. binary El valor predeterminado es micro. A continuación, pasa a valid_labels una lista con los nombres de las columnas que contienen las etiquetas verdaderas de tus categorías de clasificación. Por último, llama al evaluate método e introduce los parámetros que desees, tal y como se muestra en el siguiente ejemplo de código:

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.classification_accuracy import ClassificationAccuracy, ClassificationAccuracyConfig eval_algo = ClassificationAccuracy(ClassificationAccuracyConfig(multiclass_average_strategy="samples",valid_labels=["animal_type","plant_type","fungi_type"])) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

Conocimiento fáctico

Puede ejecutar el algoritmo de conocimiento fáctico para una generación abierta. Para ejecutar el algoritmo de conocimiento fáctico, cree una instancia FactualKnowledgeConfig y, si lo desea, pase una cadena delimitadora (de forma predeterminada, esta es). <OR> El algoritmo de conocimiento fáctico compara la respuesta que genera el modelo con una respuesta conocida. El algoritmo califica la respuesta como correcta si genera parte del contenido separado por el delimitador de la respuesta. Si se aprueba None eltarget_output_delimiter, el modelo debe generar la misma respuesta que la respuesta para que se califique como correcta. Por último, llama al evaluate método e introduce los parámetros que desees.

El conocimiento fáctico devuelve una lista de EvalScore objetos. Contienen puntuaciones agregadas sobre la capacidad de su modelo para codificar el conocimiento fáctico, tal y como se describe en la sección de descripción general de la evaluación del modelo básico. Las puntuaciones oscilan entre 0 y1, siendo la puntuación más baja la que corresponde a un menor conocimiento de los hechos del mundo real.

El siguiente ejemplo de código muestra cómo evaluar su LLM uso del algoritmo de conocimiento fáctico:

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.factual_knowledge import FactualKnowledge, FactualKnowledgeConfig eval_algo = FactualKnowledge(FactualKnowledgeConfig()) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

Estereotipos rápidos

Puede ejecutar el algoritmo de estereotipado rápido para una generación abierta. Para ejecutar el algoritmo de creación rápida de estereotipos, DataConfig debe identificar las columnas del conjunto de datos de entrada que contienen una oración menos estereotipada sent_less_input_location y otra más estereotipada dentro. sent_more_output_location Para obtener más información al respectoDataConfig, consulta la sección 2 anterior. Configure (Configuración)ModelRunner. A continuación, llame al evaluate método e introduzca los parámetros que desee.

Los estereotipos rápidos devuelven una lista de EvalOutput objetos que contienen una puntuación para cada registro de entrada y puntuaciones generales para cada tipo de sesgo. Las puntuaciones se calculan comparando la probabilidad de las oraciones más y menos estereotipadas. La puntuación general indica la frecuencia con la que el modelo prefirió la oración estereotipada, ya que el modelo asigna una mayor probabilidad a la oración más estereotipada en comparación con la menos estereotipada. Una puntuación de 0 0.5 indica que su modelo es imparcial o que prefiere más y menos oraciones estereotipadas a tasas iguales. Una puntuación superior a 1 0.5 indica que es probable que el modelo genere una respuesta más estereotipada. Las puntuaciones inferiores a 0.5 1 indican que es probable que el modelo genere una respuesta menos estereotipada.

El siguiente ejemplo de código muestra cómo evaluarlo LLM mediante el algoritmo de estereotipado rápido:

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.prompt_stereotyping import PromptStereotyping eval_algo = PromptStereotyping() eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

Robustez semántica

Puede ejecutar un algoritmo de solidez semántica para cualquier FMEval tarea, sin embargo, su modelo debe ser determinista. Un modelo determinista es aquel que siempre genera la misma salida para la misma entrada. Por lo general, se puede lograr el determinismo estableciendo una semilla aleatoria en el proceso de decodificación. Los algoritmos son diferentes para cada tarea a fin de adaptarse a los diferentes tipos y problemas de entrada de datos de la siguiente manera:

  • Para la generación abierta, la respuesta a preguntas o la clasificación de tareas, ejecute el GeneralSemanticRobustness algoritmo con un GeneralSemanticRobustnessConfig archivo.

  • Para resumir el texto, ejecute el SummarizationAccuracySemanticRobustness algoritmo con un SummarizationAccuracySemanticRobustnessConfig archivo.

El GeneralSemanticRobustness algoritmo devuelve una lista de EvalScore objetos con precisión, con valores comprendidos entre las salidas del modelo perturbadas 0 e imperturbables, que 1 cuantifican la diferencia entre ellas. Para ejecutar el algoritmo de robustez semántica general, cree una instancia de a y pase a. GeneralSemanticRobustnessConfig perturbation_type Puede elegir una de las siguientes opciones para: perturbation_type

  • Butterfinger— Una perturbación que imita los errores ortográficos mediante el intercambio de caracteres en función de la distancia del teclado. Introduzca la probabilidad de que un carácter determinado se altere. Butterfinger es el valor predeterminado de. perturbation_type

  • RandomUpperCase— Una perturbación que cambia una fracción de caracteres a mayúsculas. Introduzca un decimal de a0. 1

  • WhitespaceAddRemove— La probabilidad de que se añada un carácter de espacio en blanco delante de un carácter que no sea de espacio en blanco y se convierta en blanco.

También puede especificar los siguientes parámetros:

  • num_perturbations— El número de perturbaciones que debe introducir cada muestra en el texto generado. El valor predeterminado es 5.

  • butter_finger_perturbation_prob— La probabilidad de que un personaje se vea perturbado. Solo se usa cuando perturbation_type es Butterfinger. El valor predeterminado es 0.1.

  • random_uppercase_corrupt_proportion— La fracción de caracteres que se va a cambiar a mayúsculas. Solo se usa cuando perturbation_type es RandomUpperCase. El valor predeterminado es 0.1.

  • whitespace_add_prob— Dado un espacio en blanco, la probabilidad de eliminarlo de una muestra. Solo se usa cuando perturbation_type es WhitespaceAddRemove. El valor predeterminado es 0.05.

  • whitespace_remove_prob— Dado un espacio que no es blanco, la probabilidad de añadir un espacio en blanco delante de él. Solo se usa cuando perturbation_type es WhitespaceAddRemove. El valor predeterminado es 0.1.

Por último, llama al evaluate método y pasa los parámetros que desees, tal y como se muestra en el siguiente ejemplo de código:

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.general_semantic_robustness import GeneralSemanticRobustness, GeneralSemanticRobustnessConfig eval_algo = GeneralSemanticRobustness(GeneralSemanticRobustnessConfig(perturbation_type="RandomUpperCase",num_perturbations=2,random_uppercase_corrupt_proportion=0.3))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

El SummarizationAccuracySemanticRobustness algoritmo devuelve una lista de EvalScore objetos que contienen la diferencia (o delta) entre ROUGE-N, Meteor, y BERTScorevalores entre los resúmenes generados y los de referencia. Para obtener más información sobre estas puntuaciones, consulte la sección de resumen de textos en. Uso de conjuntos de datos rápidos y dimensiones de evaluación disponibles en los trabajos de evaluación de modelos Para ejecutar el algoritmo de solidez semántica del resumen de texto, cree una instancia de a y pase a. SummarizationAccuracySemanticRobustnessConfig perturbation_type

Puede elegir una de las siguientes opciones para: perturbation_type

  • Butterfinger— Una perturbación que imita los errores ortográficos mediante el intercambio de caracteres en función de la distancia del teclado. Introduzca la probabilidad de que un carácter determinado se altere. Butterfingeres el valor por defecto deperturbation_type.

  • RandomUpperCase— Una perturbación que cambia una fracción de caracteres a mayúsculas. Introduzca un decimal de a0. 1

  • WhitespaceAddRemove— Introduzca la probabilidad de que se añada un carácter de espacio en blanco delante de un carácter que no sea de espacio en blanco y pase a blanco.

También puede especificar los siguientes parámetros:

  • num_perturbations— El número de perturbaciones que debe introducir cada muestra en el texto generado. El valor predeterminado es 5.

  • butter_finger_perturbation_prob— La probabilidad de que un personaje se vea perturbado. Solo se usa cuando perturbation_type es Butterfinger. El valor predeterminado es 0.1.

  • random_uppercase_corrupt_proportion— La fracción de caracteres que se va a cambiar a mayúsculas. Solo se usa cuando perturbation_type es RandomUpperCase. El valor predeterminado es 0.1.

  • whitespace_add_prob— Dado un espacio en blanco, la probabilidad de eliminarlo de una muestra. Solo se usa cuando perturbation_type es WhitespaceAddRemove. El valor predeterminado es 0.05.

  • whitespace_remove_prob— Dado un espacio que no es blanco, la probabilidad de añadir un espacio en blanco delante de él. Se usa solo cuando perturbation_type esWhitespaceAddRemove, el valor predeterminado es0.1.

  • rouge_type— Métricas que comparan los resúmenes generados con los resúmenes de referencia. Especifique el tipo de ROUGEmétrica para la que desea utilizar en la evaluaciónrouge_type. Puede elegir rouge1, rouge2, o rougeL. ROUGE-1 compara los resúmenes generados y los resúmenes de referencia mediante unigramas superpuestos (secuencias de un elemento como «el» o «es»). ROUGE-2 compara los resúmenes generados y los de referencia mediante bigramas (grupos de dos secuencias, como «lo grande» o «es el hogar»). ROUGE-L compara la secuencia de palabras coincidente más larga. Para obtener más información acerca de ROUGE, consulte ROUGE: A Package for Automatic Evaluation of Resúmenes.

  • Establezca user_stemmer_for_rouge en True o False. Un rastreador elimina los afijos de las palabras antes de compararlos. Por ejemplo, una rastrilladora elimina los afijos de «nadar» y «nadar» para que ambos sean «nadar» después de la derivación.

  • model_type_for_bertscoreDefina el modelo que desee utilizar para calcular un BERTScore. Puede elegir ROBERTA_ MODEL o la más avanzada MICROSOFT_ DEBERTA _ MODEL.

    Llama al evaluate método e introduce los parámetros que desees, tal y como se muestra en el siguiente ejemplo de código:

    from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.summarization_accuracy_semantic_robustness import SummarizationAccuracySemanticRobustness, SummarizationAccuracySemanticRobustnessConfig eval_algo = SummarizationAccuracySemanticRobustness(SummarizationAccuracySemanticRobustnessConfig(perturbation_type="Butterfinger",num_perturbations=3,butter_finger_perturbation_prob=0.2))) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)

Toxicidad

Puede ejecutar un algoritmo de toxicidad para la generación abierta, el resumen del texto o la respuesta a preguntas. Hay tres clases distintas según la tarea.

  • Para una generación abierta, ejecute el algoritmo de toxicidad con un ToxicityConfig archivo.

  • Para resumir, utilice la clase. Summarization_Toxicity

  • Para responder preguntas, utilice la claseQAToxicity.

El algoritmo de toxicidad devuelve una o más listas de EvalScore objetos (según el detector de toxicidad) que contienen puntuaciones comprendidas entre 0 y1. Para ejecutar el algoritmo de toxicidad, cree una instancia de un modelo de toxicidad ToxicityConfig y pase un modelo de toxicidad para usarlo como comparación con el modelo. model_type Puede elegir lo siguiente para: model_type

Por último, llama al evaluate método e introduce los parámetros que desees, tal y como se muestra en el siguiente ejemplo de código.

from fmeval.eval import get_eval_algorithm from fmeval.eval_algorithms.toxicity import Toxicity, ToxicityConfig eval_algo = Toxicity(ToxicityConfig(model_type="detoxify")) eval_output = eval_algo.evaluate(model=model_runner, dataset_config=config, prompt_template="$feature", save=True)