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.
Formatos de datos comunes para inferencias
SageMaker Los algoritmos de Amazon aceptan y producen varios MIME tipos diferentes de HTTP cargas útiles utilizadas para recuperar predicciones en línea y de minilotes. Puede utilizar varios AWS servicios para transformar o preprocesar los registros antes de ejecutar la inferencia. Como mínimo, tiene que convertir los datos para las siguientes tareas:
-
Serialización de la solicitud de inferencias (gestionada por usted)
-
Deserialización de la solicitud de inferencias (gestionada por el algoritmo)
-
Serialización de la respuesta de inferencias (gestionada por el algoritmo)
-
Deserialización de la respuesta de inferencias (gestionada por usted)
Temas
Convierta los datos para la serialización de las solicitudes de inferencia
Entre las opciones de tipo de contenido para las solicitudes de inferencia de SageMaker algoritmos de Amazon se incluyen: text/csv
application/json
, yapplication/x-recordio-protobuf
. Los algoritmos que no admiten todos estos tipos pueden admitir otros tipos. XGBoost, por ejemplo, solo es compatible con text/csv
los de esta lista, pero también admitetext/libsvm
.
Para text/csv
, el valor para el argumento Body en invoke_endpoint
debe ser una cadena con comas que separan los valores para cada característica. Por ejemplo, un registro para un modelo con cuatro características debería tener un aspecto similar a 1.5,16.0,14,23.0
. Las transformaciones realizadas en los datos de capacitación deben realizarse también en los datos antes de la obtención de la inferencia. El orden de las características es importante, y no debe cambiarse.
application/json
es más flexible y proporciona varios formatos posibles para que los desarrolladores los utilicen en sus aplicaciones. A un nivel alto, en JavaScript, la carga útil podría tener el siguiente aspecto:
let request = { // Instances might contain multiple rows that predictions are sought for. "instances": [ { // Request and algorithm specific inference parameters. "configuration": {}, // Data in the specific format required by the algorithm. "data": { "<field name>": dataElement } } ] }
Tiene las siguientes opciones para especificar dataElement
:
Equivalente a búferes de protocolo
// Has the same format as the protocol buffers implementation described for training. let dataElement = { "keys": [], "values": [], "shape": [] }
Vector numérico sencillo
// An array containing numeric values is treated as an instance containing a // single dense vector. let dataElement = [1.5, 16.0, 14.0, 23.0] // It will be converted to the following representation by the SDK. let converted = { "features": { "values": dataElement } }
Para varios registros
let request = { "instances": [ // First instance. { "features": [ 1.5, 16.0, 14.0, 23.0 ] }, // Second instance. { "features": [ -2.0, 100.2, 15.2, 9.2 ] } ] }
Convierta los datos para la deserialización de la respuesta a inferencias
SageMaker Los algoritmos de Amazon JSON se muestran en varios diseños. En líneas generales, la estructura es:
let response = { "predictions": [{ // Fields in the response object are defined on a per algorithm-basis. }] }
Los campos incluidos en las predicciones son diferentes en los algoritmos. A continuación se muestran ejemplos de la salida del algoritmo k-means.
Interfaz de registro único
let response = { "predictions": [{ "closest_cluster": 5, "distance_to_cluster": 36.5 }] }
Inferencia de varios registros
let response = { "predictions": [ // First instance prediction. { "closest_cluster": 5, "distance_to_cluster": 36.5 }, // Second instance prediction. { "closest_cluster": 2, "distance_to_cluster": 90.3 } ] }
Inferencia de varios registros con entrada protobuf
{ "features": [], "label": { "closest_cluster": { "values": [ 5.0 ] // e.g. the closest centroid/cluster was 1.0 }, "distance_to_cluster": { "values": [ 36.5 ] } }, "uid": "abc123", "metadata": "{ "created_at": '2017-06-03' }" }
SageMaker Los algoritmos también admiten este JSONLINES formato, en el que el contenido de la respuesta por registro es el mismo que el del JSON formato. La estructura de varios registros es una colección de objetos de respuesta por registro separados por caracteres de nueva línea. El contenido de respuesta del KMeans algoritmo integrado para 2 puntos de datos de entrada es:
{"distance_to_cluster": 23.40593910217285, "closest_cluster": 0.0} {"distance_to_cluster": 27.250282287597656, "closest_cluster": 0.0}
Mientras se ejecuta la transformación por lotes, se recomienda usar el tipo de respuesta jsonlines
estableciendo el campo Accept
de la CreateTransformJobRequest
en application/jsonlines
.
Formatos de solicitud comunes para todos los algoritmos
La mayoría de los algoritmos utilizan muchos de los siguientes formatos de solicitud de inferencia.
JSONformato de solicitud
Tipo de contenido: aplicación/ JSON
Formato denso
let request = { "instances": [ { "features": [1.5, 16.0, 14.0, 23.0] } ] } let request = { "instances": [ { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } } ] }
Formato disperso
{ "instances": [ {"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }, {"data": {"features": { "keys": [0, 182, 232, 243, 431], "shape": [2000], "values": [13, 1, 1, 4, 1] } } }, ] }
JSONLINESformato de solicitud
Tipo de contenido: aplicación/ JSONLINES
Formato denso
Un solo registro en formato denso se puede representar como:
{ "features": [1.5, 16.0, 14.0, 23.0] }
o bien:
{ "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } }
Formato disperso
Un solo registro en formato disperso se representa como:
{"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }
Los registros múltiples se representan como una colección de representaciones de un solo registro, separadas por caracteres de nueva línea:
{"data": {"features": { "keys": [0, 1, 3], "shape": [4], "values": [1, 4, 1] } } } { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } { "features": [1.5, 16.0, 14.0, 23.0] }
CSVformato de solicitud
Tipo de contenido: text/CSV; label_size=0
nota
CSVEl soporte no está disponible para las máquinas de factorización.
RECORDIOformato de solicitud
Tipo de contenido: aplicación/ x-recordio-protobuf
Utilice la transformación por lotes con algoritmos integrados
Al ejecutar la transformación por lotes, se recomienda utilizar el tipo de JSONLINES respuesta en lugar del tipo de respuestaJSON, si el algoritmo lo admite. Para ello, defina el Accept
campo en CreateTransformJobRequest
paraapplication/jsonlines
.
Al crear un trabajo de transformación, SplitType
debe configurarse en función ContentType
de los datos de entrada. Del mismo modo, dependiendo del campo Accept
de la CreateTransformJobRequest
, AssembleWith
debe establecerse en consecuencia. Utilice la siguiente tabla para configurar estos campos:
ContentType | Recomendado SplitType |
---|---|
application/x-recordio-protobuf |
RecordIO |
text/csv |
Line |
application/jsonlines |
Line |
application/json |
None |
application/x-image |
None |
image/* |
None |
Aceptar | Recomendado AssembleWith |
---|---|
application/x-recordio-protobuf |
None |
application/json |
None |
application/jsonlines |
Line |
Para obtener más información sobre los formatos de respuesta para algoritmos específicos, consulte lo siguiente: