2021.07.26

데이터 과학을 위해 '더 개선된' 최신 필수 파이썬 툴 6가지

Serdar Yegulalp | InfoWorld
데이터 분석을 마스터하려면, 또는 단순히 사용하려고 해도 필요한 것은 결국 파이썬이다. 파이썬은 배우기 쉬우며 지원의 폭도 넓고 깊다. 또한, 거의 모든 데이터 과학 라이브러리와 머신 러닝 프레임워크가 파이썬 인터페이스를 지원한다.

지난 몇 개월 동안 파이썬을 위한 여러 데이터 과학 프로젝트에서 주요 기능 업데이트가 포함된 새로운 버전이 나왔다. 실제 수치 계산을 위한 프로젝트도 있고, 이와 같은 작업에 최적화된 빠른 코드를 더 쉽게 작성할 수 있는 프로젝트도 있다. 데이터 과학을 위한 필수 파이썬 툴 6가지를 정리했다.
 

사이파이 1.7

빠르고 강력한 수학 라이브러리를 원하는 파이썬 사용자에겐 넘파이(Numpy)가 있지만 넘파이 자체는 구체적인 작업에 초점을 두지 않는다. 그래서 필요한 것이 사이파이(SciPy)다. 넘파이를 사용해 선형 대수부터 통계 작업, 신호 처리에 이르기까지 일반적인 수학 및 과학 프로그래밍 작업을 위한 라이브러리를 제공한다.

사이파이는 오래전부터 수학과 통계학을 다루기 위한 편리하고 광범위하게 사용되는 툴을 제공했다. 여러 버전에 걸쳐 강력한 하위 호환성을 제공했지만 1.0 릴리스가 나오기까지 상당히 오랜 시간이 걸렸다.

코어 개발자인 랄프 고머스에 따르면, 사이파이 프로젝트가 버전 1.0이 나올 수 있었던 가장 큰 이유는 프로젝트를 감독, 관리하는 방법의 통합이다. 하지만 맥OS와 윈도우 빌드를 위한 지속적 통합 프로세스와 사전 빌드된 윈도우 바이너리를 제대로 지원한 것도 한몫을 했다. 특히 후자는 윈도우 사용자가 별도 과정 없이 사이파이를 사용할 수 있음을 의미한다.

사이파이 프로젝트는 2017년 1.0 릴리스 이후 지금까지 7차례 주 릴리스를 내놨고 그 과정에서 다음과 같이 부분이 개선됐다.
 
  • 파이썬 2.7 지원 종료와 그 이후의 코드베이스 현대화
  • 더 많은 기능, 개선된 문서, 많은 새로운 알고리즘(예를 들어 성능이 향상되고 현대화된 인터페이스를 갖춘 새로운 고속 푸리에 변환 모듈)으로 사이파이의 하위 모듈에 대한 지속적인 개선과 업데이트
  • 일반적인 일차방정식 문제를 해결하기 위한 포트란 패키지인 LAPACK내 함수에 대한 지원 개선
  • 더 빠른 장기 실행 코드를 위한 JIT 컴파일러가 포함된 대체 파이썬 런타임인 파이파이(PyPy)와의 호환성 개선

사이파이 바이너리는 파이썬 패키지 인덱스에서 다운로드할 수 있고 pip install scipy를 입력해도 된다. 소스 코드는 깃허브에서 받을 수 있다.
 

넘바 0.53.0

넘바(Numba)를 이용하면 LLVM 컴파일러 프레임워크를 통해 파이썬 함수나 모듈을 어셈블리 언어로 컴파일할 수 있다. 파이썬 프로그램을 실행할 때마다 즉석에서 할 수 있고 사전에 컴파일할 수도 있다. 그런 측면에서 넘바는 사이썬(Cython)과 비슷하지만 다루기 더 편리한 경우가 많다. 반면 사이썬을 사용해 가속화된 코드는 서드파티에 배포하기가 더 쉽다는 장점이 있다.

