International Essays

즉시 활용 가능한 슈퍼컴퓨팅: Wolfram Compute Services 시작하기

원문 게시물

연산 규모 확장하기

Wolfram 언어로 어떤 계산을 수행했다고 가정해 보겠습니다. 이제 그 계산을 1,000배, 혹은 그 이상으로 확장해야 하는 상황이 왔다고 합니다. 바로 이러한 요구를 위해, 오늘 우리는 계산 규모 확장을 극도로 간결하게 수행할 수 있는 새로운 방법을 공개했습니다. 확장하고자 하는 계산을
RemoteBatchSubmit
으로 감싸기만 하면, 해당 작업은 즉시 새롭게 도입된 Wolfram Compute Services 시스템으로 전송됩니다. 이후 몇 분 후이든, 한 시간이든, 혹은 하루가 지나든 상관없이, 작업이 완료되는 즉시 알림을 통해 결과를 확인할 수 있습니다.
저는 수십 년 동안 주로 과학 연구를 위해 대규모이면서 계산량이 많은 작업을 수행해 왔습니다. 방대한 데이터, 수백만 개의 사례, 그리고 통제하기 어려운 계산적 비가역성이라는 조건 속에서 말입니다. 현재 기준으로 보면, 제 개인 연산 환경만 해도 약 200코어에 달해, 일반적인 사용자보다 훨씬 많은 컴퓨팅 자원을 보유하고 있다고 할 수 있습니다. 그럼에도 불구하고, 밤새 모든 연산 자원을 밤새 가동하고도 여전히 추가적인 계산 능력이 필요하다고 느낀 경우가 적지 않습니다. 이제는 상황이 달라졌습니다. 오늘부터는 누구나 계산을 매끄럽게 Wolfram Compute Services로 전송함으로써, 사실상 규모의 제약 없이 연산을 수행할 수 있게 된 것입니다.
지난 20여년 동안 Wolfram 언어에는
ParallelMap
,
ParallelTable
과 같이 하위 계산을 즉시 병렬화할 수 있는 내장 함수가 존재해 왔습니다. 그러나 이러한 기능이 진정한 의미의 계산 규모 확장으로 이어지기 위해서는, 무엇보다도 충분한 연산 자원이 필수적이었습니다. 그리고 이제는 새롭게 도입된 Wolfram Compute Services 덕분에 그 연산 자원을 누구나 즉시 확보할 수 있게 되었습니다.
Wolfram Compute Services를 가능하게 하는 기반 도구는 사실 이미 수년 전부터 Wolfram 언어에 존재해 왔습니다. 그러나 Wolfram Compute Services가 새롭게 제공하는 핵심 가치는, 이러한 요소를 모두 하나로 통합하여 극도로 간결한 올인원 경험을 제공한다는 점에 있습니다. 예를 들어, 노트북 환경에서 계산을 단계적으로 구성하고 있다고 가정해 보겠습니다. 그리고 마침내 그중 일부 입력을 대규모로 확장해 실행하고자 하는 시점에 이르렀다고 합시다. 일반적으로 이러한 입력은 앞선 계산 단계에 대한 다양한 의존성을 포함하고 있습니다. 하지만 이 과정에서 사용자가 의존 관계를 직접 관리할 필요는 전혀 없습니다. 확장하고자 하는 입력을 그대로 RemoteBatchSubmit에 전달하기만 하면, Wolfram Compute Services가 모든 의존성을 자동으로 처리해 줍니다.
또 한 가지 중요한 점이 있습니다. RemoteBatchSubmit은 Wolfram 언어의 다른 함수와 마찬가지로 기호 표현식을 다룬다는 것입니다. 이러한 기호 표현식은 수치 테이블부터 이미지, 그래프, 사용자 인터페이스, 비디오에 이르기까지 사실상 모든 것을 표현할 수 있습니다. 그 결과 계산 결과는 별도의 가져오기 과정 없이, 즉시 Wolfram 노트북 환경에서 그대로 활용할 수 있습니다.
그렇다면 어떤 종류의 머신에서 계산을 실행할 수 있을까요? Wolfram Compute Services는 계산의 성격과 예산에 따라 선택할 수 있는 다양한 옵션을 제공합니다. 가장 기본적인 옵션은 1코어, 8GB 메모리를 제공하며, “로컬 머신의 계산을 분리해 실행”하는 용도로 적합합니다. 더 많은 메모리가 필요한 경우에는 현재 약 1,500GB까지 지원되는 고용량 메모리 머신을 선택할 수 있으며, 더 많은 코어가 필요한 경우에는 현재 최대 192코어까지 제공됩니다. 여기서 더 나아가, 훨씬 대규모의 병렬 처리가 필요한 경우에도 Wolfram Compute Services는 이를 지원합니다.
RemoteBatchMapSubmit
을 사용하면 임의의 개수의 요소에 대해 함수를 매핑하면서, 여러 머신에 걸쳐 임의의 수의 코어를 활용한 계산을 실행할 수 있습니다.

간단한 예시

아주 간단한 예시를 하나 살펴보겠습니다. 이는 제가 얼마 전 수행했던 과학 연구에서 나온 사례이기도 합니다. 먼저, 겹치지 않는 오각형을 무작위로 클러스터에 추가하는 PentagonTiling이라는 함수를 정의합니다.
PentagonTiling[steps_Integer]:=Module{unit,init,res},​​unit=Polygon[N@CirclePoints[5]];init=
[◼]
AddCandidates

[◼]
InitializePolygonAggregation
[{unit},{{1}},unit];DiscretizeGraphicsGraphicsNest
[◼]
RandomAddPolygon
,init,steps["Tiling"]
오각형이 20개 정도라면, 제 로컬 머신에서도 빠르게 실행할 수 있습니다.
In[]:=
PentagonTiling[20]
Out[]=
그렇다면 오각형을 500개로 늘리면 어떨까요? 이 경우 계산 기하학 문제는 훨씬 복잡해고, 실행 시간도 상당히 길어져 개인용 머신을 작업에 장시간 묶어 두기 어려워집니다. 하지만 이제는 다른 선택지가 있습니다. 바로 Wolfram Compute Services를 활용하는 것입니다.
필요한 작업은 아주 간단합니다. 계산을 RemoteBatchSubmit에 전달하기만 하면 됩니다.
In[]:=
RemoteBatchSubmit[PentagonTiling[500]]
Out[]=
RemoteBatchJobObject
Provider:
Wolfram Batch »
Job type: Single
Job UUID: 1cf0b642-8a88-4fc5-b0e2-59ce2d16c25d
Input: PentagonTiling[500]
Submitted at: Tue 18 Nov 2025 12:08:32 GMT-6

그러면 즉시 작업이 생성되고, 필요한 모든 의존성은 자동으로 처리된 채 실행 대기열에 올라갑니다. 그리고 몇 분 뒤, 이메일 한 통을 받게 됩니다.
실행에 시간이 정확히 얼마나 걸릴지는 알 수 없으므로, 그동안 다른 일을 하러 갑니다. 그러다 작업 진행 상황이 궁금해지면, 이메일에 포함된 링크를 클릭하여 대시보드로 이동하면, 작업이 문제없이 실행 중임을 확인할 수 있습니다.
이후에도 다시 다른 일을 하다 보면, 어느 순간 또 한 통의 이메일을 받게 됩니다.