我使用SageMaker HuggingFace处理器在大量文本数据上创建自定义标记器。有没有一种方法可以使此作业数据分布式——即跨节点读取数据分区,并利用多个CPU/GPU训练令牌化器。
目前,为处理集群提供更多节点只是复制标记化过程(基本上复制创建过程(,这是多余的。您主要只能垂直缩放。
对此有什么见解吗?
考虑以下HuggingFaceProcessor的示例代码:
如果您在S3中有100个大文件,并且使用具有S3_data_distribution_type="ShardedByS3Key";(而不是FullyReplicated(,S3前缀中的对象将被分片并分发到实例中。
例如,如果您有100个大文件,并且希望在5个实例上使用HuggingFace从中筛选记录,则s3_data_distribution_type="ShardedByS3Key";将在每个实例上放置20个对象,每个实例可以从自己的路径读取文件,过滤掉记录,并将(唯一命名的(文件写入输出路径,SageMaker Processing将过滤后的文件放在S3中。
然而,如果您的筛选标准是有状态的,或者取决于首先对数据集进行全面筛选(例如:根据特征的平均值和标准差筛选异常值-例如,在使用SKLean Processor的情况下(:您需要将该信息传递到作业中,以便每个实例都知道如何进行筛选。要向启动的实例发送信息,必须使用/opt/ml/config/resourceconfig.json
文件:
{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"] }