넘바가 데이터 과학자에게 가장 확실히 도움이 되는 부분은 파이썬으로 작성한 작업의 속도를 높여준다는 점이다. 순수 파이썬으로 프로젝트 프로토타입을 만든 다음 여기에 넘바 주석을 추가해 업무 용도에 필요한 빠른 속도를 얻을 수 있다.

넘바는 머신 러닝 및 데이터 과학 애플리케이션용으로 제작된 하드웨어에서 더 빠르게 실행되는 속도 향상 효과도 제공한다. 넘바의 이전 버전은 CUDA 가속화 코드로의 컴파일을 지원했지만 최신 버전은 더 빠른 컴파일을 위한 새롭고 더 효율적인 GPU 코드 감소 알고리즘을 채택했다. 엔비디아 CUDA와 AMD ROCm API를 모두 지원한다.

넘바는 가능할 때 여러 CPU 코어에 걸친 병렬 실행을 위해 JIT 컴파일된 함수를 최적화할 수도 있다. 단, 이 작업을 적절히 수행하기 위해서는 코드에 약간의 추가 구문이 필요하다.

넘바는 파이썬 패키지 인덱스에서 다운로드할 수 있으며 명령줄에서 pip install numba를 입력해 설치할 수도 있다. 윈도우, 맥OS, 제네릭 리눅스용으로 사전 빌드된 바이너리가 제공된다. 또한 아나콘다(Anaconda) 파이썬 배포판의 일부로도 제공되는데, 이 경우 conda install numba를 입력해 설치할 수 있다. 소스 코드는 깃허브에 있다.
 

사이썬 3.0(베타)

사이썬(Cython)은 파이썬 코드를 매우 빠르게 실행되는 C 코드로 변환한다. 이 변환은 무거운 계산이 필요하거나 조밀한 루프에서 실행되는 코드에서 가장 유용한데, 두 경우 모두 공학, 과학, 머신 러닝을 위한 파이썬 프로그램에서 널리 사용된다.

사이썬 코드는 기본적으로 파이썬 코드에 일부 구문을 추가한 것이다. 사이썬을 사용해 파이썬 코드를 C로 컴파일할 수 있지만, 수십 배에서 수백 배에 이르는 최고의 성능 개선을 위해서는 사이썬의 형식 주식을 사용해야 한다.

사이썬 3이 나오기 전에는 0.xx 버전 번호 체계가 사용됐다. 사이썬 3이 나오면서 파이썬 2 구문에 대한 지원은 중단됐다. 사이썬 3은 여전히 베타 단계지만 파이썬 언어 관리자는 이전 버전 대신 이 버전을 사용하도록 장려한다. 사이썬 3은 ‘순수 파이썬’ 모드의 사용 확대도 강조한다. 이 모드에서는 전부는 아니지만 많은 사이썬 함수를 100% 파이썬 호환 구문을 통해 사용할 수 있다.

사이썬은 아이파이썬(IPython)/주피터(Jupyter) 노트북과의 통합도 지원한다. 사이썬으로 컴파일된 코드는 인라인 주석을 통해 다른 파이썬 코드처럼 주피터 노트북에서 사용할 수 있다.

또한 프로파일에 따른 최적화를 활성화해 주피터용 사이썬 모듈을 컴파일할 수 있다. 이 옵션을 사용해 빌드한 모듈은 해당 모듈에 대해 생성된 프로파일링 정보를 기반으로 컴파일 및 최적화되므로 더 빠르게 실행된다. 참고로 이 옵션은 GCC 컴파일러를 사용할 때만 쓸 수 있으며 MSVC는 아직 지원하지 않는다.

사이썬은 파이썬 패키지 인덱스에서 받을 수 있고 명령줄에서 pip install cython을 입력해 설치할 수 있다. 32비트 및 64비트 윈도우, 제네릭 리눅스, 맥OS용 바이너리 버전도 포함된다. 소스 코드는 깃허브에 있다. 사이썬을 사용하려면 플랫폼에 C 컴파일러가 있어야 한다.
 

대스크 2021.07.0

처리 성능의 비용이 어느 때보다 저렴하다고는 해도, 여러 CPU 코어와 물리적 프로세서 또는 계산 노드로 작업을 분할해 성능을 최대한 활용하는 것은 간단치 않은 일이다.

