1

ML 모델을 처리하는 데 너무 많은 시간이 걸리므로 병렬 처리를 고려하고 있습니다.파이썬 : GPU 및 CPU 작업 병렬화

지금은 사전 처리 루틴이 SSD에서 데이터를 가져 와서 사전 처리하고 학습을위한 데이터 구조를 만듭니다. 이 모든 시간에 ML 훈련 과정이 기다립니다. 그런 다음 ML 프로세스는이 데이터를 사용하여 모델을 교육하는 데 사용합니다. 이제 전처리 대기. 그리고 그들은 둘레로 나아 간다. 이 대기 시간은 신속하게 요약되며 모델 교육을 지연시킵니다.

계획은 다음과 같습니다. 단일 데이터 구조는 많은 데이터 요소를 저장합니다. 각 단계에서 교육 알고리즘은 모델을 훈련하기 위해 무작위로 하위 집합을 취합니다 (GPU에서 TensorFlow를 사용하는 SGD).

이와 병행하여 다른 스레드가 다음 데이터 묶음의 전처리를하고 싶습니다. 그리고 전처리가 준비되면 이전 데이터 구조 객체를 새로운 것으로 대체 할 것입니다. 기타 등등.

이것이 파이썬에서의 병렬 처리에 대한 나의 첫 번째 접근 방식이므로, 이것이 전혀 작동하는지 궁금합니다. 글로벌 인터프리터가 시스템이 진정으로 평행 한 방식으로 이러한 작업을 수행하는 것을 막을 수 있습니까?

답변

1

TensorFlow의 파이썬 바인딩은 가능한 한 빨리 전역 인터프리터 잠금을 해제하는 데 매우주의해야합니다. 예를 들어, 컨트롤이 tf.Sessionrun 메서드에서 C++ 라이브러리로 전송 될 때 잠금을 유지하지 않습니다. 당신이 설명하는 것은 TensorFlow의 매우 일반적인 패턴입니다. 전처리 된 데이터를 사용하여 입력 데이터 전처리 및 ML 모델 학습은 TensorFlow에서 queues을 사용하여 분리됩니다. Inception model에서 입력 전처리 및 학습이 어떻게 병렬화되는지 보여주는 예가 있습니다.