在Sagemaker中使用Linear Learner和MXNet RecordIO时,fit()
运行了38分钟后,我得到了"数据集中位置5,089,840处的MXNet RecordIO记录的头部不以有效的魔术数字开头"
的错误信息。
该文件是使用以下代码生成的。请注意,我尝试了两种上传到S3的方法。我也尝试了直接上传BytesIO
以及上传文件,如下所示。
train_file = 'linear_train.data'f = io.BytesIO()smac.write_numpy_to_dense_tensor(f, train_X.astype('float32'), train_y.astype('float32'))f.seek(0) # 写入内容with open(train_file, "wb") as fl: fl.write(f.getvalue())# 上传的替代方法# boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, 'train', train_file)).upload_fileobj(f)boto3.client('s3').upload_file(train_file, Bucket=bucket, Key=os.path.join(prefix, 'train', train_file), ExtraArgs={'ACL': 'bucket-owner-full-control'})
为了检查文件是否未损坏,我从S3下载了它,并简单地按以下方式读取它。
record = MXRecordIO(fl, 'r') while True: item = record.read() # 这里我们打印项目,当到达末尾时中断等。这确认了RecordIO是有效的。
所以,文件看起来是没问题的。
我如何运行Linear Learner呢?
这是错误消息:
如果有任何失败原因:ClientError: 无法读取数据通道'train'。请求的内容类型是'application/x-recordio-protobuf'。请验证数据是否与请求的内容类型匹配。(由MXNetError引起)引起的:[17:04:49] /opt/brazil-pkg-cache/packages/AIAlgorithmsCppLibs/AIAlgorithmsCppLibs-2.0.3446.0/AL2012/generic-flavor/src/src/aialgs/io/iterator_base.cpp:100:(输入错误)数据集中位置5,089,840处的MXNet RecordIO记录的头部不以有效的魔术数字开头。返回了10个堆栈跟踪条目:[bt] (0) /opt/amazon/lib/libaialgs.so(+0xbca0) [0x7f337885cca0][bt] (1) /opt/amazon/lib/libaialgs.so(+0xbffa) [0x7f337885cffa][bt] (2) /opt/amazon/lib/libaialgs.so(aialgs::iterator_base::Next()+0x4a6) [0x7f33788675e6][bt] (3) /opt/amazon/lib/libmxnet.so(MXDataIterNext+0x21) [0x7f3367272141][bt] (4) /opt/amazon/python2.7/lib/python2.7/lib-dynload/_ctypes.so(ffi_call_unix64+0x4c) [0x7f3378893958][bt] (5) /opt/amazon/python2.7/lib/python2.7/lib-dynload/_ctypes.so(ffi_call+0x15f) [0x7f33如果有任何失败原因:ClientError: 无法读取数据通道'train'。请求的内容类型是'application/x-recordio-protobuf'。请验证数据是否与请求的内容类型匹配。(由MXNetError引起)引起的:[17:04:49] /opt/brazil-pkg-cache/packages/AIAlgorithmsCppLibs/AIAlgorithmsCppLibs-2.0.3446.0/AL2012/generic-flavor/src/src/aialgs/io/iterator_base.cpp:100:(输入错误)数据集中位置5,089,840处的MXNet RecordIO记录的头部不以有效的魔术数字开头。返回了10个堆栈跟踪条目:[bt] (0) /opt/amazon/lib/libaialgs.so(+0xbca0) [0x7f337885cca0][bt] (1) /opt/amazon/lib/libaialgs.so(+0xbffa) [0x7f337885cffa][bt] (2) /opt/amazon/lib/libaialgs.so(aialgs::iterator_base::Next()+0x4a6) [0x7f33788675e6][bt] (3) /opt/amazon/lib/libmxnet.so(MXDataIterNext+0x21) [0x7f3367272141][bt] (4) /opt/amazon/python2.7/lib/python2.7/lib-dynload/_ctypes.so(ffi_call_unix64+0x4c) [0x7f3378893958][bt] (5) /opt/amazon/python2.7/lib/python2.7/lib-dynload/_ctypes.so(ffi_call+0x15f) [0x7f33
回答:
这是因为同一个S3文件夹中存在CSV文件和RecordIO文件。