대스크는 파이썬 작업을 받아서 여러 시스템에 걸쳐 효율적으로 스케줄링한다. 대스크 작업을 실행하는 데 사용하는 구문은 파이썬의 다른 작업에 사용하는 구문과 사실상 같으므로 기존 코드를 조금만 손보면 대스크를 활용할 수 있다.

대스크는 파이썬의 여러 가지 인기 있는 머신 러닝 및 과학 컴퓨팅 라이브러리를 위한 자체 인터페이스 버전을 제공한다. 예를 들어 데이터프레임(DataFrame) 객체는 판다스(Pandas) 라이브러리에 있는 것과 같고, 어레이(Array) 객체는 넘파이의 어레이와 같은 방식으로 작동한다. 따라서 대스크의 코드 몇 줄만 수정하면 기존 코드를 신속하게 병렬화할 수 있다.

대스크는 순수 파이썬으로 작성한 작업을 병렬화하는 데도 사용할 수 있으며, 일반 파이썬 객체 모음에서 map, filter, groupby와 같은 작업을 최적화하는 데 적합한 객체 유형(Bag 등)도 있다.

대스크는 파이썬 패키지 인덱스에서 받을 수 있고 pip install das를 통해 설치가 가능하다. 아나콘다 파이썬 배포판을 통해서도 사용할 수 있으며, 이 경우 conda install dask를 입력하면 된다. 소스 코드는 깃허브에 있다.
 

백스 4.30

백스(Vaex)를 사용하면 큰 테이블 데이터 집합에서 지연 연산을 수행할 수 있다(기본적으로 넘파이 또는 판다스의 데이터프레임). 크다는 것은 수십억 개의 행을 의미하며, 여기서 모든 연산을 최대한 효율적으로, 데이터 복사 없이, 최소한의 메모리 사용량으로, 내장된 시각화 툴을 사용해 수행한다.

파이썬에서 대용량 데이터 집합을 다루는 경우, 특히 작업에 데이터의 하위 집합만 사용할 때는(예를 들어 테이블의 열 하나) 메모리 또는 처리 성능이 낭비되는 경우가 많다. 백스는 수요에 따라 실제로 계산이 필요할 때 계산을 수행해 가용 컴퓨팅 리소스를 최적으로 사용할 수 있게 해준다.

백스는 파이썬 패키지 인덱스에서 받을 수 있고 명령줄에서 pip install vaex를 입력해 설치가 가능하다. 참고로 최선의 결과를 얻으려면 가상 환경에 백스를 설치하거나 아나콘다 파이썬 배포판을 사용할 것을 권한다.
 

인텔 SDC

인텔의 확장 가능한 데이터프레임 컴파일러(Scalable Dataframe Compiler, SDC)는 이전 하이 퍼포먼스 애널리틱스 툴킷(High Performance Analytics Toolkit, HPAT)에서 이름이 바뀐 것으로, 클러스터에서 데이터 분석과 머신 러닝의 속도를 높이는 실험적 프로젝트다. 오픈 MPI 프로젝트mpirun 유틸리티를 사용해 파이썬 하위 집합을 여러 클러스터로 자동으로 병렬화하는 코드로 컴파일한다.

HPAT는 넘바를 사용하지만 넘바 프로젝트 및 사이썬과 달리 파이썬을 있는 그대로 컴파일하지는 않는다. 대신 파이썬 언어의 제한된 하위 집합을 가져와(주로 넘파이 배열과 판다스 데이터프레임) 여러 노드에서 실행하는 데 최적화됐다.

HPAT에는 넘바와 마찬가지로 특정 함수를 최적화된 HPAT의 대응 함수로 바꿔주는 @jit 데코레이터가 있다. 또한, HDF5(HDFS 아님) 파일을 읽고 쓰는 네이티브 I/O 모듈을 포함한다. SDC는 깃허브에서 소스 형식으로만 받을 수 있으며 바이너리는 제공하지 않는다. editor@itworld.co.kr


