뿅뿅뿅/돌아라 회전목마

[Julia]Python보다 줄리아 ? - 줄리아를 알아보자

우주먼지의하루 2020. 7. 13. 00:02
728x90

 

Julia란 ?

 

줄리아, 파이썬보다 데이터 읽는 속도 최대 20배 빨라

(지디넷코리아=남혁우 기자)프로그래밍 언어 줄리아가 파이썬보다 데이터 읽는 속도를 최대 20배까지 높일 수 있는 것으로 나타났다. 줄리아컴퓨팅은 프로그래밍언어 줄리아가 라이벌 언어인 ��

n.news.naver.com

뉴스를 둘러보다가 Python보다 빠르다는 Julia를 보고 관심이 갔다. 검색을 해보니 이미 많은 사람들이 Julia의 존재를 알고 있었다. 나는 한발 늦었네.

 

먼저 줄리아(Julia, julialang.org)는 MIT의 앨런 에델만(Alan Edelman) 지도 아래 응용 컴퓨팅 그룹에서 개발한 프로그래밍 언어다. 줄리아(Julia)는 2009년 앞서 말한 앨런 에델만 4인 팀에 의해 개발되고 2012년 일반에 공개되었다. 줄리아는 고성능 수치 분석 및 계산 과학을 위해 설계된 프로그래밍 언어다. 간단한 구문으로 머신러닝, 데이터 마이닝, 대규모 선형 대수, 분산 및 병렬 계산 등 복잡한 계산을 C언어 수준으로 빠르게 처리할 수 있는 것이 장점이다.

 

줄리아는 파이썬과 여타 언어, 그리고 과학 컴퓨팅 및 데이터 프로세싱에 쓰이는 애플리케이션의 단점에 대처하도록 의도되었다. 팀은 “우리는 욕심이 많다”라고 말했다. 그들은 더 많은 것을 원했다. 줄리아 공동창시자들은 2012년 발표한 논문에서 줄리아를 다음과 같이 정의했다.

 

테크니컬 컴퓨팅은 보통 과학이나 수학 분야에서 활용되는 기술이다. 매트랩은 테크니컬 컴퓨팅 분야에서 자주 쓰이는 대표 언어다. 줄리아 공식 블로그는 “너무 욕심이 많아서 줄리아를 만들었다”라고 표현했다. 여기서 말하는 욕심이란 다양한 언어의 장점을 한데 모으고 싶었다는 의미다. 줄리아를 만든 공동 창시자들은 매트랩, R, 리스프, 파이썬, 루비, 펄, 매스매티카, C 언어 등에 관심을 두었다. 줄리아 창시자들은 이러한 언어의 장점을 모으는 데 집중했다. 가령 루비언어의 동적 프로그래밍이라든지 C언어의 빠른 속도같은 요소를 줄리아에 담으려고 노력했다는 얘기다.

 

현재 줄리아는 1.4버전 까지 나온 상태이다. 1.4버전은 깃허브에서 무료로 다운받아 사용할 수 있으며 윈도, 맥OS, 리눅스, 프리BDS를 지원한다.

 

 

https://juliakorea.github.io/ko/latest/index.html

 

홈 · 줄리아 언어

개발 버전의 줄리아 문서입니다.

juliakorea.github.io

 

Julia 특징

- 해석되는 것이 아니라 컴파일됨: 더 빠른 런타임 성능을 위해 LLVM 컴파일러 프레임워크를 사용해 JIT(just-in-time) 컴파일된다. 최상의 상태에서는 C의 속도에 근접하거나 맞먹는다.


- 대화형: 파이썬과 비슷한 대화형 명령줄인 REPL(read-eval-print loop)이 제공된다. 일회용 스크립트와 명령어를 빠르게 바로 입력할 수 있다.


- 간단한 구문: 줄리아 구문은 파이썬과 비슷하다. 간결하지만 표현이 풍부하고 강력하다.


