줄리아 : 어떻게 지내고 있는지 재고


19

나는 다양한 유형의 통계 작업에 대한 R / Python의 대안으로 Julia에 대해 매우 좋은 토론을 한 2012 년 질문을 보았습니다.

여기 Julia의 약속에 관한 2012 년의 원래 질문이 있습니다.

불행히도 Julia는 당시 매우 새롭고 통계 작업에 필요한 툴킷은 다소 원시적이었습니다. 버그가 해결되었습니다. 배포판을 설치하기가 어려웠습니다. 등등.

누군가 그 질문에 대해 매우 적절한 의견을 제시했습니다.

이것은이 질문에 대한 답을 뒷받침하기까지 5 년이 걸릴 것이라고 말했다. 현재 Julia는 일상적인 사용자를 위해 R과 경쟁 할 수있는 통계 프로그래밍 시스템의 다음과 같은 중요한 측면이 부족합니다.

이제 2015 년이되었고 3 년이 지났으므로 사람들이 줄리아가 어떻게했다고 생각하는지 궁금했습니다.

언어 자체와 전체 줄리아 생태계에 대한 풍부한 경험이 있습니까? 알고 싶습니다.

구체적으로 특별히:

  1. 통계 도구를 처음 사용하는 사용자에게 Julia를 통해 R을 배우도록 조언 하시겠습니까?
  2. Julia에게 어떤 통계 사용 사례를 추천 하시겠습니까?
  3. R이 특정 작업에서 느리다면 Julia 또는 Python으로 전환하는 것이 합리적입니까?

참고 : 2015 년 6 월 14 일에 처음 게시되었습니다.


2
최근에 살펴본 결과 통계 패키지의 깊이에 깊은 인상을 받았습니다. 내가 실수하지 않으면 파이썬도 해석되므로 R과 비슷한 한계가 있습니다. 줄리아의 매력은 추가 속도와 병렬화에 대한 더 나은 액세스의 약속이라는 것을 알았습니다.
DWin

3
Julia의 문제는 SciPy가 계속 나아지고 있으며 이제는 Torch도 혼합되어 있다고 생각합니다. 빠르며 멋진 기능 오버로딩 기능이 있더라도 아무도 과학적 컴퓨팅 언어를 배우고 싶지 않습니다.
shadowtalker

4
Julia는 잘 디자인되고 멋진 언어이지만 제 생각에는 너무 늦게 도착했습니다. 단일 노드 매트릭스 계산 트레인은 오랫동안 지났습니다. Julia는 본질적으로 Fortran 2.0이며 몇 가지 멋진 기능이 있지만 점점 클라우드 컴퓨팅으로 전환함에 따라 Scala, Clojure 및 Python과 같은 기능적 언어를 어느 정도까지 제공 할 수있는 것은 거의 없습니다. Julia가 10 년 전의 현 상태에 있었다면 엄청난 성공을 거둘 수있었습니다.
Marc Claesen

2
파이썬과 Rcpp는 정말 역동적으로 발전하고 있으며, R은 점점 더 많은 관심을 받고 있습니다 (R 컨소시엄, Microsoft 등) Julia가 따라 잡기가 힘들 것 같습니다 ...
Tim

1
Julia의 비즈니스 사례를 보지 못했지만 여전히 그렇지 않습니다. 프로그래머가 이미 존재하는 것을 다시 작성하려는 중복 시도처럼 보였습니다.
Aksakal

답변:


15

