0 / 0
Retourner à la version anglaise de la documentation
Envoi de transactions de modèle
Dernière mise à jour : 05 déc. 2024
Envoi de transactions de modèle

Si vous évaluez des modèles d'apprentissage automatique ou des actifs d'IA générative, vous devez envoyer des transactions de modèle à partir de votre déploiement pour permettre les évaluations de modèle.

Pour générer en permanence des résultats précis pour les évaluations de vos modèles, vous devez continuer à envoyer de nouvelles données à partir de votre déploiement.

Les sections suivantes décrivent les différentes méthodes que vous pouvez utiliser pour envoyer des transactions pour les évaluations de modèle:

Envoi de transactions de modèle

Importation de données

Lorsque vous examinez les résultats d'une évaluation sur le tableau de bord Insights, vous pouvez utiliser le menu Actions pour importer des données de charge utile et de retour d'information pour vos évaluations de modèles.

Pour les modèles de préproduction, vous pouvez importer des données en téléchargeant des fichiers CSV ou en vous connectant à des données stockées dans Cloud Object Storage ou dans une base de données Db2 .

importer des données de test en préproduction

Si vous souhaitez télécharger des données déjà évaluées, vous pouvez cocher la case Test data includes model output . Cloud Object Storage ne réutilise pas les données de test lorsque vous sélectionnez cette option. Les données que vous importez peuvent également inclure des colonnes record_id/transaction_id et record_timestamp qui sont ajoutées aux tables de journalisation de contenu utile et de commentaires lorsque cette option est sélectionnée.

Pour les modèles de production, vous pouvez importer des données en téléchargeant des fichiers CSV ou en utilisant des noeuds finaux pour envoyer vos transactions de modèle.

importer des données de test en production

Utilisation des points d'extrémité

Pour les modèles de production, des points de terminaison sont pris en charge et peuvent être utilisés pour fournir des données dans des formats permettant les évaluations. Vous pouvez utiliser le noeud final de journalisation du contenu utile pour envoyer des demandes d'évaluation pour les évaluations d'équité et de dérive et utiliser le noeud final de journalisation des commentaires en retour pour fournir des données de retour pour les évaluations de qualité. Vous pouvez également télécharger des fichiers CSV afin de fournir des données pour les évaluations de modèle. Pour plus d'informations sur les formats de données, voir Gestion des données pour les évaluations de modèle.

Un point de terminaison pour les transactions débiaisées, que vous pouvez utiliser pour examiner les résultats des évaluations d'équité, est également pris en charge. Le noeud final des transactions débiaisées applique un débiaisement actif sur vos données de contenu pour détecter tout biais dans votre modèle. Pour plus d'informations sur le débiaisement actif, voir Examen des transactions débiaisées.

Menu de sélection des noeuds finaux

Vous pouvez utiliser les étapes suivantes pour envoyer des transactions de modèle pour vos évaluations de modèle avec des points de terminaison :

  1. Sur la page de configuration du moniteur, sélectionnez l'onglet Noeuds finaux .
  2. Si vous souhaitez télécharger des données de contenu avec un fichier CSV, cliquez sur Télécharger les données de contenu.
  3. Si vous souhaitez télécharger des données de retour avec un fichier CSV, cliquez sur Télécharger les données de retour.
  4. Dans le panneau Informations sur le modèle , cliquez sur Noeuds finaux.
  5. Dans le menu Noeud final , sélectionnez le type de noeud final à utiliser.
  6. Dans le menu Langue du code , choisissez le type de fragment de code que vous souhaitez utiliser.
  7. Cliquez sur Copier dans le presse-papiers 'L'icône Copier dans le presse-papiers s'affiche. pour copier l'extrait de code et exécuter le code dans votre bloc-notes ou votre application.

Enregistrement des données de charge utile avec Python

Lorsque vous sélectionnez le point de terminaison des données de charge utile dans le menu Points de terminaison de Watson OpenScale, vous pouvez utiliser l'extrait de code suivant pour vous montrer comment enregistrer vos données de charge utile :

