공부를 끄적끄적/책 리뷰

[리뷰]파이썬과 대스크(Dask)를 활용한 고성능 데이터 분석

공돌이J 2020. 10. 24. 22:27

[Data Science with Python and Dask]

 

책 표지

 데이터 분석 강의를 수강할 때 하는 분석 과제의 수준과 현업에서의 분석 수준은 확연하게 다릅니다. 더 많은 Feature들이 존재하고, 결측치가 많고, (실무자가 아닌 경우에는) Feature가 의미하는 것이 무엇인지 정확하게 알지 못하는 등 교육용 데이터에는 존재하지 않는 많은 불확실성들이 분석 난이도를 높이게 됩니다. 결정적으로 데이터의 규모가 노트북 단위에서 처리하기 어려운 경우가 많습니다.

 

데이터셋 종류 크기 범위 RAM에 적당한가? 하드디스크에 적당한가?
작은 데이터셋 2GB-4GB
중간 데이터셋 2TB 이하 아니오
큰 데이터셋 2TB 이상 아니오 아니오

<표1 데이터 크기의 단계별 정의>

 

 위의 표는 리뷰한 책에서 데이터셋에 대해 정의한 내용을 발췌한 것입니다. 일반적으로 대학교 강의의 과제에서 활용되는 Boston Housing이나 Iris 데이터셋은 작은 데이터셋에 해당되고 캐글이나 데이콘 등의 머신러닝 경진대회에서 활용되는 데이터셋은 일반적으로 작은 데이터셋~중간 데이터셋에 해당됩니다. 요근래 출시되는 노트북들은 8GB이상의 RAM이 탑재되어 있으므로 작은 데이터셋은 처리가 가능하지만 그 이상의 크기에 대해서는 하드디스크(혹은 SSD)에 저장되어 실행되기 때문에 I/O병목으로 인해 실행 속도가 RAM만 이용할 때 보다 느려지게 됩니다.

 

 따라서 병렬 처리를 통해 대용량 데이터를 다루는 대스크(Dask) 라이브러리는 중간 데이터셋 이상을 다루는 프로젝트에서 매우 유용하게 사용됩니다. 저도 대스크라는 라이브러리를 처음 알게 된 것은 제조 데이터 분석 업무를 맡았을 때였습니다. 처음 업무를 인수인계 받아 수백GB의 데이터셋을 불러오는 레거시 코드를 실행시켰을 때 느꼈던 아찔함은 아직도 머리속에 생생합니다. 판다스의 read_csv 메소드를 통해 불러오고 전처리 코드를 실행하는데에 꽤 고성능의 PC임에도 불구하고 수십분이 소요되는 것을 보고 무언가 잘못되었다는 생각이 들었습니다. 그리고 나서 해결책을 찾기위해 스택오버플로우와 구글링을 했고, Dask라는 라이브러리가 있다는 것을 알게 되었습니다. 다른것보다 업무에 빠르게 적용해야 했기에 주요 원리는 알지 못한채 일단 API문서를 보고 적용하며 코드를 리팩토링했습니다. 판다스와 API가 비슷하여 빠르게 적용할 수 있었고, 결과적으로 I/O속도가 향상되어 시간을 절약할 수 있었습니다.

 

 이 책은 Dask를 활용해 보았지만 과거의 저처럼 공식 문서나 블로그 등을 대강 훑어보고 적용하며 느꼈던, Dask 라이브러리에 대한 원리에 대한 갈증을 느끼신 분들에게 추천드리고 싶습니다. 도입부에 Dask의 중심을 관통하는 방향성 비순환 그래프(Directed Acyclic Graph, DAG)를 쉬운 예시와 함께 설명해 주고 있으며, 아마 많은 분들이 Dask를 처음 사용할 때 불러온 데이터프레임에 아무런 값이 나오지 않아 당황하실텐데 그 이유와 실행 원리에 대해서도 자세하게 설명하고 있습니다. 또한 대스크의 API도 판다스와 많이 호환되기 때문에 판다스를 활용하여 데이터분석을 간단하게 해보셨던 분들도 코드를 보며 쉽게 이해할 수 있을 것이라고 생각됩니다. (pandas의 alias인 pd대신 dask의 alias인 dd를 사용하면 대부분 판다스와 유사하게 활용 가능합니다.)

 

 사실 제가 활용하는 데이터셋의 크기는 분산컴퓨팅을 활용할 정도는 아니기 때문에 책 후반부에서 다루는 확장이나 배포 등의 챕터는 가볍게 훑고 넘어갔지만, 저보다 큰 데이터를 활용하시는 분들은 좋은 Introduction이 될 것 같습니다.

 

* 산업공학 전공자로써 조금 불편했던 점은 책 초반에 운영 연구라는 표현이 나오는데, 이는 원서에서 Operations Reserch를 직역한 것으로 생각됩니다. 이는 역자가 산업공학 전공자가 아니기도 하고, 개인적으로는 운영 연구라는 표현이 Operations Research라는 연구분야를 의미하는 것이 아니라 일상적인 언어으로 느껴지는 감이 없지않아서 OR이나 경영과학, 운용과학 등으로 치환했으면 조금 더 편했을 것 같습니다.

 

본 책은 한빛미디어로부터 제공받았으며 책 이외의 요구사항이나 보수를 제공받지 않았습니다.