2021.07.26

데이터 과학을 위해 '더 개선된' 최신 필수 파이썬 툴 6가지

Serdar Yegulalp | InfoWorld
데이터 분석을 마스터하려면, 또는 단순히 사용하려고 해도 필요한 것은 결국 파이썬이다. 파이썬은 배우기 쉬우며 지원의 폭도 넓고 깊다. 또한, 거의 모든 데이터 과학 라이브러리와 머신 러닝 프레임워크가 파이썬 인터페이스를 지원한다.

지난 몇 개월 동안 파이썬을 위한 여러 데이터 과학 프로젝트에서 주요 기능 업데이트가 포함된 새로운 버전이 나왔다. 실제 수치 계산을 위한 프로젝트도 있고, 이와 같은 작업에 최적화된 빠른 코드를 더 쉽게 작성할 수 있는 프로젝트도 있다. 데이터 과학을 위한 필수 파이썬 툴 6가지를 정리했다.
 

사이파이 1.7

빠르고 강력한 수학 라이브러리를 원하는 파이썬 사용자에겐 넘파이(Numpy)가 있지만 넘파이 자체는 구체적인 작업에 초점을 두지 않는다. 그래서 필요한 것이 사이파이(SciPy)다. 넘파이를 사용해 선형 대수부터 통계 작업, 신호 처리에 이르기까지 일반적인 수학 및 과학 프로그래밍 작업을 위한 라이브러리를 제공한다.

사이파이는 오래전부터 수학과 통계학을 다루기 위한 편리하고 광범위하게 사용되는 툴을 제공했다. 여러 버전에 걸쳐 강력한 하위 호환성을 제공했지만 1.0 릴리스가 나오기까지 상당히 오랜 시간이 걸렸다.

코어 개발자인 랄프 고머스에 따르면, 사이파이 프로젝트가 버전 1.0이 나올 수 있었던 가장 큰 이유는 프로젝트를 감독, 관리하는 방법의 통합이다. 하지만 맥OS와 윈도우 빌드를 위한 지속적 통합 프로세스와 사전 빌드된 윈도우 바이너리를 제대로 지원한 것도 한몫을 했다. 특히 후자는 윈도우 사용자가 별도 과정 없이 사이파이를 사용할 수 있음을 의미한다.

사이파이 프로젝트는 2017년 1.0 릴리스 이후 지금까지 7차례 주 릴리스를 내놨고 그 과정에서 다음과 같이 부분이 개선됐다.
 
  • 파이썬 2.7 지원 종료와 그 이후의 코드베이스 현대화
  • 더 많은 기능, 개선된 문서, 많은 새로운 알고리즘(예를 들어 성능이 향상되고 현대화된 인터페이스를 갖춘 새로운 고속 푸리에 변환 모듈)으로 사이파이의 하위 모듈에 대한 지속적인 개선과 업데이트
  • 일반적인 일차방정식 문제를 해결하기 위한 포트란 패키지인 LAPACK내 함수에 대한 지원 개선
  • 더 빠른 장기 실행 코드를 위한 JIT 컴파일러가 포함된 대체 파이썬 런타임인 파이파이(PyPy)와의 호환성 개선

사이파이 바이너리는 파이썬 패키지 인덱스에서 다운로드할 수 있고 pip install scipy를 입력해도 된다. 소스 코드는 깃허브에서 받을 수 있다.
 

넘바 0.53.0

넘바(Numba)를 이용하면 LLVM 컴파일러 프레임워크를 통해 파이썬 함수나 모듈을 어셈블리 언어로 컴파일할 수 있다. 파이썬 프로그램을 실행할 때마다 즉석에서 할 수 있고 사전에 컴파일할 수도 있다. 그런 측면에서 넘바는 사이썬(Cython)과 비슷하지만 다루기 더 편리한 경우가 많다. 반면 사이썬을 사용해 가속화된 코드는 서드파티에 배포하기가 더 쉽다는 장점이 있다.

