
버전 14.3 Wolfram Desktop 시스템에서 Wolfram Compute Services를 즉시 활성화하려면 다음을 실행하세요.
(해당 기능은 Wolfram Cloud 에서 자동으로 제공됩니다 .)
계산 확장
Wolfram 언어 로 계산을 수행했다고 가정해 보겠습니다 . 이제 이를 1000배 이상으로 확장하고 싶을 수도 있습니다. 오늘 저희는 이를 위한 매우 간소화된 방법을 출시했습니다. 확장된 계산을 RemoteBatchSubmit 으로 래핑하여 새로운 Wolfram Compute Services 시스템 으로 전송하기만 하면 됩니다 . 그러면 1분, 1시간, 1일 또는 그 이상 후에 완료 알림이 표시되고 결과를 확인할 수 있습니다.
수십 년 동안 저는 크고 복잡한 계산( 주로 과학 분야 ) 을 자주 해야 했습니다 . 방대한 데이터, 수백만 건의 사례, 만연한 계산 불가역성 등으로 인해 제 집에는 아마 대부분의 사람들보다 더 많은 컴퓨팅 자원이 있을 겁니다. 요즘은 약 200개 정도의 코어가 있죠. 하지만 많은 밤에는 그 모든 컴퓨팅 자원을 밤새도록 켜두곤 합니다. 그래도 여전히 더 많은 컴퓨팅 자원이 필요합니다. 오늘부터 누구나 쉽게 해결할 수 있는 방법이 있습니다. 바로 Wolfram Compute Services로 계산을 원활하게 전송하여 어떤 규모로든 처리할 수 있도록 하는 것입니다.
거의 20년 동안 Wolfram 언어에는 ParallelMap 과 ParallelTable 과 같은 내장 함수가 있어 하위 계산을 즉시 병렬화할 수 있었습니다. 하지만 이를 실제로 확장하려면 연산 능력이 필수적입니다. 이제 새로운 Wolfram Compute Services 덕분에 누구나 바로 사용할 수 있습니다.
Wolfram Compute Services를 가능하게 하는 기본 도구는 수년 동안 Wolfram 언어에 존재해 왔습니다. 하지만 Wolfram Compute Services가 이제 하는 일은 모든 것을 하나로 통합하여 매우 간소화된 올인원 환경을 제공하는 것입니다. 예를 들어, 노트북에서 작업하며 계산을 구성한다고 가정해 보겠습니다. 마지막으로 확장하려는 입력을 제공합니다. 일반적으로 이 입력은 계산의 이전 단계에 많은 종속성을 갖습니다. 하지만 그런 것에 대해 걱정할 필요는 없습니다. 확장하려는 입력을 RemoteBatchSubmit 에 전달하기만 하면 Wolfram Compute Services가 모든 종속성을 자동으로 처리합니다.
그리고 또 한 가지: Wolfram 언어의 모든 함수와 마찬가지로 RemoteBatchSubmit 은 숫자 표에서 이미지, 그래프, 사용자 인터페이스, 비디오 등 무엇이든 표현할 수 있는 기호 표현식을 처리합니다. 즉, 얻은 결과는 Wolfram Notebook에서 아무런 가져오기 작업 없이 즉시 사용할 수 있다는 뜻입니다.
좋아요, 그렇다면 어떤 종류의 머신에서 실행할 수 있을까요? Wolfram Compute Services는 다양한 계산과 예산에 적합한 다양한 옵션을 제공합니다 . 가장 기본적인 1코어 8GB 옵션은 "자신의 머신에서 계산을 가져오는" 데 사용할 수 있습니다. 현재 최대 약 1500GB까지 메모리가 더 큰 머신을 선택할 수도 있고, 현재 최대 192개까지 코어가 더 많은 머신을 선택할 수도 있습니다. 하지만 더 큰 규모의 병렬 처리를 원한다면 Wolfram Compute Services가 그 또한 처리할 수 있습니다. RemoteBatchMapSubmit은 여러 머신에서 여러 코어에서 실행되는 여러 요소에 함수를 매핑할 수 있기 때문입니다.
간단한 예
좋아요, 아주 간단한 예를 하나 들어보겠습니다. 얼마 전 제가 했던 과학 수업 에서 따온 것입니다 . 클러스터에 겹치지 않는 오각형을 무작위로 추가하는 PentagonTiling 함수를 정의합니다 .

20개의 오각형의 경우 내 컴퓨터에서는 다음을 빠르게 실행할 수 있습니다.