from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson_openscale import APIClient

service_credentials = {
	"apikey": "$API_KEY",
	"url": "{$WOS_URL}"
}

authenticator = IAMAuthenticator(
	apikey=service_credentials["apikey"],
	url="https://iam.cloud.ibm.com/identity/token"
)
SERVICE_INSTANCE_ID = "{$WOS_SERVICE_INSTANCE_ID}"
wos_client = APIClient(authenticator=authenticator, service_instance_id=SERVICE_INSTANCE_ID, service_url=service_credentials["url"])

from ibm_watson_openscale.data_sets import DataSetTypes, TargetTypes

# Put your subscription ID here
SUBSCRIPTION_ID = "{$SUBSCRIPTION_ID}"
payload_logging_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING, target_target_id=SUBSCRIPTION_ID, target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id

from ibm_watson_openscale.supporting_classes.payload_record import PayloadRecord

# Put your data here
REQUEST_DATA = {
	"parameters": {
		"template_variables": {
			"{$TEMPLATE_VARIABLE_1}": "$TEMPLATE_VARIABLE_1_VALUE",
			"{$TEMPLATE_VARIABLE_2}": "$TEMPLATE_VARIABLE_2_VALUE"
		}
	},
	"project_id": "$PROJECT_ID"
}
RESPONSE_DATA = {
	"results": [
		{
			"generated_text": "$GENERATED_TEXT"
		}
	]
}
RESPONSE_TIME = $RESPONSE_TIME
wos_client.data_sets.store_records(data_set_id=payload_logging_data_set_id, request_body=[PayloadRecord(request=REQUEST_DATA, response=RESPONSE_DATA, response_time=RESPONSE_TIME)])

La valeur " "project_id": "$PROJECT_ID" indique que vous souhaitez enregistrer les données de charge utile pour les évaluations dans les projets. Pour enregistrer les données de la charge utile pour les évaluations dans les espaces, vous pouvez spécifier la valeur " "space_id": "$SPACE_ID" à la place. Vous pouvez utiliser l'onglet Gérer dans les projets et les espaces pour identifier l'ID du projet ou de l'espace pour votre modèle.

Enregistrement des données de retour d'information avec Python

Lorsque vous sélectionnez le point de terminaison des données de feedback dans le menu Endpoints de Watson OpenScale, vous pouvez utiliser l'extrait de code suivant pour vous montrer comment enregistrer vos données de feedback :

from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson_openscale import APIClient
from ibm_watson_openscale.supporting_classes.enums import DataSetTypes, TargetTypes

service_credentials = {
	"apikey": "$API_KEY",
	"url": "{$WOS_URL}"
}

authenticator = IAMAuthenticator(
	apikey=service_credentials["apikey"],
	url="https://iam.cloud.ibm.com/identity/token"
)

SERVICE_INSTANCE_ID = "{$WOS_SERVICE_INSTANCE_ID}"
wos_client = APIClient(authenticator=authenticator, service_instance_id=SERVICE_INSTANCE_ID, service_url=service_credentials["url"])
	
subscription_id = "{$SUBSCRIPTION_ID}"
feedback_dataset_id = wos_client.data_sets.list(type=DataSetTypes.FEEDBACK, target_target_id=subscription_id, target_target_type=TargetTypes.SUBSCRIPTION).result.data_sets[0].metadata.id
	
fields = [
	"{$TEMPLATE_VARIABLE_1}",
	"{$TEMPLATE_VARIABLE_2}",
	"{$LABEL_COLUMN}",
	"_original_prediction"
]
values = [
	[
		"$TEMPLATE_VARIABLE_1_VALUE",
		"$TEMPLATE_VARIABLE_2_VALUE",
		"$LABEL_COLUMN_VALUE",
		"$GENERATED_TEXT_VALUE"
	]
]
	