- 동적인 유형 지정과 정적인 유형 지정의 장점 결합: 변수의 유형을 지정할 수 있다. 예를 들어 무부호 32비트 정수는 'unsigned 32-bit integer'로 정의한다. 또한, 특정 유형의 변수를 처리하는 일반 사례가 허용되는 유형의 계층도 만들 수 있다. 예를 들면, 정수의 길이를 지정하거나 부호를 붙이지 않고도 정수를 수락하는 함수를 작성할 수 있다. 유형 지정이 필요 없으면 아예 안 할 수도 있다.


- 파이썬, C, 포트란(Fortran) 라이브러리 호출 가능: C 또는 포트란으로 작성된 외부 라이브러리와 직접 접속할 수 있다. 파이콜(PyCall) 라이브러리를 통해 파이썬 코드와 접속하는 것도 가능하고 심지어 파이썬과 줄리아 간 데이터 공유도 가능하다.


- 메타프로그래밍 지원: 줄리아 프로그램은 다른 줄리아 프로그램을 생성할 수 있으며 자체 코드를 수정할 수도 있다. 리스프 같은 언어를 떠올리게 하는 방식으로 가능하다.


- 모든 기능을 갖춘 디버거 보유: 줄리아 1.1에서 디버깅 스위트가 공개됐다. 로컬 REPL로 코드 실행, 결과 사이 이동, 변수 점검, 코드에 중단점 추가 등을 할 수 있다. 코드로 생성된 함수를 통한 이동과 같은 섬세한 작업도 할 수 있다.

Julia 장점(파이썬 대비 줄리아 장점)

줄리아는 원래 과학 및 수치 연산을 위해 설계되었다. 따라서 줄리아가 연관 응용 분야에서 여러 유리한 기능을 가진 것은 새삼스러울 게 없다. 

• 빠르다. 줄리아는 JIT 컴파일과 유형 선언문에 의해 순수하고 최적화되지 않은 파이썬에 비해 언제나 훨씬 월등하다. 파이썬은 외부 라이브러리, 써드파티 JIT 컴파일러(PyPy), 사이썬(Cython) 같은 툴에 의한 최적화로 더 빨라질 수 있다. 그러나 줄리아는 처음부터 더 빠르도록 설계되었다. 

• 수학 친화적 구문으로 만들어졌다. 줄리아는 매트랩, R, 매스매티카(Mathematica), 옥타브(Octave) 같은 과학 연산 언어 및 환경을 이용하는 사람을 주요 대상으로 한다. 줄리아의 수학 연산 구문은 컴퓨팅 세계 외부에서 작성된 수학 공식처럼 보인다. 따라서 프로그래머가 아닌 사람이 선택하기가 더 용이하다. 

• 자동 메모리 관리 기능이 있다. 파이썬과 마찬가지로 줄리아는 메모리를 할당하고 비우는 일로 이용자에게 부담을 주지 않는다. 나아가 가비지 컬렉션(garbage collection)에 대한 수동 제어 수단을 제공한다. 따라서 줄리아로 전환하더라도 파이썬이 주는 일반적 편의를 놓치거나 하지는 않는다. 

• 줄리아는 우월한 병렬성을 제공한다. 수학 및 과학 컴퓨팅은 일정 기기, 특히 다중 코어 상에서 전체 리소스를 활용할 수 있을 때 성장한다. 파이썬과 줄리아는 병렬 연산을 수행할 수 있다. 그러나 파이썬의 병렬 연산 방식은 스레드나 노드 사이의 데이터 직렬화 및 역직렬화를 필요로 한다. 반면 줄리아의 병렬화는 한층 정교하다. 아울러 줄리아의 병렬화 구문은 파이썬보다 덜 무거워서 사용하기가 더 용이하다.  

• 줄리아는 자체적인 네이티브 머신러닝 라이브러리를 개발 중이다플럭스(Flux)는 줄리아의 머신러닝 라이브러리이고, 보편적 응용 분야를 위한 여러 모델 패턴을 보이고 있다. 전적으로 줄리아로 작성됐기 때문에 이용자는 필요할 때마다 이를 수정할 수 있고, 또한 줄리아의 독창적인 적시 컴파일링에 의해 프로젝트를 전체적으로 최적화할 수 있다. 

Python 장점(Julia 대비)