넘바가 데이터 과학자에게 가장 확실히 도움이 되는 부분은 파이썬으로 작성한 작업의 속도를 높여준다는 점이다. 순수 파이썬으로 프로젝트 프로토타입을 만든 다음 여기에 넘바 주석을 추가해 업무 용도에 필요한 빠른 속도를 얻을 수 있다.

넘바는 머신 러닝 및 데이터 과학 애플리케이션용으로 제작된 하드웨어에서 더 빠르게 실행되는 속도 향상 효과도 제공한다. 넘바의 이전 버전은 CUDA 가속화 코드로의 컴파일을 지원했지만 최신 버전은 더 빠른 컴파일을 위한 새롭고 더 효율적인 GPU 코드 감소 알고리즘을 채택했다. 엔비디아 CUDA와 AMD ROCm API를 모두 지원한다.

넘바는 가능할 때 여러 CPU 코어에 걸친 병렬 실행을 위해 JIT 컴파일된 함수를 최적화할 수도 있다. 단, 이 작업을 적절히 수행하기 위해서는 코드에 약간의 추가 구문이 필요하다.

넘바는 파이썬 패키지 인덱스에서 다운로드할 수 있으며 명령줄에서 pip install numba를 입력해 설치할 수도 있다. 윈도우, 맥OS, 제네릭 리눅스용으로 사전 빌드된 바이너리가 제공된다. 또한 아나콘다(Anaconda) 파이썬 배포판의 일부로도 제공되는데, 이 경우 conda install numba를 입력해 설치할 수 있다. 소스 코드는 깃허브에 있다.
 

사이썬 3.0(베타)

사이썬(Cython)은 파이썬 코드를 매우 빠르게 실행되는 C 코드로 변환한다. 이 변환은 무거운 계산이 필요하거나 조밀한 루프에서 실행되는 코드에서 가장 유용한데, 두 경우 모두 공학, 과학, 머신 러닝을 위한 파이썬 프로그램에서 널리 사용된다.

사이썬 코드는 기본적으로 파이썬 코드에 일부 구문을 추가한 것이다. 사이썬을 사용해 파이썬 코드를 C로 컴파일할 수 있지만, 수십 배에서 수백 배에 이르는 최고의 성능 개선을 위해서는 사이썬의 형식 주식을 사용해야 한다.

사이썬 3이 나오기 전에는 0.xx 버전 번호 체계가 사용됐다. 사이썬 3이 나오면서 파이썬 2 구문에 대한 지원은 중단됐다. 사이썬 3은 여전히 베타 단계지만 파이썬 언어 관리자는 이전 버전 대신 이 버전을 사용하도록 장려한다. 사이썬 3은 ‘순수 파이썬’ 모드의 사용 확대도 강조한다. 이 모드에서는 전부는 아니지만 많은 사이썬 함수를 100% 파이썬 호환 구문을 통해 사용할 수 있다.

사이썬은 아이파이썬(IPython)/주피터(Jupyter) 노트북과의 통합도 지원한다. 사이썬으로 컴파일된 코드는 인라인 주석을 통해 다른 파이썬 코드처럼 주피터 노트북에서 사용할 수 있다.

또한 프로파일에 따른 최적화를 활성화해 주피터용 사이썬 모듈을 컴파일할 수 있다. 이 옵션을 사용해 빌드한 모듈은 해당 모듈에 대해 생성된 프로파일링 정보를 기반으로 컴파일 및 최적화되므로 더 빠르게 실행된다. 참고로 이 옵션은 GCC 컴파일러를 사용할 때만 쓸 수 있으며 MSVC는 아직 지원하지 않는다.

사이썬은 파이썬 패키지 인덱스에서 받을 수 있고 명령줄에서 pip install cython을 입력해 설치할 수 있다. 32비트 및 64비트 윈도우, 제네릭 리눅스, 맥OS용 바이너리 버전도 포함된다. 소스 코드는 깃허브에 있다. 사이썬을 사용하려면 플랫폼에 C 컴파일러가 있어야 한다.
 

대스크 2021.07.0

처리 성능의 비용이 어느 때보다 저렴하다고는 해도, 여러 CPU 코어와 물리적 프로세서 또는 계산 노드로 작업을 분할해 성능을 최대한 활용하는 것은 간단치 않은 일이다.

