2020.10.30

“파이썬 속도 향상”··· 피스톤(Pyston), 개발 재개

Serdar Yegulalp | InfoWorld
드롭박스(Dropbox)가 ‘피스톤(Pyston)’ 개발 지원을 철회한 이후, 새롭게 구성된 개발팀이 파이썬 런타임을 최적화하는 JIT(just-in-time)의 최신 버전을 공개했다

오랫동안 중단됐었던 ‘피스톤’ 개발 작업이 다시 시작됐다. 지난 28일(현지 시각) 드롭박스가 후원을 중단한 이후 처음으로 피스톤 개발팀이 피스톤 2.0을 출시한 것이다. 피스톤은 파이썬 프로그램의 실행 속도를 높이기 위해 JIT 컴파일(just-in-time compilation)을 사용하는 파이썬 런타임 변형이다. 
 
ⓒGetty Images

기본적으로 피스톤은 표준 파이썬 런타임인 ‘C파이썬(CPython)’의 대체품을 제공한다. 또한 이는 파이썬 3.8과 호환되므로 해당 버전의 파이썬으로 실행되는 프로그램은 피스톤에서도 그대로 실행된다. 

피스톤은 ‘JIT 컴파일’ 또는 ‘JITting’을 사용하여 코드를 생성해 속도를 크게 향상시킨다. 개발팀에 따르면 이는 표준 파이썬 프로그램에서 눈에 띄는 속도 개선을 보여줬다. 반면, ‘파이토치(Pytorch)’와 같이 더 빠른 실행을 위해 C/C++ 모듈을 사용하는 프로그램에서는 속도 향상이 적거나 거의 이뤄지지 않았다. 

이 프로젝트의 목표 중 하나는 C파이썬의 원래 구현과 최대한 가깝게 유지하는 것이었다. 많은 서드파티 프로젝트가 C파이썬 동작(CPython behavior)에 대해 가정하기 때문이다. 이에 따라 ‘피스톤 2.0’은 기존 C파이썬 코드베이스에서 시작해, 피스톤 1.0에서 잘 작동했던 기능(예: 캐싱 속성 및 JITting)을 추가했다. 피스톤 JIT는 더 이상 LLVM(Low Level Virtual Machine)을 사용하지 않고, DynASM(Dynamic Assembler)을 사용하여 어셈블리를 직접 생성한다. 

JITting은 파이썬 애플리케이션에 속도 향상을 지원하는 다른 프로젝트인 ‘PyPy’에서 사용하는 것과 동일한 기술이다. 이는 때에 따라 C파이썬이 제공할 수 있는 것의 7배에 이르기도 한다. 

그러나 피스톤 개발팀은 자신들의 접근방식이 C파이썬 C API와의 호환성을 개선하고 일반적인 워크로드(예: 플라스크(Flask) 및 장고CMS(DjangoCMS))에 대한 메모리 소비량을 줄이는 등 PyPy에 비해 몇 가지 장점이 있다고 주장했다. 

드롭박스에서 만든 피스톤은 지난 2017년, 드롭박스의 지원 철회로 개발이 중단됐었다. 현재 이 프로젝트는 독립적이긴 하지만, 일부 기존 개발자의 관리 하에서 진행되고 있다. 

피스톤 개발팀은 공식 블로그를 통해 “2020년 초, 논의 끝에 회사를 시작했으며 이제 피스톤을 풀타임으로 개발할 수 있게 됐다”라고 밝혔다. 하지만 기존 피스톤 버전과 다르게, 새 버전은 당분간 비공개 소스다. 개발팀은 기업 지원이 없기 때문에 비즈니스 모델을 다듬어야 하는 상황이라고 설명했다. 현재 기트허브에서 사용할 수 있는 해당 프로젝트의 소스코드는 최신이 아닌 이전 버전으로 보인다. 

‘피스톤 2.0’은 사전 구축된 패키지로 즉시 사용할 수 있다. 현재 우분투(Ubuntu) 18.04 및 20.04 x86_64용 패키지가 있다. 개발팀은 사용자 피드백을 바탕으로 다른 에디션을 제작할 계획이라고 전했다. ciokr@idg.co.kr
 