wos_client.data_sets.store_records(
	data_set_id=feedback_dataset_id,
	request_body=[{"fields": fields, "values": values}],
	background_mode=False
)

Envoi de transactions de modèle dans watsonx.governance

Importation de données dans watsonx.governance

Lorsque vous passez en revue les résultats d'évaluation dans watsonx.governance, vous pouvez importer des données en sélectionnant Evaluer maintenant dans le menu Actions pour importer le contenu et les données de retour pour vos évaluations de modèle.

Analyser les résultats de l'évaluation du modèle d'invite

Pour les modèles de préproduction, vous devez télécharger un fichier CSV qui contient des exemples de données d'entrée et de sortie. Pour exécuter des évaluations avec des données importées, vous devez mapper des variables d'invite aux colonnes associées dans votre fichier CSV et sélectionner Télécharger et évaluer comme illustré dans l'exemple suivant:

Transférer un fichier CSV

Pour les modèles de production, vous pouvez sélectionner Upload payload data ou Upload feedback data dans la fenêtre Import test data pour télécharger un fichier CSV, comme illustré dans l'exemple suivant:

Importer des données de test

Le fichier CSV doit contenir des colonnes libellées qui correspondent aux colonnes de vos schémas de contenu et de commentaires en retour. Une fois le téléchargement terminé, vous pouvez sélectionner Evaluer maintenant pour exécuter vos évaluations avec vos données importées.

Utilisation de noeuds finaux dans watsonx.governance

Pour les modèles de production, les points de terminaison que vous pouvez utiliser pour fournir des données dans des formats permettant les évaluations sont pris en charge. Vous pouvez utiliser le noeud final de journalisation de contenu utile pour envoyer des demandes d'évaluation pour les évaluations de dérive et utiliser le noeud final de journalisation des commentaires en retour pour fournir des données de retour pour les évaluations de qualité.

Vous pouvez utiliser des extraits de code pour enregistrer les demandes de notation avec les API ou vos carnets de notes.

Enregistrement des données de retour d'information avec cuRL

L'exemple suivant montre comment enregistrer des données de retour d'information avec des extraits de code cURL:


# Generate an IAM access token by passing an API key as $APIKEY in the request below
# See: https://cloud.ibm.com/docs/account?topic=account-iamtoken_from_apikey

curl -k -X POST --header "Content-Type: application/x-www-form-urlencoded" --header "Accept: application/json" --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" --data-urlencode "apikey=$APIKEY" "https://iam.cloud.ibm.com/identity/token"

# the above CURL request will return an auth token that you will use as $IAM_TOKEN in the requests below.

# retrieve the ID of the data set to store the feedback records
curl --location --request GET "${WOS_URL}/openscale/${WOS_SERVICE_INSTANCE_ID}/v2/data_sets?target.target_id=${SUBSCRIPTION_ID}&target.target_type=subscription&type=feedback" --header "Authorization: bearer $IAM_TOKEN" --header "Accept: application/json"

# the above request will return the ID of feedback records data set that you will use as $DATA_SET_ID in the request below. ID will be found at data_sets[0]['metadata']['id']

# TODO: manually define fields and list of values for feedback data

FEEDBACK_PAYLOAD = '[{
    "fields": [
        "${TEMPLATE_VARIABLE_1}",
        "${TEMPLATE_VARIABLE_2}",
        "${LABEL_COLUMN}",
        "_original_prediction"
    ],
	"values": [
		[
			"$TEMPLATE_VARIABLE_1_VALUE",
			"$TEMPLATE_VARIABLE_2_VALUE",
			"$LABEL_COLUMN_VALUE",
			"$GENERATED_TEXT_VALUE"
		]
	]
}]'

curl --location --request POST "${WOS_URL}/openscale/${WOS_SERVICE_INSTANCE_ID}/v2/data_sets/$DATA_SET_ID/records" -d "$FEEDBACK_PAYLOAD" --header "Authorization: bearer $IAM_TOKEN" --header "Accept: application/json" --header "Content-Type: application/json"

