부엉이 과학 컴퓨팅
Owl Scientific Computing![]() | |
원본 작성자 | 양왕 |
---|---|
개발자 | 커뮤니티 프로젝트 |
초기 릴리즈 | 2016 |
안정적 해제 | 1.0.2 / 2022년 2월 14일;[1] 전 |
기록 위치 | OCaml, C |
운영 체제 | 크로스 플랫폼 |
유형 | 수치해석 |
면허증 | MIT |
올빼미 사이언티컬 컴퓨팅은 케임브리지 대학 컴퓨터과학기술부에서 개발된 과학 및 공학 컴퓨팅용 소프트웨어 시스템이다.[2]학과 내 시스템연구그룹(SRG)은 2010년대 SRG에서 개발된 대표적인 시스템 중 하나로 부엉이를 인정하고 있다.[3]소스 코드는 MIT 라이센스에 따라 라이센스가 부여되며 GitHub 저장소에서 액세스할 수 있다.[4]
도서관은 대부분 기능 프로그래밍 언어 OCaml로 설계되고 개발된다.OCaml은 고유한 기능 프로그래밍 언어로서 런타임 효율성, 유연한 모듈 시스템, 정적 유형 확인, 지능형 가비지 수집기, 강력한 유형 추론을 제공한다.올빼미는 OCaml에서 직접 이러한 특징을 이어받는다.올빼미(Owl)로 사용자는 성능을 희생하지 않고 간결한 기능 언어로 간결한 타입 세이프(type-safe) 숫자 어플리케이션을 쓸 수 있다.개발 라이프사이클을 앞당기고, 프로토타입에서 생산 사용까지의 비용을 절감한다.이 시스템은 OCaml에서 집중적인 작업을 계산하기 위한 사실상의 도구 역할을 한다.[5]
역사
올빼미는 량왕 박사가 OCaml 연구소에서 포스트닥으로 일할 때 개발되었다.[6]올빼미는 2016년 7월 대규모 분산 컴퓨팅을 위한 동기 병렬기계의 설계를 연구한 연구 프로젝트에서 비롯됐다.당시 OCaml 생태계의 수치 컴퓨팅 라이브러리는 매우 제한적이었으며 툴링은 그 당시에 단편화되었다.다양한 분석적 응용을 시험하기 위해서는 매우 낮은 수준의 대수학 및 난수 생성기부터 알고리즘 분화 및 심층 신경망과 같은 높은 수준의 물질에 이르기까지 많은 수치적 기능이 구현되어야 했다.이 코드 조각들은 축적되기 시작했다.이 기능들은 나중에 꺼내어 Owl이라는 독립형 도서관으로 포장되었다.
올빼미의 건축은 초기에 최소한 12번의 반복이 이루어졌고, 몇몇 건축 변화는 상당히 극적이다.1년간의 집중적인 개발 후에, 올빼미는 많은 복잡한 수작업(예: 이미지 분류)을 할 수 있었다.량왕 박사는 OCaml에서 데이터 과학을 시연하기 위해 CUFP 2017에서 튜토리얼을 개최했다.[7]2018년 교수.리처드 모티어는 앨런 튜링 연구소에서 올빼미에 대해 강연했다.[8]OCaml과 데이터 과학의 기능 프로그래밍을 더욱 촉진하기 위해, Owl은 상세한 매뉴얼의 형태로 풍부한 학습 자료를 제공한다.[9]
설계 및 기능
올빼미는 n차원 배열의 구현에 더하여 많은 고급 숫자 기능을 구현했다.다른 수치 라이브러리와 비교했을 때, 올빼미는 많은 관점에서 독특하다. 예를 들어 알고리즘 차별화와 분산 컴퓨팅이 개발자의 생산성을 극대화하기 위해 핵심 시스템에 필수 요소로 포함되었다.아래 그림은 올빼미의 시스템 건축을 조감하고 있다.왼쪽의 서브시스템은 올빼미의 수치시스템이다.이 서브시스템에 포함된 모듈은 세 가지 범주로 나뉜다.
첫 번째는 핵심 모듈들이 기본적인 데이터 구조를 포함하고 있다는 것이다. 즉, 밀도와 희박한 형태의 N차원 배열(Ndarray)이다.Ndarray 모듈은 float32, float64, complex32, complex64, int16, int32 등의 다양한 숫자 유형을 지원한다.또한, 코어 모듈은 다른 낮은 수준의 수치 라이브러리에 외부 기능 인터페이스를 제공한다. 예를 들어, CCLAS 및 LAPACK).이들 라이브러리는 선형 대수 모듈에 완전히 접속되어 있다.
두 번째 범주는 고전적인 분석 모듈이다.이 파트는 기본적인 수학 및 통계 함수, 선형 대수, 회귀, 최적화, 플로팅 등을 포함한다.통계 가설 검정과 마르코프 체인 몬테카를로 같은 고급 수학 및 통계 기능도 포함된다.핵심 기능으로서, 올빼미는 알고리즘 분화(또는 자동 분화)와 동적 계산 그래프 모듈을 제공한다.
올빼미 아키텍처에서 가장 높은 레벨은 신경망, 자연어 처리, 데이터 처리 등과 같은 좀 더 발전된 수치 응용 프로그램을 포함한다.동물원 시스템은 효율적인 스크립팅과 코드 공유를 위해 사용된다.두 번째 범주의 모듈, 특히 알고리즘 분화는 이 수준의 코드를 상당히 간결하게 만든다.
오른쪽의 서브시스템은 Owl의 기능을 병렬 및 분산 컴퓨팅으로 확장하는 Actor Subsystem이라고 불린다.사용자 애플리케이션을 순차 실행 모드에서 병렬 모드(다양한 계산 엔진 사용)로 변환하는 것이 핵심 아이디어다.방법은 두 개의 서브시스템을 펑커와 함께 구성하여 숫자 서브시스템에 정의된 모듈의 병렬 버전을 생성하는 것이다.
이 그림에서 언급된 것 외에도, 올빼미에는 몇 가지 다른 특징이 있다.예를 들어, JavaScript 및 Unikernel 백엔드, TensorFlow 및 PyTorch와 같은 다른 프레임워크와의 통합, 심볼 그래프를 통한 GPU 및 기타 가속기 프레임워크 활용 등을 들 수 있다.
리서치
올빼미 프로젝트는 연구 지향적이며, 복수의 관련 주제에서의 수치 컴퓨팅 연구를 지원한다.그것의 연구 주제 중 일부는 아래에 열거되어 있다.
- 동기식 병렬 분산형 머신 학습 설계.부엉이는 반복 알고리즘에서 노드를 동기화하기 위해 샘플링을 사용하는 것을 처음 제안한다.arxiv에 대해 출판된 작품에는 확실한 수학적 증거가 있다.[10]이 아이디어는 진보된 것으로 증명되었고 후에 최고의 머신러닝 컨퍼런스에서 제안되었다.[11]
- 올빼미의 소코드 기반에 기여하는 요인 중 하나는 알고리즘 분화를 중심으로 고급 분석 기능을 구축한다는 점이다.이 아이디어는 또한 인기 있는 것으로 증명되었고, Tifferentable 프로그래밍의 패러다임으로 발전한다.현재 줄리아디프와 같은 인기 있는 숫자 패키지에 사용되고 있다.[12]
- 계산 그래프를 사용하면 올빼미에서의 계산에 또 다른 차원 최적화를 제공한다.게다가 계산 그래프는 올빼미 어플리케이션과 GPU, TPU와 같은 하드웨어 가속기를 연결한다. 이후 계산 그래프는 사실상의 중간 표현이 된다.개방형 신경망 교환 및 신경망 교환 형식과 같은 표준은 현재 텐서플로, 파이토치 등 다양한 딥러닝 프레임워크에 의해 널리 지원되고 있다.
- 서비스 수준의 구성과 서빙에 대한 아이디어는 올빼미의 동물원 서브시스템에서 조사되었다.프로토타입은 구성, 테스트, 배포, 검증 및 배포를 포함한 코드 개발의 다양한 단계를 능률화하는 것을 보여준다.이것은 후기 MLOps 개념과 매우 유사하다.최근 이 주제는 OSDI와 같은 상위 시스템 컨퍼런스에서 주목을 받고 있다.[13]
이러한 지침의 일부를 따른 연구 결과, 올빼미는 여러 가지 간행물을 제작한다.2018년에는 ACM SIGCOMM 2018 빅데이터 분석 및 데이터 통신 네트워크용 머신러닝 워크숍에서 데이터 분석 서비스 구성 및 에지 디바이스 구축이라는 제목의 논문이 접수된다.[14]또한 국제 기능 프로그래밍 회의 OCaml Workshop 2019에서도 GPU에 대한 수치적 통상적인 미분방정식 [15]해결과 부엉이 연산 실행 등을 주제로 두 가지 회담이 수락된다.[16]OCaml Labs의 인턴십은 이미지 세분화 및 올빼미에서의 관련 메모리 최적화에 대한 주제를 조사한다.[17]2022년에는 스프링거가 <<OCaml Scientific Computing>>을 출간했다.[18]
참고 항목
참조
- ^ "Releases – owlbarn/owl". Retrieved 2020-11-11 – via GitHub.
- ^ "Owl, Scientific Computing for OCaml". Retrieved 2020-11-11.
- ^ "System Research Group". Retrieved 2020-11-11.
- ^ Owlbarn GitHub 저장소, https://github.com/owlbarn/owl.2020-11-01 검색됨
- ^ "OCamlverse: Machine Learning, Scientific Computing and Data Science". Retrieved 2020-11-05.
- ^ "OCaml Labs". Retrieved 2020-11-01.
- ^ "Owl: Data Science in OCaml". CUFP Tutorials. 2017. Retrieved 2020-11-01.
- ^ "The design of functional numerical software". Alan Turing Institute. 2018. Retrieved 2020-11-05.
- ^ "OCaml Scientific Computing: Functional Programming Meets Data Science". Owl Team. 2020. Retrieved 2020-11-18.
- ^ Wang, Liang; Catterall, Ben; Mortier, Richard (2017). "Probabilistic Synchronous Parallel". arXiv:1709.07772. Retrieved 2020-11-18.
- ^ "Distributed Learning over Unreliable Networks". Proceedings of Machine Learning Research. 2019. Retrieved 2020-11-18.
- ^ "JuliaDiff". Julia. 2019. Retrieved 2020-11-18.
- ^ "Serving DNNs like Clockwork: Performance Predictability from the Bottom Up". Usenix. 2020. Retrieved 2020-11-18.
- ^ "BIG-DAMA Workshop 2018 Programme". ACM. 2018. Retrieved 2020-11-05.
- ^ "OwlDE: making ODEs first-class Owl citizens". OCaml Workshop, ICFP 2019. 2019. Retrieved 2020-11-11.
- ^ "Executing Owl Computation on GPU and TPU". OCaml Workshop, ICFP 2019. 2019. Retrieved 2020-11-11.
- ^ "Personal Webpage, Pierre Vandenhove". 2018. Retrieved 2020-11-05.
- ^ "OCaml Scientific Computing - Functional Programming in Data Science and Artificial Intelligence". Springer. 2022. Retrieved 2022-02-15.