2020.10.30

“파이썬 속도 향상”··· 피스톤(Pyston), 개발 재개

Serdar Yegulalp | InfoWorld
드롭박스(Dropbox)가 ‘피스톤(Pyston)’ 개발 지원을 철회한 이후, 새롭게 구성된 개발팀이 파이썬 런타임을 최적화하는 JIT(just-in-time)의 최신 버전을 공개했다

오랫동안 중단됐었던 ‘피스톤’ 개발 작업이 다시 시작됐다. 지난 28일(현지 시각) 드롭박스가 후원을 중단한 이후 처음으로 피스톤 개발팀이 피스톤 2.0을 출시한 것이다. 피스톤은 파이썬 프로그램의 실행 속도를 높이기 위해 JIT 컴파일(just-in-time compilation)을 사용하는 파이썬 런타임 변형이다. 
 
ⓒGetty Images

기본적으로 피스톤은 표준 파이썬 런타임인 ‘C파이썬(CPython)’의 대체품을 제공한다. 또한 이는 파이썬 3.8과 호환되므로 해당 버전의 파이썬으로 실행되는 프로그램은 피스톤에서도 그대로 실행된다. 

피스톤은 ‘JIT 컴파일’ 또는 ‘JITting’을 사용하여 코드를 생성해 속도를 크게 향상시킨다. 개발팀에 따르면 이는 표준 파이썬 프로그램에서 눈에 띄는 속도 개선을 보여줬다. 반면, ‘파이토치(Pytorch)’와 같이 더 빠른 실행을 위해 C/C++ 모듈을 사용하는 프로그램에서는 속도 향상이 적거나 거의 이뤄지지 않았다. 

이 프로젝트의 목표 중 하나는 C파이썬의 원래 구현과 최대한 가깝게 유지하는 것이었다. 많은 서드파티 프로젝트가 C파이썬 동작(CPython behavior)에 대해 가정하기 때문이다. 이에 따라 ‘피스톤 2.0’은 기존 C파이썬 코드베이스에서 시작해, 피스톤 1.0에서 잘 작동했던 기능(예: 캐싱 속성 및 JITting)을 추가했다. 피스톤 JIT는 더 이상 LLVM(Low Level Virtual Machine)을 사용하지 않고, DynASM(Dynamic Assembler)을 사용하여 어셈블리를 직접 생성한다. 

JITting은 파이썬 애플리케이션에 속도 향상을 지원하는 다른 프로젝트인 ‘PyPy’에서 사용하는 것과 동일한 기술이다. 이는 때에 따라 C파이썬이 제공할 수 있는 것의 7배에 이르기도 한다. 

그러나 피스톤 개발팀은 자신들의 접근방식이 C파이썬 C API와의 호환성을 개선하고 일반적인 워크로드(예: 플라스크(Flask) 및 장고CMS(DjangoCMS))에 대한 메모리 소비량을 줄이는 등 PyPy에 비해 몇 가지 장점이 있다고 주장했다. 

드롭박스에서 만든 피스톤은 지난 2017년, 드롭박스의 지원 철회로 개발이 중단됐었다. 현재 이 프로젝트는 독립적이긴 하지만, 일부 기존 개발자의 관리 하에서 진행되고 있다. 

피스톤 개발팀은 공식 블로그를 통해 “2020년 초, 논의 끝에 회사를 시작했으며 이제 피스톤을 풀타임으로 개발할 수 있게 됐다”라고 밝혔다. 하지만 기존 피스톤 버전과 다르게, 새 버전은 당분간 비공개 소스다. 개발팀은 기업 지원이 없기 때문에 비즈니스 모델을 다듬어야 하는 상황이라고 설명했다. 현재 기트허브에서 사용할 수 있는 해당 프로젝트의 소스코드는 최신이 아닌 이전 버전으로 보인다. 

‘피스톤 2.0’은 사전 구축된 패키지로 즉시 사용할 수 있다. 현재 우분투(Ubuntu) 18.04 및 20.04 x86_64용 패키지가 있다. 개발팀은 사용자 피드백을 바탕으로 다른 에디션을 제작할 계획이라고 전했다. ciokr@idg.co.kr
 

X