Enregistrement des données de retour d'information avec Python

L'exemple suivant montre comment enregistrer des données de retour d'information à l'aide d'extraits de code Python:

from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson_openscale import APIClient
from ibm_watson_openscale.supporting_classes.enums import DataSetTypes, TargetTypes

service_credentials = {
	"apikey": "$API_KEY",
	"url": "{$WOS_URL}"
}

authenticator = IAMAuthenticator(
	apikey=service_credentials["apikey"],
	url="https://iam.cloud.ibm.com/identity/token"
)

SERVICE_INSTANCE_ID = "{$WOS_SERVICE_INSTANCE_ID}"
wos_client = APIClient(authenticator=authenticator, service_instance_id=SERVICE_INSTANCE_ID, service_url=service_credentials["url"])
	
subscription_id = "{$SUBSCRIPTION_ID}"
PROJECT_ID = "{$PROJECT_ID}"
feedback_dataset_id = wos_client.data_sets.list(type=DataSetTypes.FEEDBACK, target_target_id=subscription_id, target_target_type=TargetTypes.SUBSCRIPTION, project_id=PROJECT_ID).result.data_sets[0].metadata.id
	
fields = [
	"{$TEMPLATE_VARIABLE_1}",
	"{$TEMPLATE_VARIABLE_2}",
	"{$LABEL_COLUMN}",
	"_original_prediction"
]
values = [
	[
		"$TEMPLATE_VARIABLE_1_VALUE",
		"$TEMPLATE_VARIABLE_2_VALUE",
		"$LABEL_COLUMN_VALUE",
		"$GENERATED_TEXT_VALUE"
	]
]
	
wos_client.data_sets.store_records(
	data_set_id=feedback_dataset_id,
	request_body=[{"fields": fields, "values": values}],
    project_id=PROJECT_ID
	background_mode=False
)

La valeur " project_id=PROJECT_ID indique que vous souhaitez enregistrer les données de retour d'information pour les évaluations dans les projets. Pour enregistrer les données de retour pour les évaluations dans les espaces, vous pouvez spécifier la valeur " space_id=SPACE_ID à la place. Vous pouvez utiliser l'onglet Gérer dans les projets et les espaces pour identifier l'ID du projet ou de l'espace pour votre modèle.

Enregistrement des données de la charge utile avec cURL

L'exemple suivant montre comment enregistrer les données de la charge utile à l'aide d'extraits de code cURL:

# Generate an IAM access token by passing an API key as $APIKEY in the request below
# See: https://cloud.ibm.com/docs/account?topic=account-iamtoken_from_apikey

curl -k -X POST \
--header "Content-Type: application/x-www-form-urlencoded" \
--header "Accept: application/json" \
--data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
--data-urlencode "apikey=$APIKEY" \
"https://iam.cloud.ibm.com/identity/token"

# the above CURL request will return an auth token that you will use as $IAM_TOKEN in the requests below.

# retrieve the ID of the data set to store the payload records
curl --location --request GET "${WOS_URL}/openscale/{$WOS_SERVICE_INSTANCE_ID}/v2/data_sets?target.target_id=${SUBSCRIPTION_ID}&target.target_type=subscription&type=payload_logging" \
--header "Authorization: bearer $IAM_TOKEN" \
--header "Accept: application/json"

# the above request will return the ID of payload records data set that you will use as $DATA_SET_ID in the request below.

# TODO: manually define and pass:
# request - input to scoring endpoint in format supported by Watson OpenScale - replace sample fields and values with proper ones
# response - output from scored model in format supported by Watson OpenScale - replace sample fields and values with proper ones
# - $SCORING_TIME - Time (ms) taken to make prediction (for performance monitoring)