나는 Julia로 전환했으며 다음은 실용적인 이유입니다.

  • 접착제 코드를 정말 잘합니다. MATLAB에는 많은 레거시 코드가 있으며 MATLAB.jl 은 설치하는 데 5 분이 걸렸고 완벽하게 작동하며 MATLAB 함수를 자연스럽게 사용할 수있는 간결한 구문을 가지고 있습니다. Julia는 R, Python, C, Fortran 및 기타 여러 언어에서도 동일합니다.
  • 줄리아는 병렬 처리를 정말 잘합니다. 다중 프로세서 (공유 메모리) 병렬 처리뿐만 아니라 다중 노드 병렬 처리에 대해서도 이야기하고 있습니다. 각 노드가 느리기 때문에 너무 자주 사용되지 않는 HPC 노드에 액세스 할 수 있으므로 Julia를 사용해보기로 결정했습니다. @parallel을 루프에 추가하고 기계 파일을 말함으로써 시작했으며 5 노드를 모두 사용했습니다. R / Python에서 해보십시오. MPI에서는 처음 시도 할 때 몇 분이 아니라 작동하는 데 시간이 오래 걸립니다.
  • Julia의 벡터화는 빠르며 (대부분의 다른 고급 언어보다 빠름) 벡터화되지 않은 코드는 거의 C 빠릅니다. 따라서 과학 알고리즘을 작성하는 경우 일반적으로 MATLAB으로 먼저 작성한 다음 C로 다시 작성합니다. Julia를 사용하면 한 번 작성한 다음 컴파일러 코드를 제공하고 5 분 후에는 빠릅니다. 그렇지 않더라도 자연스럽게 느껴지는 코드를 작성하면 제대로 실행될 것입니다. R / Python에서는 좋은 벡터화 버전을 얻기가 어렵다고 생각해야합니다 (나중에 이해하기 어려울 수 있음).
  • 메타 프로그래밍은 훌륭합니다. 당신이 "언어로 ______ 할 수 있으면 좋겠다"고 생각했던 횟수를 생각해보십시오. 매크로를 작성하십시오. 보통 누군가가 이미 가지고 있습니다.
  • 모든 것이 Github에 있습니다. 소스 코드 패키지. 코드를 읽기 쉽고, 개발자에게 문제를보고하고, 무언가를 수행하는 방법을 찾거나 패키지를 직접 개선하는 방법을 알려줍니다.
  • 그들은 정말 좋은 도서관이 있습니다. 통계의 경우 최적화 패키지에 관심이있을 것입니다 (JuliaOpt는이를 관리하는 그룹입니다). 숫자 패키지는 이미 최고 수준이며 개선되고 있습니다.

즉, 나는 여전히 Rstudio를 좋아하지만 Atom의 새로운 Juno는 정말 좋습니다. 더 이상 개발이 심하지 않고 안정적 ​​일 때 플러그인의 용이성 때문에 Rstudio보다 더 나은 것으로 볼 수 있습니다 (예 : hidpi 화면에 적합한 플러그인이 있습니다). Julia는 지금 배우기에 좋은 언어라고 생각합니다. 지금까지 잘 작동했습니다. YMMV.


3 년이 지났으므로이 답변을 업데이트 하시겠습니까?
Bayequentist

1
나는 여기에 업데이트 된 응답을했다 : scicomp.stackexchange.com/questions/10922/...를 . 어쩌면 그것은 복사되어야합니다.
Chris Rackauckas

11

"Y를 통해 X를 배우십시오"가 질문을 공식화하는 올바른 방법이 아니라고 생각합니다. 실제로, 당신은 (적어도 기본 사항) 배우고 구체적인 작업에 따라 올바른 도구를 결정할 수 있습니다. Julia는 다른 언어에서 대부분의 구문과 개념을 물려 받았으므로 실제로 이해하기 쉽습니다 (파이썬뿐만 아니라 R에 대해서도 똑같이 말할 수는 없지만).

어떤 언어가 어떤 작업에 더 적합한가요? 이 도구에 대한 나의 경험을 바탕으로 다음과 같이 평가했습니다.

  • 들어 순수한 통계 연구 REPL 및 스크립트의 부부와 함께 할 수있는, R은 완벽한 선택이 될 것으로 보인다. 이 도구는 통계 용으로 특별히 설계되었으며 가장 긴 도구 사용 내역과 아마도 가장 큰 통계 라이브러리 세트를 가지고 있습니다.

  • 당신이 할 경우 통합 (또는, 예를 들어, 기계 학습)에 통계를 생산 시스템 , 파이썬은 더 나은 대안처럼 보인다 : 그것은 멋진 웹 스택이있는 범용 프로그래밍 언어로, literaly 모두를위한 대부분의 API와 라이브러리에 바인딩 에서 웹을 폐기3D 게임을 만드는 .

  • Julia 에서 고성능 알고리즘 을 작성하는 것이 훨씬 쉽습니다 . C / C ++가 지원하는 SciKit Learn 또는 e1071 과 같은 기존 라이브러리 만 사용하거나 결합해야하는 경우 Python 및 R을 사용하는 것이 좋습니다. 그러나 빠른 백엔드 자체의 경우 Julia는 시간을 절약 할 수 있습니다. Python 또는 R이며 C / C ++에 대한 추가 지식이 필요하지 않습니다. 예를 들어, Mocha.jl 은 순수 Julia 딥 러닝 프레임 워크 Caffe 에서 다시 구현합니다. Caffe 는 원래 Python의 래퍼로 C ++로 작성되었습니다.

  • 또한 일부 라이브러리는 일부 언어로만 제공된다는 것을 잊지 마십시오. 예를 들어 Python만이 컴퓨터 비전을위한 성숙한 생태계를 가지고 있으며 일부 모양 일치 및 trasnformation 알고리즘은 Julia에서만 구현되며 R의 의학 통계에 대한 독특한 패키지에 대해 들었습니다.