하지만 오각형 500개라면 어떨까요? 계산 기하학은 어렵고 시간이 너무 오래 걸려서 제 컴퓨터를 사용하고 싶지는 않네요. 하지만 이제 다른 방법이 있습니다. 바로 Wolfram Compute Services를 사용하는 것입니다!
그리고 제가 해야 할 일은 RemoteBatchSubmit 에 계산을 입력하는 것뿐입니다 .

즉시 작업이 생성되고 (모든 필수 종속성이 자동으로 처리됨) 작업이 실행 대기열에 추가됩니다. 그리고 몇 분 후, 다음과 같은 이메일을 받게 됩니다.

얼마나 걸릴지 몰라서 다른 일을 하러 나갔습니다. 그런데 잠시 후, 제 작업이 어떻게 진행되고 있는지 궁금해서 이메일의 링크를 클릭했더니 대시보드로 이동했습니다. 작업이 성공적으로 실행되고 있는 것을 확인할 수 있었습니다.

나는 다른 일을 하러 나갔다가 갑자기 이메일을 받았다.

완료되었습니다! 메일에는 결과 미리보기가 있습니다. Wolfram 언어 세션에서 결과를 표현식으로 얻으려면 이메일에서 다음 줄을 계산하면 됩니다.

이제 이것은 내가 작업할 수 있는 계산 가능한 객체입니다. 예를 들어 컴퓨팅 영역입니다.

또는 구멍을 세는 것:

대규모 병렬 처리
Wolfram Compute Services의 가장 큰 장점 중 하나는 대규모 병렬 처리를 쉽게 사용할 수 있다는 것입니다. 수백 개의 코어에서 병렬로 계산을 실행하고 싶으신가요? Wolfram Compute Services를 사용하세요!
최근 제 작업에서 나온 예시를 하나 보여드리겠습니다. 정확히 100단계의 "수명"을 갖는 패턴을 생성하는 셀룰러 오토마타 규칙을 찾고 있습니다. 여기서는 10,000개의 무작위 규칙을 테스트하고 있는데, 몇 초밖에 걸리지 않지만 아무것도 찾지 못했습니다.

100,000개의 규칙을 테스트하려면 ParallelSelect를 사용하여 노트북의 16개 코어에서 병렬로 실행할 수 있습니다.

아직 아무것도 없네요. 좋아요, 그럼 1억 개의 규칙을 테스트해 보는 건 어떨까요? 그럼 Wolfram Compute Services를 사용할 차례입니다. 가장 간단한 방법은 여러 개의 코어(여기서는 현재 제공되는 최대 코어 수인 192개)가 있는 머신을 요청하는 작업을 제출하는 것입니다.

몇 분 후, 작업이 시작된다는 메일이 왔습니다. 잠시 후 작업을 확인해 보니 여전히 실행 중입니다.

저는 다른 일을 하러 나갑니다. 그리고 몇 시간 후, 작업이 완료되었다는 메일이 옵니다. 그리고 이메일에 미리보기가 있는데, 네, 몇 가지를 찾았습니다.

나는 결과를 얻었다:

그리고 여기 있습니다. 계산 우주에서 우리가 수행한 수억 개의 테스트에서 추출한 규칙입니다.

하지만 이 결과를 두 시간 안에 얻고 싶다면 어떻게 해야 할까요? 그렇다면 훨씬 더 많은 병렬 처리가 필요할 것입니다. 실제로 Wolfram Compute Services를 사용하면 RemoteBatchMapSubmit 을 사용하여 병렬 처리도 가능합니다. RemoteBatchMapSubmit 은 ParallelMap 의 향상된 버전이라고 볼 수 있습니다. 즉 , 길이에 관계없이 모든 목록에 함수를 매핑하고, 필요한 계산을 여러 머신에 있는 코어에 분산하고, 관련된 데이터와 통신을 확장 가능한 방식으로 처리하는 것입니다.
RemoteBatchMapSubmit은 "순수한 맵 "이므로 계산을 약간 재배열해야 합니다. 즉 , 1000개의 무작위 인스턴스에서 선택하는 100,000개의 사례를 실행해야 합니다.

시스템은 10만 개의 케이스를 316개의 개별 "자식 작업"으로 분산하기로 결정했습니다. 여기서 각 작업은 자체 코어에서 실행됩니다. 작업의 진행 상황은 어떨까요? 다음과 같이 동적 시각화를 통해 현재 상황을 확인할 수 있습니다.

그리고 작업이 완료되었다는 메일을 받는 데는 몇 분이 걸리지 않습니다.