줄리아는 처음부터 데이터 과학을 위해 의도된 반면 파이썬은 데이터 과학으로 진화했다고 볼 수 있다. 파이썬은 데이터 과학자에게 몇몇 매력적인 이점을 제공한다. 아래와 같은 이유에서 ‘범용’ 파이썬이 데이터 과학 작업을 위한 더 나은 선택지가 될 수 있다. 

• 파이썬은 제로-기준 어레이 인덱싱을 이용한다. 파이썬, C 등 대다수 언어에서 어레이의 첫 요소는 ‘제로(0)’이다. 예를 들어 파이썬의 경우 문자열의 첫 문자는 ‘string[0]’이다. 줄리아는 1 기준 어레이 인덱싱을 이용한다. 이는 우연이 아니다. 대다수의 수학 및 과학 애플리케이션, 예를 들어 매스매티카 등이 1 기준 인텍싱을 이용하고, 줄리아는 이들을 의도해서 만들어졌다. 줄리아에서 ‘실험적 기능’을 통해 제로 인덱싱을 지원하는 것은 가능하다. 그러나 1-인덱싱 기본값은 깊이 뿌리내린 프로그래밍 습관을 지닌 일반 이용자가 이를 채택하는 것을 방해할 수 있다. 

• 시작할 때 오버헤드가 더 적다. 줄리아 프로그램보다 파이썬 프로그램이 더 느릴 수 있다. 그러나 파이썬의 런타임 자체는 더 가볍고, 따라서 파이썬 프로그램이 시작하고 최초의 결과를 전달하는 데 더 적은 시간이 걸리는 것이 보통이다. 또한 JIT 컴파일링은 줄리아 프로그램의 실행 속도를 빠르게 해주지만, 대신 시작 시간은 오래 걸린다. 줄리아의 시작 속도를 개선하기 위해 많은 작업이 진행되었지만, 파이썬이 여전히 우월하다.  

• 완성도가 높다. 줄리아 언어는 젊다. 줄리아는 불과 2009년부터 개발되기 시작했다. 그 과정에서 상당한 피쳐 천(feature churn)을 겪었다. 이와 대조적으로 파이썬은 30년 가까운 역사를 가지고 있다. 

• 파이썬은 월등히 많은 써드파티 패키지가 있다. 파이썬이 가진 최대의 매력 가운데 하나라면 파이썬 진영의 써드파티 패키지의 다양성과 유용성이다. 다시 한번, 상대적으로 짧은 역사인 줄리아 진영의 소프트웨어는 아직도 소규모다. 이는 부분적으로 기존의 C 및 파이썬 라이브러리 이용으로 상쇄된다. 그러나 줄리아가 성장하려면 자체 라이브러리가 있어야 한다. 플럭스(Flux), 케이넷(Knet) 같은 라이브러리는 줄리아가 머신러닝과 딥러닝에 유용하도록 만들어주지만, 작업의 대부분이 텐서플로나 파이토치를 통해 이뤄지는 실정이다. 

• 수백만 명에 이르는 이용자. 대규모 열혈 활성 커뮤니티가 없으면 언어는 무용지물이다. 줄리아 커뮤니티는 열성적이고 성장 중이다. 그러나 여전히 파이썬 커뮤니티에 비하면 작은 조각에 불과하다. 파이썬의 거대한 커뮤니티는 거대한 이점이다. 

• 파이썬은 빨라지고 있다. 파이썬 인터프리터의 향상은 물론이고 (멀티-코어 병렬 프로세싱 등) 파이썬은 가속하기가 더욱 쉬워지고 있다. 마이픽(mypyc) 프로젝트는 타입 주석이 달린 파이썬을 사이썬 보다 훨씬 더 원활하게 네이티브 C로 변환한다. 이는 일반적으로 4배의 성능 향상을 가져오고, 순수 수학 연산에서는 이보다 훨씬 더 높은 성능을 발휘한다. 

Julia를 공부할 때 참고할 수 있는 자료

 

 

 

 

출처

http://www.bloter.net/archives/232986

http://www.ciokorea.com/news/154013#csidx8ef5eacd5624607916d60ee128a5126 

http://www.itworld.co.kr/news/126216

 

 

반응형