Я обращаюсь за помощью по поводу многопоточности для записи TFRecord в блокнотах Kaggle. Я работаю над набором данных VGGFace2 и стремлюсь преобразовать пары изображений в TFRecords для наборов обучения, проверки и тестирования, но этот процесс слишком медленный в одном потоке.
Файлы TFRecord содержат примеры protobuf для этого. парные изображения для обозначения одного и разных людей. Проблемы и то, что я пробовал:
Медленная однопоточная обработка. Обработка даже ограниченного подмножества набора данных (5 пар изображений на каталог для обучения, по 2 для проверки/тестирования) занимает значительное количество времени. (потенциально до 24 часов) с использованием одного потока. Я максимально оптимизировал свой код, что побудило меня изучить многопоточность для повышения производительности.
Проблемы многопоточности: Когда я реализую многопоточность с помощью concurrent.futures.ThreadPoolExecutor, сеанс внезапно прекращается без каких-либо сообщений об ошибках. Кроме того, все переменные теряются, что требует полного перезапуска с самого начала. Интересно, что многопоточность работает безупречно при использовании одного каталога (поскольку реализованная мной многопоточность заключалась в одновременной работе с разными каталогами, работа с одним каталогом больше не была многопоточностью, а была однопоточным процессом, даже если он был отключен из-за многопоточного пула. объект-исполнитель), но даже использование двух каталогов вызывает те же проблемы, что описаны выше (VGGFace2 имеет примерно 8631 каталог).
Мои вопросы:
Возможные причины: Что может быть причина этих проблем с многопоточностью? Это ограничение памяти ресурсов Kaggle?
Альтернативные подходы: Сталкивались ли другие с подобными проблемами? Существуют ли альтернативные подходы для ускорения записи TFRecord в среде Kaggle?
Дополнительные примечания:< /p>
Я использую библиотеку contextlib.ExitStack, чтобы открыть множество средств записи и писать одновременно.
< /li>
Я долго искал решения в обсуждениях Kaggle и переполнении стека, но не нашел конкретного решения для этого сценария.
У вас есть идеи или опыт использования многопоточности в блокнотах Kaggle, особенно при работе с такими наборами данных, как VGGFace2?
Я обращаюсь за помощью по поводу многопоточности для записи TFRecord в блокнотах Kaggle. Я работаю над набором данных VGGFace2 и стремлюсь преобразовать пары изображений в TFRecords для наборов обучения, проверки и тестирования, но этот процесс слишком медленный в одном потоке. Файлы TFRecord содержат примеры protobuf для этого. парные изображения для обозначения одного и разных людей. [b]Проблемы и то, что я пробовал:[/b] [list] [*][b]Медленная однопоточная обработка.[/b] Обработка даже ограниченного подмножества набора данных (5 пар изображений на каталог для обучения, по 2 для проверки/тестирования) занимает значительное количество времени. (потенциально до 24 часов) с использованием одного потока. Я максимально оптимизировал свой код, что побудило меня изучить многопоточность для повышения производительности.
[*][b]Проблемы многопоточности: Когда я реализую многопоточность с помощью concurrent.futures.ThreadPoolExecutor, сеанс внезапно прекращается без каких-либо сообщений об ошибках. Кроме того, все переменные теряются, что требует полного перезапуска с самого начала. Интересно, что многопоточность работает безупречно при использовании одного каталога (поскольку реализованная мной многопоточность заключалась в одновременной работе с разными каталогами, работа с одним каталогом больше не была многопоточностью, а была однопоточным процессом, даже если он был отключен из-за многопоточного пула. объект-исполнитель), но даже использование двух каталогов вызывает те же проблемы, что описаны выше (VGGFace2 имеет примерно 8631 каталог).
[/list] Мои вопросы:[/b] [list] [*][b]Возможные причины:[/b] Что может быть причина этих проблем с многопоточностью? Это ограничение памяти ресурсов Kaggle?
[*][b]Альтернативные подходы:[/b] Сталкивались ли другие с подобными проблемами? Существуют ли альтернативные подходы для ускорения записи TFRecord в среде Kaggle?
[/list] [b]Дополнительные примечания:[/b]< /p> [list] Я использую библиотеку contextlib.ExitStack, чтобы открыть множество средств записи и писать одновременно. < /li> Я долго искал решения в обсуждениях Kaggle и переполнении стека, но не нашел конкретного решения для этого сценария.
[/list] У вас есть идеи или опыт использования многопоточности в блокнотах Kaggle, особенно при работе с такими наборами данных, как VGGFace2?
Файлы изображений или текстовые файлы, хранящиеся в каталоге /kaggle/working/, располагаются в случайном порядке после того, как я скопировал входной каталог набора данных в Kaggle Notebook. Эти файлы не сортируются по имени.
I пробовал
from...
Файлы изображений или текстовые файлы, хранящиеся в каталоге /kaggle/working/, располагаются в случайном порядке после того, как я скопировал входной каталог набора данных в Kaggle Notebook. Эти файлы не сортируются по имени.
I пробовал
from...
Я пытаюсь написать облачную функцию Google, которая автоматически загружает данные из определенного набора данных Kaggle и загружает их в облачную корзину Google. Как бы я ни пытался включить свой ключ API Kaggle в свою облачную функцию Google, API...
Я пытаюсь написать облачную функцию Google, которая автоматически загружает данные из определенного набора данных Kaggle и загружает их в облачную корзину Google. Как бы я ни пытался включить свой ключ API Kaggle в свою облачную функцию Google, API...