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.
Los algoritmos de Amazon SageMaker AI aceptan y producen varios tipos de MIME diferentes para las cargas HTTP que se utilizan 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
Conversión de datos para la serialización de la solicitud de inferencias
Las opciones de tipo de contenido para las solicitudes de inferencia de algoritmos de Amazon SageMaker AI 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 admite 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 pueden usarlos 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 ]
}
]
}
Conversión de datos para la deserialización de la respuesta de inferencias
Los algoritmos de Amazon SageMaker AI devuelven JSON 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 de IA también admiten el formato JSONLINES, donde el contenido de la respuesta por registro es el mismo que en el formato JSON. 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.
Formato de solicitud JSON
Tipo de contenido: application/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]
}
}
},
]
}
Formato de solicitud JSONLINES
Tipo de contenido: application/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] } } }
Varios registros se representan como una colección de las 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] }
Formato de solicitud CSV
Tipo de contenido: text/CSV; label_size=0
nota
La compatibilidad con CSV no está disponible para máquinas de factorización.
Formato de solicitud RECORDIO
Tipo de contenido: aplicación/ x-recordio-protobuf
Uso de la transformación por lotes con algoritmos integrados
Mientras se ejecuta la transformación por lotes, se recomienda usar el tipo de respuesta JSONLINES en lugar de JSON, si lo admite el algoritmo. Para ello, ajuste el campo Accept
en el CreateTransformJobRequest
en application/jsonlines
.
Al crear un trabajo de transformación, SplitType
debe establecerse según el 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: