Я пытаюсь запустить задание Sagemaker Transform со следующей конфигурацией:
BatchStrategy="MultiRecord" and "JoinSource": "Input"
с использованием - content-type='text/csv' и Accept='text/csv'
Однако я получаю сообщение об ошибке
[sagemaker logs]: my-path-to-s3/batch/input/sample_batch_transform_payload.csv:
Fail to join data: mismatched line count between the input and the output
Когда я запускаю код с помощью
BatchStrategy="SingleRecord"
все работает.
Мои выходные данные модели представляют собой вложения 1024, поэтому
прогнозы аналогичны массиву ниже (при условии, что мой входной CSV-файл имел 3 ряда)
import numpy as np
predictions = np.array([
np.random.randn(1024),
np.random.randn(1024),
np.random.randn(1024)
])
print(predictions.shape)
# (3, 1024)
Я пробовал различные выходные данные для функции output_fn, но все они потерпели неудачу с одной и той же ошибкой, указанной выше.
Вот как AWS sagemaker- набор инструментов вывода реализует вывод, но я все равно получаю ту же ошибку
from io import StringIO
import numpy as np
def output_fn(predictions, accept="text/csv"):
stream = StringIO()
np.savetxt(stream, predictions, delimiter=",", fmt="%s")
csv_output = stream.getvalue()
return csv_output
Вот конфигурация задания преобразования:
{
'TransformJobName': 'ai-manual-transform-job-2024-05-28T10-35-50',
'TransformJobArn': '',
'TransformJobStatus': 'Failed',
'FailureReason': 'ClientError: See job logs for more information',
'ModelName': '',
'MaxConcurrentTransforms': 1,
'MaxPayloadInMB': 6,
'BatchStrategy': 'MultiRecord',
'TransformInput': {'DataSource': {'S3DataSource': {'S3DataType': 'S3Prefix',
'S3Uri': ''}},
'ContentType': 'text/csv',
'CompressionType': 'None',
'SplitType': 'Line'},
'TransformOutput': {'S3OutputPath': '',
'Accept': 'text/csv',
'AssembleWith': 'Line',
'KmsKeyId': ''},
'TransformResources': {'InstanceType': 'ml.m5.large', 'InstanceCount': 1},
'CreationTime': datetime.datetime(2024, 5, 28, 10, 35, 51, 145000, tzinfo=tzlocal()),
'TransformStartTime': datetime.datetime(2024, 5, 28, 10, 39, 35, 16000, tzinfo=tzlocal()),
'TransformEndTime': datetime.datetime(2024, 5, 28, 10, 42, 32, 743000, tzinfo=tzlocal()),
'DataProcessing': {'InputFilter': '$[4]',
'OutputFilter': '$',
'JoinSource': 'Input'},
Будем признательны за любые предложения.
Обновить
при запуске следующего кода
def output_fn(predictions, accept="text/csv"):
stream = StringIO()
np.savetxt(stream, predictions, delimiter=",", fmt="%s")
csv_output = stream.getvalue()
return csv_output, accept
Я получаю другую ошибку
[sagemaker logs]: [sagemaker logs]: my-path-to-s3/batch/input/sample_batch_transform_payload.csv:
Failed to parse output from the algorithm as CSV:
bare " in non quoted field found near: ["-0.07831139862537384
Подробнее здесь: https://stackoverflow.com/questions/785 ... ategy-mult