작성자: Paulo Borges, Bala Amavasai , Bryan Smith
번역:HaUn Kim - Original Blog Link
Rise of the Data Lakehouse를 통해 데이터 웨어하우스의 창시자인 빌 인몬과 함께 레이크하우스가 미래의 데이터 아키텍처인 이유를 살펴보세요.
컴퓨터 비전 애플리케이션은 레이크하우스가 지원하는 컴퓨터 비전으로 품질, 운영 및 안전 문제 해결하기 블로그에서 보실 수 있듯이 리테일과 제조 업계를 혁신할 수 있는 잠재력을 가지고 있습니다. 그러나 수많은 기술적 문제로 인해 기업들은 이러한 잠재력을 실현하지 못하고 있는데요. 이에 대한 기술 시리즈의 첫 번째 소개 편에서는 컴퓨터 비전 애플리케이션의 개발과 구현에 관련된 문제를 자세히 살펴보고, 데이터 수집, 모델 훈련 및 모델 배포에 사용되는 기본 패턴을 알아보도록 하겠습니다.
이미지 데이터는 고유한 특성으로 인해 보다 더 신중하게 관리해야 하며, 학습된 모델을 일선 애플리케이션과 통합하기 위해 다양한 비전통적인 배포 경로를 고려해야 합니다. 모든 컴퓨터 비전 문제에 대한 만능 해결책은 없지만, 실제 비즈니스 문제를 해결하기 위해 컴퓨터 비전 시스템 사용을 선도해온 기업들은 다양한 기법과 기술을 개발해 왔습니다. 이러한 기술을 활용하면 데모에서 운영 단계로 더욱 신속하게 전환할 수 있으며 이는 앞서 언급한 블로그의 내용과 일치합니다.
일반적으로 컴퓨터 비전 애플리케이션 개발의 첫 번째 단계는 이미지 데이터의 축적입니다. 이미지 파일은 카메라 기능이 있는 장치로부터 캡처되어 중앙 스토리지 저장소로 전송되며, 이 저장소에서 모델 훈련을 위해 사용할 수 있도록 준비됩니다.
널리 사용되는 PNG 및 JPEG와 같은 대부분의 이미지 포맷은 임베디드 메타데이터를 지원합니다. 이미지의 기본 메타데이터에는 이미지의 높이와 너비와 같은 정보가 포함되어 있으며, 이러한 정보는 픽셀 값을 2차원 표현으로 변환하는 데 사용됩니다. 또한 Exif(Exchangeable Image File Format)와 같은 추가 메타데이터를 통해 카메라, 카메라 설정 및 장치에 GPS 센서가 있는 경우 잠재적인 카메라 위치와 같은 추가 세부 정보도 제공할 수 있습니다.
이미지 라이브러리를 구축할 때 메타데이터와 통계는 레이크하우스 스토리이제 도착하는 즉시 처리되는 것이 유용합니다. 왜냐하면 데이터 사이언티스트들은 일반적으로 수천 또는 수백만 개의 이미지를 거치며 이러한 데이터를 살펴봐야 하기 때문입니다. Pillow와 같은 일반적인 오픈 소스 라이브러리를 사용하면 메타데이터와 통계를 추출하여 레이크하우스 환경에서 쿼리 가능한 테이블에 저장하고 쉽게 액세스할 수 있습니다. 이미지를 구성하는 바이너리 데이터도 스토리지 환경의 원본 파일 경로 정보와 함께 해당 테이블에 유지될 수 있습니다.

