Spaces:
Running
on
Zero
Running
on
Zero
| # Copyright (c) Meta Platforms, Inc. and affiliates. | |
| from bytelatent.data.iterators.abstract_iterator import ( | |
| PydanticIteratorState, | |
| StatefulIterator, | |
| ) | |
| from bytelatent.data.iterators.arrow_iterator import ( | |
| ArrowFileIterator, | |
| ArrowFileIteratorState, | |
| ) | |
| class LoopingIteratorState(PydanticIteratorState): | |
| file_iterator_state: ArrowFileIteratorState | |
| epoch: int | |
| def build(self) -> "LoopingIterator": | |
| return LoopingIterator( | |
| file_iterator=self.file_iterator_state.build(), | |
| epoch=self.epoch, | |
| ) | |
| class LoopingIterator(StatefulIterator): | |
| def __init__(self, file_iterator: ArrowFileIterator, epoch: int = -1): | |
| self.file_iterator = file_iterator | |
| self.epoch = epoch | |
| def get_state(self): | |
| return LoopingIteratorState( | |
| file_iterator_state=self.file_iterator.get_state(), epoch=self.epoch | |
| ) | |
| def create_iter(self): | |
| while True: | |
| self.epoch += 1 | |
| iterator = self.file_iterator.create_iter() | |
| yield from iterator | |