그렇습니다. 이 결과를 얻기 위해 3분만 기다렸지만, 모든 코어를 합친 총 컴퓨터 시간은 약 8시간입니다.
이제 Catenate를 사용하여 내가 생성한 모든 개별 부분을 결합하여 모든 결과를 검색할 수 있습니다 .

그리고 물론, 조금 더 비용을 들이고 싶다면 100,000을 더 큰 숫자로 늘려서 더 큰 검색을 실행할 수 있습니다. 그러면 RemoteBatchMapSubmit 과 Wolfram Compute Services가 원활하게 확장될 것입니다.
모두 프로그래밍 가능합니다!
Wolfram 언어와 관련된 모든 것과 마찬가지로 Wolfram Compute Services는 완전히 프로그래밍 가능합니다. 작업을 제출할 때 설정할 수 있는 다양한 옵션이 있습니다. 사용할 머신 유형을 선택할 수 있는 RemoteMachineClass 옵션은 이미 살펴보았습니다. 현재 선택 가능한 옵션은 " Basic1x8 " (1코어, 8GB)부터 " Basic4x16 " (4코어, 16GB)까지, "병렬 컴퓨팅" " Compute192x384 " (192코어, 384GB) 및 "대용량 메모리" " Memory192x1536 " (192코어, 1536GB)까지 다양합니다.
기계 종류에 따라 사용하는 크레딧 수가 다릅니다. 통제 불능 상태를 방지하기 위해 TimeConstraint (최대 시간(초)) 및 CreditConstraint (최대 사용 크레딧 수) 옵션을 설정할 수 있습니다.
알림 기능이 있습니다. 기본적으로 작업 시작 시 이메일 한 통과 완료 시 이메일 한 통이 전송됩니다. 각 작업에 이름을 지정할 수 있는 RemoteJobName 옵션이 있어 특정 이메일이 어떤 작업에 대한 것인지, 웹 대시보드에서 해당 작업이 어디에 있는지 더 쉽게 파악할 수 있습니다. (작업 이름을 지정하지 않으면 할당된 UUID로 참조됩니다.)
RemoteJobNotifications 옵션을 사용하면 어떤 알림을 받고 싶은지, 어떻게 받을지 설정할 수 있습니다. 작업 상태가 변경될 때마다, 특정 시간 간격으로, 또는 특정 크레딧이 사용되었을 때 알림을 받을 수 있습니다. 이메일이나 문자 메시지로 알림을 받을 수 있습니다. 작업 크레딧이 소진될 예정이라는 알림을 받으면 Wolfram 계정 포털 에서 언제든지 크레딧을 충전할 수 있습니다.
쿼리할 수 있는 작업 속성은 여러 가지가 있습니다. 핵심 속성 중 하나는 "EvaluationResult" 입니다 . 하지만 예를 들어 " EvaluationData " 는 관련 정보의 전체 연결을 제공합니다.

작업이 성공하면 "EvaluationResult" 만으로도 충분할 가능성이 높습니다. 하지만 문제가 발생하면 "JobLogTabular" 와 같이 작업에 발생한 세부 정보를 쉽게 분석할 수 있습니다 .
시작한 모든 작업을 알고 싶다면 웹 대시보드를 살펴보면 되지만, 다음에서 작업의 상징적 표현을 얻을 수도 있습니다.

이러한 작업 객체에 대해 속성을 요청할 수 있으며, 예를 들어 RemoteBatchJobAbort를 적용하여 작업을 중단할 수도 있습니다.
작업이 완료되면 결과는 Wolfram Compute Services에 저장되지만, 제한된 기간(현재 2주) 동안만 저장됩니다. 물론 결과를 얻은 후에는 CloudPut [ expr ]을 사용하여 Wolfram Cloud에 저장하는 등 매우 쉽게 영구적으로 저장할 수 있습니다. (결과를 영구적으로 저장하려는 경우 RemoteBatchSubmit 내에서 바로 CloudPut을 실행할 수도 있습니다 .)
Wolfram Compute Services의 프로그래밍 방식 활용에 대해 이야기해 보겠습니다. 일주일에 한 번 컴퓨팅 집약적인 보고서를 생성한다고 가정해 보겠습니다. 그러면 Wolfram Cloud에서 실행되어 Wolfram Compute Services의 작업을 시작하는 예약 작업을 배포하기 위해 매우 높은 수준의 Wolfram 언어 함수를 여러 개 조합할 수 있습니다.