그림 1. 수신 이미지 파일에 대한 데이터 처리 워크플로
개별 이미지 파일의 크기와 강력한 모델을 훈련하는 데 필요한 이미지 파일의 수가 많기 때문에 모델 훈련 중에 이러한 파일을 어떻게 처리할지 신중하게 고려해야 합니다.
엔터프라이즈 규모에서는 데이터 사이언스 과제에 일반적으로 사용되는 기술인 판다 데이터 프레임에 모델 입력을 수집하는 것이 개별 컴퓨터의 메모리 제한으로 인해 작동하지 않을 수 있습니다. 이런 경우에는 컴퓨팅 클러스터로 구성된 여러 컴퓨터 노드에 데이터 볼륨을 분산하는 Spark™ 데이터프레임을 사용하는 것이 일반적입니다. 그러나 대부분의 컴퓨터 비전 라이브러리에서는 Spark™ 데이터프레임을 액세스할 수 없기 때문에 다른 솔루션이 필요합니다.
이러한 문제를 극복하기 위해 특별히 구축된 데이터 캐싱 기술인 Petastorm을 사용할 수 있습니다. Petastorm은 레이크하우스에서 대용량의 데이터를 검색하여 임시 스토리지 기반 캐시에 저장합니다. 이는 고급 딥러닝 모델 유형의 대규모 학습을 위해 특히 유용합니다. Tensorflow와 PyTorch와 같은 가장 많이 사용되는 딥 뉴럴 네트워 크 개발 라이브러리는 Petastorm 데이터 세트를 반복할 때 작은 데이터 하위 집합을 캐시에서 일괄적으로 읽을 수 있습니다.
따라서 Petastorm과 같은 데이터 캐싱 기술을 활용하면 대규모 이미지 파일을 효율적으로 처리하고 모델 훈련에 활용할 수 있습니다.

그림 2. 레이크하우스 데이터가 임시 Petastorm 캐시에 영속됨
데이터 볼륨을 관리할 수 있는 경우, 다음 과제는 모델 학습 자체를 가속화하는 것입니다. 머신러닝 모델은 반복적인 학습을 통해 예측 정확도를 향상시키기 위해 입력 데이터 세트에 대한 일련의 반복된 "통과 (pass)"로 구성된다고 볼 수 있습니다. 각 통과를 거칠 때마다 모델은 다양한 기능에 대해 최적화된 가중치를 학습하게 되어 예측 정확도를 향상시킵니다.
하이퍼파라미터 튜닝은 모델의 학습 알고리즘을 제어하기 위해 사용되는 파라미터들의 최적값을 찾는 과정입니다. 이를 통해 모델의 성능을 향상시킬 수 있습니다. 하이퍼파라미터 값은 도메인 지식만으로는 설정하기 어려운 경우가 많기 때문에 여러 모델을 학습시켜 어떤 모델이 가장 우수한 성능을 보이는지 결정하는 것이 일반적입니다.
하이퍼파라미터 튜닝을 수행하기 위해 많은 반복이 필요하며, 이를 효율적으로 처리하기 위해서는 병렬 처리가 필요합니다. 하이퍼옵트(Hyperopt)는 이러한 실행을 웨이브 단위로 분산하여 병렬 방식으로 처리할 수 있는 도구입니다. 하이퍼옵트는 각 하이퍼파라미터 값이 어떤 결과를 가져오는지 평가한 후, 다음 웨이브에서는 지능적으로 하이퍼파라미터 값을 설정합니다. 이를 통해 더욱 빠르게 최적의 하이퍼파라미터 값을 찾아갈 수 있습니다. 반복된 웨이브 실행이 끝나면, 소프트웨어는 철저한 평가를 통해 최적의 하이퍼파라미터 값 집합에 수렴하게 됩니다. 따라서 하이퍼파라미터 튜닝은 모델의 학습에 있어서 매우 중요한 과정이며, 병렬 처리를 통해 효율적으로 수행될 수 있습니다. 하이퍼옵트와 같은 도구를 활용하면 최적의 하이퍼파라미터 값을 더욱 빠르게 찾을 수 있습니다.

그림 3. 하이퍼옵트와 Horovod를 활용하여 각각 하이퍼파라미터 튜닝과 모델 학습을 배포하는 방법
최적의 하이퍼파라미터 값이 결정되면 Horovod를 사용하여 클러스터 전체에 최종 모델의 학습을 분산시킬 수 있습니다. Horovod는 입력 훈련 데이터를 겹치지 않는 하위 집합으로 나누어 클러스터의 각 컴퓨팅 노드에서 모델의 독립적인 훈련을 조율합니다. 이러한 병렬 실행을 통해 학습된 가중치는 전체 입력 집합을 통과할 때마다 통합되며, 모델은 집단 학습을 기반으로 재조정됩니다. 최종 결과는 클러스터의 집단적인 계산 능력을 활용하여 학습된 최적화된 모델입니다.