나는 대부분의 사람들이 하나를 선택하고 대부분 그 언어를 유지하려고 노력해야한다고 말하고 싶습니다. 적어도, 적어도 여러 언어를 사용하면, 그 방식으로 많은 시간을 잃어버린 언어를 혼합하게됩니다.
kjetil b halvorsen

1
고성능 알고리즘 작성의 역설적 인 문제는 R 또는 Julia와 같은 고급 언어로 작성하기는 쉽지만 실제로 고성능 알고리즘을 작성할 때 C ++과 같은 것을 사용하는 것을 좋아한다는 것입니다. 아니면 그저 나일 수도 있습니다.
Cliff AB

3

(b) 어떤 종류의 통계 사용 사례에 대해 Julia에게

(c) R이 특정 작업에서 느리다면 Julia 또는 Python으로 전환하는 것이 합리적입니까?

높은 차원과 계산 집약적 인 문제.

  • 멀티 프로세싱. Julia의 단일 노드 병렬 기능 ( @spawnat)은 파이썬보다 훨씬 편리합니다. 예를 들어 파이썬에서는 REPL에서 map reduce 다중 처리 풀을 사용할 수 없으며 병렬화하려는 모든 기능에는 많은 상용구가 필요합니다.

  • 클러스터 컴퓨팅. Julia의 ClusterManagers패키지를 사용하면 코어가 여러 개인 단일 시스템과 거의 동일한 컴퓨팅 클러스터를 사용할 수 있습니다. [ ClusterUtils의 스크립팅과 같은 느낌을 주면서 놀고 있습니다 ]

  • 공유 메모리. Julia의 SharedArray객체는 파이썬의 동등한 공유 메모리 객체보다 우수합니다.

  • 속도. 내 Julia 구현은 난수 생성 및 선형 대수 (멀티 스레드 BLAS 지원)에서 R 구현보다 (단일 기계) 빠릅니다.
  • 상호 운용성 Julia의 PyCall모듈을 사용하면 래퍼없이 파이썬 생태계에 액세스 할 수 있습니다. 예를 들어 이것을 사용합니다 pylab. R과 비슷한 것이 있지만 시도하지 않았습니다. 또한이 ccallC / 포트란 라이브러리.
  • GPU. Julia의 CUDA 래퍼는 파이썬 의 CUDA 래퍼 보다 훨씬 더 많이 개발되었습니다 (체크했을 때 R은 거의 존재하지 않았습니다). 줄리아에서 파이썬보다 외부 라이브러리를 호출하는 것이 훨씬 쉽기 때문에 이것이 계속 될 것이라고 생각합니다.

  • 생태계. Pkg모듈은 github를 백엔드로 사용합니다. 패치를 제공하거나 소유자가 책임을 전가하는 것이 훨씬 간단하므로 Julia 모듈의 장기 유지 관리성에 큰 영향을 미칠 것으로 생각합니다.

  • σ

큰 문제에 대한 빠른 코드 작성은 병렬 컴퓨팅에 점점 더 의존 할 것입니다. 파이썬은 본질적으로 병렬 비 친화적 (GIL)이며 R의 네이티브 멀티 프로세싱은 존재하지 않는 AFAIK입니다. Julia는 파이썬 / R / Matlab의 느낌을 많이 유지하면서 성능 코드를 작성하기 위해 C로 드롭 다운하지 않아도됩니다.

Python / R에서 나온 Julia의 주요 단점은 핵심 기능 이외의 문서가 부족하다는 것입니다. 파이썬은 매우 성숙하고 문서에서 찾을 수없는 것은 일반적으로 스택 오버 플로우입니다. R의 문서 시스템은 비교가 매우 좋습니다.

(a) 통계 도구를 처음 사용하는 사용자에게 Julia를 통해 R을 배우도록 조언 하시겠습니까?

예, (b) 부분의 사용 사례에 적합하면 사용 사례에 많은 이기종 작업이 포함 된 경우

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.