대스크는 파이썬 작업을 받아서 여러 시스템에 걸쳐 효율적으로 스케줄링한다. 대스크 작업을 실행하는 데 사용하는 구문은 파이썬의 다른 작업에 사용하는 구문과 사실상 같으므로 기존 코드를 조금만 손보면 대스크를 활용할 수 있다.

대스크는 파이썬의 여러 가지 인기 있는 머신 러닝 및 과학 컴퓨팅 라이브러리를 위한 자체 인터페이스 버전을 제공한다. 예를 들어 데이터프레임(DataFrame) 객체는 판다스(Pandas) 라이브러리에 있는 것과 같고, 어레이(Array) 객체는 넘파이의 어레이와 같은 방식으로 작동한다. 따라서 대스크의 코드 몇 줄만 수정하면 기존 코드를 신속하게 병렬화할 수 있다.

대스크는 순수 파이썬으로 작성한 작업을 병렬화하는 데도 사용할 수 있으며, 일반 파이썬 객체 모음에서 map, filter, groupby와 같은 작업을 최적화하는 데 적합한 객체 유형(Bag 등)도 있다.

대스크는 파이썬 패키지 인덱스에서 받을 수 있고 pip install das를 통해 설치가 가능하다. 아나콘다 파이썬 배포판을 통해서도 사용할 수 있으며, 이 경우 conda install dask를 입력하면 된다. 소스 코드는 깃허브에 있다.
 

백스 4.30

백스(Vaex)를 사용하면 큰 테이블 데이터 집합에서 지연 연산을 수행할 수 있다(기본적으로 넘파이 또는 판다스의 데이터프레임). 크다는 것은 수십억 개의 행을 의미하며, 여기서 모든 연산을 최대한 효율적으로, 데이터 복사 없이, 최소한의 메모리 사용량으로, 내장된 시각화 툴을 사용해 수행한다.

파이썬에서 대용량 데이터 집합을 다루는 경우, 특히 작업에 데이터의 하위 집합만 사용할 때는(예를 들어 테이블의 열 하나) 메모리 또는 처리 성능이 낭비되는 경우가 많다. 백스는 수요에 따라 실제로 계산이 필요할 때 계산을 수행해 가용 컴퓨팅 리소스를 최적으로 사용할 수 있게 해준다.

백스는 파이썬 패키지 인덱스에서 받을 수 있고 명령줄에서 pip install vaex를 입력해 설치가 가능하다. 참고로 최선의 결과를 얻으려면 가상 환경에 백스를 설치하거나 아나콘다 파이썬 배포판을 사용할 것을 권한다.
 

인텔 SDC

인텔의 확장 가능한 데이터프레임 컴파일러(Scalable Dataframe Compiler, SDC)는 이전 하이 퍼포먼스 애널리틱스 툴킷(High Performance Analytics Toolkit, HPAT)에서 이름이 바뀐 것으로, 클러스터에서 데이터 분석과 머신 러닝의 속도를 높이는 실험적 프로젝트다. 오픈 MPI 프로젝트mpirun 유틸리티를 사용해 파이썬 하위 집합을 여러 클러스터로 자동으로 병렬화하는 코드로 컴파일한다.

HPAT는 넘바를 사용하지만 넘바 프로젝트 및 사이썬과 달리 파이썬을 있는 그대로 컴파일하지는 않는다. 대신 파이썬 언어의 제한된 하위 집합을 가져와(주로 넘파이 배열과 판다스 데이터프레임) 여러 노드에서 실행하는 데 최적화됐다.

HPAT에는 넘바와 마찬가지로 특정 함수를 최적화된 HPAT의 대응 함수로 바꿔주는 @jit 데코레이터가 있다. 또한, HDF5(HDFS 아님) 파일을 읽고 쓰는 네이티브 I/O 모듈을 포함한다. SDC는 깃허브에서 소스 형식으로만 받을 수 있으며 바이너리는 제공하지 않는다. editor@itworld.co.kr


X