물론입니다. 데스크톱이나 클라우드 등 모든 Wolfram 언어 시스템에서 Wolfram Compute Services 작업을 시작할 수 있습니다.
그리고 더 많은 것이 나올 것입니다…
Wolfram Compute Services는 많은 사람들에게 매우 유용할 것입니다. 하지만 실제로는 Wolfram 언어의 활용 방식을 넓히기 위한 훨씬 더 광범위한 기능 집합의 일부일 뿐입니다.
Mathematica와 Wolfram 언어는 1988년에 데스크톱 시스템으로 시작되었습니다 . 하지만 아주 초기에도 한 컴퓨터에서 노트북 프런트 엔드를 실행하고 다른 컴퓨터에서 " 원격 커널 "을 갖는 기능이 있었습니다. (그 당시에는 전화선을 통한 통신을 비롯한 여러 기능을 지원했습니다!) 2008년에는 ParallelMap 및 ParallelTable 과 같은 내장 병렬 계산 기능을 도입했습니다. 그런 다음 2014년에는 Wolfram Cloud를 도입했습니다. 둘 다 웹에서 Wolfram Notebooks 의 핵심 기능을 복제 하고 인스턴트 API 및 예약된 작업 과 같은 서비스를 제공했습니다. 그 후 얼마 지나지 않아 Wolfram Cloud의 프라이빗 버전인 Enterprise Private Cloud를 도입했습니다 . 2021년에는 고성능 API를 제공하기 위해 Wolfram Application Server를 도입했습니다 (현재 Wolfram|Alpha 등에 사용하는 서버입니다 ). 그 과정에서 2019년에는 Wolfram Engine을 Wolfram Language의 간소화된 서버 및 명령줄 배포로 도입했습니다 . Wolfram Engine을 기반으로 로컬 네트워크에서 Wolfram Engine 기능을 제공하기 위해 WSTP 서버를 구축했고 , WolframScript를 도입하여 배포 방식에 구애받지 않고 명령줄 스타일의 Wolfram 언어 코드를 실행할 수 있도록 했습니다. 2020년에는 AWS 및 Azure 와 같은 클라우드 서비스와 함께 사용할 수 있는 RemoteBatchSubmit 의 첫 번째 버전을 출시했습니다 . 하지만 Wolfram Compute Services와는 달리, 이 기능은 클라우드 서비스를 통해 직접 프로비저닝 하고 라이선스를 설정해야 했습니다. 그리고 마침내 Wolfram Compute Services에서 이러한 작업을 자동화했습니다.
좋습니다. 그럼 다음은 무엇일까요? 중요한 방향 중 하나는 곧 출시될 Wolfram HPCKit입니다. 자체 대규모 컴퓨팅 시설을 보유한 조직에서 RemoteBatchSubmit 등에 대한 자체 백엔드를 설정할 수 있도록 하는 것입니다. RemoteBatchSubmit 은 매우 일반적인 방식으로 구축되어 다양한 " 배치 계산 공급자 "를 플러그인할 수 있습니다. Wolfram Compute Services는 처음에는 "WolframBatch" 라는 하나의 표준 배치 계산 공급자만 지원하도록 설정됩니다 . HPCKit을 사용하면 조직에서 자체 컴퓨팅 시설을 구성하여 배치 계산 공급자 역할을 할 수 있도록 할 수 있습니다(종종 Wolfram Compute Services의 도움을 받아). 이를 통해 Wolfram Compute Services의 간소화된 환경을 온프레미스 또는 조직 컴퓨팅 시설로 확장하고, 종종 다소 번거로운 작업 제출 프로세스를 자동화할 수 있습니다(개인적으로 말씀드리자면, 1970년대에 사용했던 메인프레임 작업 제어 시스템과 많이 비슷합니다).
Wolfram Compute Services는 현재 순전히 일괄 처리 환경으로 설정되어 있습니다. 하지만 Wolfram 시스템 내에서는 동기식 원격 계산을 지원할 수 있으며, Wolfram Compute Services를 확장하여 이를 제공할 계획입니다. 예를 들어, 대용량 또는 특수한 원격 머신에서 원격 커널을 원활하게 실행할 수 있습니다.
하지만 이건 미래를 위한 것입니다. 오늘 저희는 Wolfram Compute Services의 첫 번째 버전을 출시합니다. 이 서비스를 통해 모든 Wolfram 언어 계산에 "슈퍼컴퓨터 성능"을 즉시 사용할 수 있게 됩니다. 저는 이 서비스가 다양한 Wolfram 언어 사용자에게 매우 유용할 것이라고 생각합니다. 저도 이 서비스를 자주 사용하게 될 것 같습니다.