SCORING_PAYLOAD='[{
	"response_time": "$SCORING_TIME",
	"request": {
		"parameters": {
			"template_variables": {
				"${TEMPLATE_VARIABLE_1}": "$TEMPLATE_VARIABLE_1_VALUE",
				"${TEMPLATE_VARIABLE_2}": "$TEMPLATE_VARIABLE_2_VALUE"
			}
		},
		"project_id": "$PROJECT_ID"
	},
	"response": {
		"results": [
			{
				"generated_text": "$GENERATED_TEXT"
			}
		]
	},
	"user_id": "$USER_ID"
}]'

curl --location --request POST "${WOS_URL}/openscale/${WOS_SERVICE_INSTANCE_ID}/v2/data_sets/$DATA_SET_ID/records" \
-d "$SCORING_PAYLOAD" \
--header "Authorization: bearer $IAM_TOKEN" \
--header "Accept: application/json" \
--header "Content-Type: application/json"

La valeur " "project_id": "$PROJECT_ID" indique que vous souhaitez enregistrer les données de charge utile pour les évaluations dans les projets. Pour enregistrer les données de la charge utile pour les évaluations dans les espaces, vous pouvez spécifier la valeur " "space_id": "$SPACE_ID" à la place. Vous pouvez utiliser l'onglet Gérer dans les projets et les espaces pour identifier l'ID du projet ou de l'espace pour votre modèle.

Enregistrement des données de charge utile avec Python

L'exemple suivant montre comment enregistrer les données de la charge utile à l'aide d'extraits de code Python:

from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson_openscale import APIClient

service_credentials = {
	"apikey": "$API_KEY",
	"url": "{$WOS_URL}"
}

authenticator = IAMAuthenticator(
	apikey=service_credentials["apikey"],
	url="https://iam.cloud.ibm.com/identity/token"
)
SERVICE_INSTANCE_ID = "{$WOS_SERVICE_INSTANCE_ID}"
wos_client = APIClient(authenticator=authenticator, service_instance_id=SERVICE_INSTANCE_ID, service_url=service_credentials["url"])

from ibm_watson_openscale.data_sets import DataSetTypes, TargetTypes

# Put your subscription ID here
SUBSCRIPTION_ID = "{$SUBSCRIPTION_ID}"
PROJECT_ID = "{$PROJECT_ID}"
payload_logging_data_set_id = wos_client.data_sets.list(type=DataSetTypes.PAYLOAD_LOGGING, target_target_id=SUBSCRIPTION_ID, target_target_type=TargetTypes.SUBSCRIPTION, project_id=PROJECT_ID).result.data_sets[0].metadata.id

from ibm_watson_openscale.supporting_classes.payload_record import PayloadRecord

# Put your data here
REQUEST_DATA = {
	"parameters": {
		"template_variables": {
			"{$TEMPLATE_VARIABLE_1}": "$TEMPLATE_VARIABLE_1_VALUE",
			"{$TEMPLATE_VARIABLE_2}": "$TEMPLATE_VARIABLE_2_VALUE"
		}
	},
	"project_id": PROJECT_ID
}
RESPONSE_DATA = {
	"results": [
		{
			"generated_text": "$GENERATED_TEXT"
		}
	]
}
RESPONSE_TIME = $RESPONSE_TIME
wos_client.data_sets.store_records(data_set_id=payload_logging_data_set_id, request_body=[PayloadRecord(request=REQUEST_DATA, response=RESPONSE_DATA, response_time=RESPONSE_TIME)], project_id=PROJECT_ID)

Le " PROJECT_ID = "{$PROJECT_ID}" indique que vous souhaitez enregistrer les données de la charge utile pour les évaluer dans les projets. Pour enregistrer les données de la charge utile pour les évaluations dans les espaces, vous pouvez spécifier la valeur " SPACE_ID = "{$SPACE_ID}" à la place. Vous pouvez utiliser l'onglet Gérer dans les projets et les espaces pour identifier l'ID du projet ou de l'espace pour votre modèle.

Pour plus d'informations sur les formats de données, voir Gestion des données pour les évaluations de modèle.

Sujet parent : Gestion des données pour l'évaluation des modèles