Showing posts with label candyfloss. Show all posts
Showing posts with label candyfloss. Show all posts

Tuesday, April 25, 2017

전문가 대담: 눈 앞으로 다가온 기계학습의 시대와 GPU 컴퓨팅

한국 IBM의 유부선 상무를 만나 Machine Learning/Deep Learning의 연산 플랫폼으로 새로이 관심이 집중되고 있는 GPU 컴퓨팅과 인공지능의 현재와 미래에 대하여 전반적인 이야기를 나누었다. 그 중에 GPU 컴퓨팅을 바탕으로 co-processor 그리고 시장에 새로이 소개된 기술과 이를 기반하는 시장의 전망까지의 인터뷰를 정리하여 여기에 싣는다. 대화 중에 등장한 전문용어는 이해를 돕기 위해 설명을 겯뜨렸다.

유부선 상무는 1996년 한국IBM에 입사했다. 이후 현재까지 기술영업 최일선에서 일하고 있으며, IBM Power Systems를 바탕으로 UNIX, Linux 그리고 Big Data 및 GPU 컴퓨팅을 지원하고 있다. 한국IBM에서 최고 엔지니어로 평가받고 있으며, 두터운 고객의 신뢰는 그 증거이다.

X X X X X

– GPU computing이란 무엇인가요?

> GPU를 이용한 컴퓨팅을 말합니다. 여러가지 병렬단순계산 작업을 GPU를 이용해서 가속화하는 컴퓨팅, 대표적인 것으로는 과기연산용 HPC 업무 및 금융 관련 위험 관리 업무 등에서의 대규모 계산 등이 있습니다. 최근에는 Machine Learning/Deep Learning (기계학습(機械學習)/심층학습(深層學習), 이하 ML/DL) 쪽이 각광받고 있습니다.

본 대화에서 언급되는 GPU는 GPGPU(General Purpose Graphic Processing Unit)를 말한다. 영상 출력을 담보하지 않는 일반연산용 GPU이다. 이에 대한 일반적인 설명은 이전 글을 참조하면 좋겠다.

– GPU 컴퓨팅을 말할 때 '병렬'과 '가속'이라는 표현이 항상 함께 등장합니다. 그렇다면, GPU 컴퓨팅에서 이 두가지에 대하여 특별한 능력을 발휘한다는 뜻으로 해석도 가능하다고 보는데요, 이런 '병렬'과 '가속'을 목적으로 하는 연산에서 반드시 GPU를 사용해야 할 이유가 있나요? 혹은 다른 유용한 방식 또한 존재하나요?

> 일단 GPU가 하는 일을 모조리 CPU가 해도 되고, 어떤 경우에는 CPU가 할 때 더 빠른 경우도 꽤 많습니다. 단지 계산이 단순한데, 굉장히 많이 병렬화 할 수 있다면, GPU를 활용하는 것이 더 빠르고 더 저렴하게 할 수 있겠습니다. 하여 GPU가 주목받게 된 이유이고, 병렬화 할 수 있는 것이 많지 않다면 CPU로 연산하는 것이 더 좋은 결과를 가져올 때도 있습니다.

– 그럼에도 불구하고 GPU를 많이 언급하는 것은 아무래도 효율이 더 좋아서 그런 것인가요?

> 결국 효율의 문제이고, 더 빠르게 더 적은 비용으로 할 수 있다면 어떤 방식의 하드웨어를 선택하든 문제는 없습니다.

– 일반적으로 GPU의 스펙을 보면, core 수가 엄청나게 많은 걸 알 수 있습니다, 앞서 말씀하신 업무의 특성과 관계를 보면, 어떤 설계의 방식이 반영되었기 때문에 그런 효율을 내고, 이렇게 많은 core를 집적화 활 수 있는 것인가요? 그리고 CPU의 core와 GPU의 core는 결정적으로 다른 점이 무엇일까요?

> 현대적인 CPU는 막연히 clock speed가 높다 cache가 많다 – 그런 것 뿐만 아니라, core내에서 병렬화를 통합 성능 향상을 위해 CPU의 하드웨어 instruction set을 설계할 때 branching이라든가 predication이라든가 여러가지가 구현되어 있습니다. 그에 비해 GPU는 그런 것들이 생략된, SIMD같은 '단순연산'을 하는데 최적화된 core를 가지고 있어요.

Branch: 브랜치(branch)는 컴퓨터가 다른 명령 시퀀스를 실행하기 시작하게 하여 명령을 순서대로 실행하는 기본 동작에서 벗어나는 컴퓨터 프로그램의 명령이다. 브랜치(또는 분기 된 브랜치)는 또한 분기 명령을 실행 한 결과로서 실행을 다른 명령 시퀀스로 전환하는 단계를 포함한다. 분기 명령어는 조건부에 따라 분기를 수행하는 무조건 부 분기 또는 분기를 유발할 수도 있고, 하지 않을 수도 있는 조건 분기일 수 있습니다. 분기 명령은 프로그램 루프 및 조건(즉, 특정 조건이 충족되는 경우에만 특정 명령 시퀀스를 실행)에서 제어 흐름을 구현하는 데 사용된다. https://en.wikipedia.org/wiki/Branch_(computer_science)

Predication: 컴퓨터 과학에서 프레디케이션(Predication)은 조건부 분기 명령어의 대안을 제공하는 아키텍처 기능이다. 프레디케이션은 브랜치의 두 경로 모두에서 명령을 실행하고 취해진 경로의 명령 만 아키텍처 상태를 수정할 수 있게 한다. 취해진 경로의 명령어는 명령어가 아키텍처 상태를 수정할 수 있는지 여부를 제어하기 위해 명령어가 사용하는 부울 값 인 술어로 연결 (예측)되어 있기 때문에 아키텍처 상태를 수정할 수 있다. https://en.wikipedia.org/wiki/Branch_predication

SIMD: Single Instruction, Multiple Data를 의미한다. 마이클 플린이 분류(Flynn's Taxonomy)한 컴퓨터 아키텍처의 한 종류로, 단수의 명령어로 다수의 값을 동시에 계산하는 병렬연산의 한 방식이다. https://en.wikipedia.org/wiki/SIMD

SIMD2.svg
By Vadikus - Own work, CC BY-SA 4.0, Link

– 그렇다면, '단순연산'과 그렇지 않은 연산, 즉 '복잡연산'의 차이를 어떻게 구분할 수 있을까요?

> 가장 쉬운 건 if/then 즉, 조건문이 들어 가느냐? 아니냐? 로 구분하는 것이 제일 좋을 듯 합니다. 만약 새로 들어온 값이 10보다 크냐? 작으냐? 에 따라서 연산하는 것은 복잡한 연산으로 GPU에 적합하지 않구요, 그냥 테이블이 100만개 칸이 있는 행렬이 두 개 있는데, 같은 칸 끼리 동시에 더하거나 곱하거나 빼거나 나누거나 하는 게 단순연산이고, GPU에 맞죠.

– GPU에 대해서 찾아보면 co-processor라는 말이 항상 따라오고, 부동소수점연산이라는 말도 함께 쓰이는 것을 알 수 있었습니다, 그럼 GPU는 co-processor이고, 하는 일은 부동소수점연산이다 – 라고 봐도 무관할까요?

> 반드시 그런 것은 아닙니다. 지금까지 GPU가 주로 한 일이 과학기술에 관련된 연산이나 금융업에서 크고 작은 숫자를 계산하는데 사용되었기 때문에 부동소수점계산이 언급되는데, 주로 쓰임이 그렇다 보니 그 방향으로 개발되어 왔고 현재 그렇게 널리 사용될 뿐입니다.

초기 microprocessor는 부동소수점 연산을 위한 능력을 따로 갖추고 있지 않았다. 이를 위해 다른 하드웨어 장치를 사용하기도 했다. Co-processor가 바로 그것이다. PC 수준에서 이와 같은 이야기는 아마도, Intel의 오래된 CPU를 기억해 낸다면, 바로 그것이다. 486DX, 486SX등의 이름으로 시장에 나왔다. 이 중 SX가 부동소수점 연산을 위한 설계가 반영되지 않은 제품이었고, DX가 이를 반영한 제품이었다. 상대적으로 SX가 저렴 했으며, 일반 PC 사용자에게 부동소수점연산의 이점이 크게 없었음으로 많은 판매가 이루어졌다. 또한 Intel은 487SX과 같은 co-processor를 따로 판매하기도 하였는데, 'Math CoProcessor'라는 이름으로 시장에 알렸다. 486SX를 사용하다가 나중에 이를 추가할 수 있었다. 이를 위한 소켓도 마더보드에 위치해 있었다.

KL Intel i487SX.jpg
By Konstantin Lanzet (with permission) - CPU collection Konstantin Lanzet, received per EMail, CC BY-SA 3.0, Link

– co-processor 시장을 보면, Nvidia의 Tesla, Intel의 Xeon-Phi가 눈에 띕니다. Tesla와 Xeon-Phi은 어떤 점에서 차이를 설명할 수 있을까요?

> 같은 역할을 수행한다는 점에서는 비슷하다고 말할 수 있겠습니다. 하지만, 전혀 다른 제품입니다. 차이점은 소프트웨어 쪽에서 쉽게 찾을 수 있는데요, Nvidia는 CUDA라는 개발환경이 제공되고 현재는 산업표준처럼 시장에서 인식하고 있습니다, Nvdia의 GPU는 CUDA에 '당연히' 최적화 되어 있습니다. 그에 비해, Xeon-Phi는CUDA과 비견할 만한 에코-시스템이 없는 형편입니다. 그리고 Xeo-Phi는 Intel CPU의 기존 core들을 굉장히 단순화하여 집적화 시킨, 그러니까 기존 x86 CPU에서 크게 변화하지 않은 점을 들 수 있겠습니다.
대신 Xeon-Phi는 특이하게, co-processor mode로만 쓰이는 것이 아니라, host mode로도 사용할 수 있습니다. 기존의 x86 플랫폼의 OS를 그대로 사용할 수도 있다는 뜻입니다. 물론 성능은 대단히 좋지 않다고 들었습니다.

– 하나의 co-processor card를 co-processor mode와 host mode로 전환해서 사용할 수 있다는 이야기인가요?

> co-processor로 쓸 수 있는 하드웨어와 host로 쓸 수 있는 하드웨어는 서로 다릅니다. 상호 전환해서 쓸 수 있는 건 아닙니다. 재미있는 점은, Xeon-Phi 이야기를 많이 들어보기는 했지만, 지금까지 만나온 여러 고객들 중에 Xeon-Phi를 ML/DL에 사용하는 경우를 보지 못 했다는 것입니다.

Intel의 Xeon-Phi는 자사의 Atom 프로세서와 같은 core 기반으로 만든다고 한다. Intel Xeon Phi는 processor와 Coprocessor로 명명된 제품이 있다. 공식 명칭에서 이렇게 구분하는 것처럼, Xeon Phi Processor는 운영체제를 직접 동작시킬 수 있는 host로 사용되고, Xeon Phi Coprocessor는 co-processor로 컴퓨팅 시스템의 PCIe Slot에 장착된다.

Intel Xeon Phi Coprocessor © Intel

Intel Xeon Phi Processor로 구성된 compute server © Intel

– ML/DL에 관한 글을 찾아보면 GPU에 대한 언급이 아주 많습니다. 세계적인 ML/DL 권위자인 Andrew Ng[吳恩達]의 강의를 봐도 GPU의 역할에 대하여 언급하고 있습니다. 이 둘의 관계는 앞서 말씀해 주신 '단순연산' 영역에서 GPU가 탁월하고 ML/DL은 그러한 '단순연산'의 영역에 있는 컴퓨팅이기 때문이라고 이해하도 될까요?

> ML/DL에 반드시 GPU를 사용해야 하는 건 아닙니다. 어떤 대규모 neural network을 운영하는 곳에서 CPU를 더 많이 사용한다는 이야기도 있습니다. 아시다시피 Google 같은 곳은 TPU를 자체 제작하여 쓰고 있기도 합니다. 다만, GPU를 널리 언급하는 것은 그것이 비용효율적이기 때문이라고 전 이해하고 있습니다.

– 결국 하드웨어 중심의 특별한 기술적인 장점보다는 어떤 기술의 도입이든 성능대비 비용효율이면 ML/DL에서 좋은 시스템이라고 판단할 수 있겠군요. 그렇다면, 최근 IBM이 시장에 선보이고 있는 GPU 시스템인, S822LC for HPC는 어떤 제품입니까?

> 기술적인 장점 뿐만 아니라, 비용효율적인 운영면에서도 좋은 시스템입니다. 특히, 다른 제품에서는 해결하지 못 하고 있는 문제, GPU와 CPU 간의 병목문제를 해결한 점에서는 높은 가치가 있는 시스템이라고 할 수 있습니다.

IBM S822LC for HPC는 ML/DL을 위해 디자인 되어 있다. 2U form factor 크기인 이 시스템은 표준 19인치 랙 마운트 형식으로, GPU로는 Nvidia Tesla P100이 탑재되고 총 수량은 4개까지 수용된다. CPU는 Power8 2 소켓으로 구성되며 총 20개 혹은 24개 core 구성이 가능하고 core 당 8개 threads를 제공한다. 메모리는 32GB 구성에서 1024GB 구성까지 가능하다. 또한, 대규모 구성을 위한 수냉식 옵션도 제공한다.

운영체제로는 현재 Ubuntu가 공식 지원되며 곧 RHEL도 그 목록에 들어올 것이다.
S822LC for HP, 이 제품은 무엇보다 Nvidia가 설계한 NVLink가 최초로 반영된 시스템이다. 이 NVLink는 기존 PCIe 3.0 x16 대비 5배 넓은 대역폭을 자랑하며 CPU와 GPU 그리고 GPU와 GPU를 직접(Peer-to-Peer)연결한다. 이를 통하여 ML/DL에서 항상 하드웨어의 제약으로 생각되던 PCIe 버스의 I/O 병목현상을 획기적으로 해결할 수 있다.


– 이런 제품을 고객과 이야기를 해 보면, 실제로 IBM 왓슨으로 대표되는 클라우드 컴퓨팅 기반의 intelligence services와 비교를 많이 한다고 합니다. S822LC for HPC와 클라우드 기반의 intelligence services를 단적인 차이점을 말씀해 주신다면?

> 내가 고기를 사서 고기를 구워 먹느냐? 음식점에 가서 스테이크를 시켜 먹느냐? 와 정확히 일치한다고 할 수 있습니다. 호수산 와규든 국내산 한우든 내 기호와 예산에 맞추어 직접 고기를 고를 수 있고, 무엇보다 중요한 건 굽는 방법 등을 스스로 채득하여 지적자산으로 보유할 수 있다는 것이 있겠죠. 그게 아니고, 고급 레스토랑에 가서 사 먹으면 확실히 빠른 시간 내에 더 좋은 것을 먹을 수 있긴 한데, 돈도 많이 들고 자신에게 (경험과 지식이) 쌓이는 건 훨씬 더 적겠죠.

– 가까운 미래에, GPU 혹은 GPU와 같은 co-processor가 보편적인 컴퓨팅 시스템에 전반적으로 탑재될 가능성은 있을까요?

> 그럴 가능성은 없다고 봅니다. 보편적인 컴퓨팅 유형과 co-processor가 필요한 영역은 확연히 구분됩니다. ML/DL 혹은 유사한 분야에 참여하는 기업 ⋅ 연구소⋅ 개인은 지금보다 확실히 늘어나겠죠, 그에 따른 시장도 확대되는 건 예상할 수 있겠습니다.

– Power Systems의 로드맵을 보면, 차세대 POWER CPU, POWER9에서 OpenCAPI(CAPI 3.0)와 NVLink 2.0를 동시에 사용하는 것으로 보이는데요, 이 두가지가 하나의 버스인가요? 아니면 각자의 독립된 버스를 사용하는 것인가요?

> POWER9에 사용하는 OpenCAPI와 NVLink의 차세대 2.0 버전은 같은 버스를 씁니다. 25GB/s 링크입니다. 이는 PCIe와는 관계가 없고, PCIe도 4.0으로 소개될 것입니다.

IBM 서버 컴퓨팅 플랫폼의 차세대 CPU인 POWER9은 2017년 말에 시장에 소개될 예정이다. CAPI 3.0 즉, OpenCAPI라는 IBM의 버스 기술과 Nvidia의 NVLink 2.0을 동시에 사용할 수 있을 뿐만 아니라, PCIe Gen 4도 탑재될 것으로 알려져 있다. CPU와 I/O 모두 새로운 세대로 본격 진입하게 된다. Nvidia는 NVLink 2.0을 POWER9을 통해 처음 세상에 선보이게 되고, 이 때 현재 Tesla Pascal의 다음 세대인, Tesla Volta가 시장에 나올 것으로 알려지고 있다. 이에 대한 상세한 정보는 IBM developerWorks에 소개되고 있다. CAPI에 대한 정보는 Wikipedia에 잘 정리되어 있다.

X X X X X

---
이 글은  developer.ibm.com/kr 에 cross posting 됩니다.
관련 글: https://developer.ibm.com/kr/author/jhin/
같은 글: https://developer.ibm.com/kr/systems/gpu/2017/04/25/ask-a-professional-what-is-gpu-computing-and-machine-learning-around-us/

Monday, October 24, 2016

S822LC for HPC를 만나다! GTCx Korea 2016에서

최근 하드웨어 관련 컨퍼런스에서 이렇게 사람이 많이 모여 있는 것을 본 적이 없다. 하드웨어는 이제 어셈블리나 코볼이나 포트란처럼 존재하기는 하지만 거의 잊힌, 그런 모습이었다. 하지만, GTCx Korea 2016에서는 완전히 다른 분위기였다.


IBM Power Systems S822LC for High Performance Computing. 개발 코드 이름은 Minsky. 인공지능학계에 위대한 업적을 남기신 Marvin Lee Minksy 박사님의 이름을 따서 썼다. 그 분의 별세 소식을 접한 당시 개발팀에서 애도 표하고 업적을 기리는 의미로 Minsky라는 이름을 '감히' 따서 섰다.

S822LC for HPC는 세계 최초로 NVLink가 탑재된 서버이다. 잠깐만! DGX-1이라는 Nvidia의 레퍼런스 시스템에도 NVLink가 있지 않는가? 그렇다 맞다, 하지만 S822LC for HPC는 DGX-1과는 달리 GPU to GPU NVLink가 있는 것 뿐만 아니라, 최초의 설계 사상에 따른, CPU to GPU NVLink도 탑재되어 있다. 진정한 NVLink가 동작하는 최초의 하드웨어이다.


그렇다면, NVLink라는 것이 GPU 간의 버스로 동작하면 그만이지 굳이 CPU와 GPU간의 연결 버스로 설계되어야 하는가? 그렇다. 큰 차이를 만든다. GPU를 통한 연산을 할 때 가장 큰 병목이 발생하는 구간이 CPU와 GPU 간이다. 종례의 3세대 PCIe x16를 사용할 경우 사용할 수 있는 최대 I/O 대역폭은 32GB/s, 그러나 NVLink는 80GB/s의 대역폭을 지니고 있다. NVLink는 또한, 다른 모든 I/O가 사용하는 PCIe와는 달리, CPU - GPU - GPU만을 위한 독립 버스이다. 만약 당신의 GPU 기반의 병렬연산이 그렇게 빠르지 않은 것 같은 느낌이 있다면, 바로 제대로 된 NVLink가 필요하다는 뜻이고, S822LC for HPC를 지금 써 봐야 한다는 이야기가 된다.


S822LC for HPC는 이렇게 생겼다. 사진 하단이 정면이고, 전시를 위해 상부 덮개는 제거해 두었다. 아, 전면 덮개도 떼어 놓았다. 사진에서 보이는 것과 같이 공기 흐름는 메모리 > CPU + GPU > GPU + PCIe 를 단계로 거치게 된다. 메모리 모듈이 가장 먼저 '찬 공기'를 만나는 설계이다.

앞 쪽에 4개의 팬이 있다. 우측에 검은색으로 보이는 부분은 디스크 혹은 SSD가 장착되는 SFF 베이이며, 사진 속 전시 제품은 960GB SSD 두 개가 있었다. 우측에 전원 스위치와 USB 3.0 포트도 나란히 있다.



가운데 부분은 메모리 모듈이며, DIMM 4개가 한 보드에 장착되어 시스템과 연결된다. 전시 제품은 16GB DIMM이 장착되어 있었으며, 하나의 메모리 모듈 당 4개의 DIMM이 설치 될 수 있다. 그리고 메모리 모듈은 총 8개가 시스템에 연결된다. 16GB * 4 * 8 = 512GB 메모리가 장착되어 있었다. 이 제품은 4GB · 8GB · 16GB · 32GB DDR4 DIMM을 지원하니, 최대 1TB 메모리를 장착하여 사용할 수 있다. 전시제품의 DIMM 제조사는 삼성전자.


구리색 방열판 아래에 있는 칩이 Nvidia의 Tesla P100이다. 이 시스템은 최대 4개의 P100이 장착될 수 있고, 사진 속의 시스템도 그렇다. 은색 방열판 아래에 있는 칩은 POWER8 CPU이며, 8 core 3.25GHz 또는 10 core 2.86GHz POWER8 CPU가 2개 장착된다. 앞서 강조한 NVLink를 위한 GPU 소켓이 마더보드에 있고, 바로 옆에 CPU 소켓이 설계되어야 하기에 DIMM 슬랏이 제거되고 모듈 형태로 독립된 구역에 설계되었다. 흥미로운 구조이다.


뒷면에서 보면 이런 모습이다. 두 개의 전원공급장치가 위치하고 있다, 각 1300W라고 기억한다. 사진으로는 자세히 보이지는 않지만, Mellanox에서 제작한 IB 카드와 10Gb 이터넷 카드도 장착되어 있다. IBM · Nvidia · 삼성전자 · Mellanox, OpenPOWER 재단의 주요 회원사들간의 부품들이 있는 것이다.

옆 부스에서 DGX-1도 봤다.


아랫쪽에 Intel Xeon과 DIMM이 장착되는 큰 서랍이 있고, 상부에 P100 8개가 장착되는 구조였다. 사진에서 느껴지는 것처럼 거대했다.


위 사진은 상판 덮개와 앞쪽 덮개. 자세히 보면, S822LC라는 모델명을 읽을 수 있다.

부스에서 방문객들의 질문을 받으면서 두 가지에 놀랬다. 하나는 질문의 수준이 매우 높았다는 것이고, 다른 하나는 그렇게 많은 사람이 찾아와 질문을 했다는 사실이다. 둘 다 '전혀' 예상하지 못했다. 어쩌면 이 기계는 기계가 잊힌 시대에 기억되는 기계가 될 수도 있겠다는 생각을 잠시 했다.

Tuesday, October 04, 2016

어떤 매체의 원색적인 질문에 대한, 가벼운 답변

지난 봄, 어떤 IT 매체가 내가 속한 조직의 대표자에게 질의서를 보내어 왔다. 춘계특집물이었던 것 같다. 그 질의서에서는 'UNIX와 x86의 경쟁구도'로 서버시장을 설정하고 이런 저런 그다지 중요하지 않은 질의들이 담겨 있었는데, ‘누가 클라우드 컴퓨팅 시대에 승자가 되겠는가?’라는 원색적인 질문을 내가 맡아 답변서를 적게 되었다. IT에 대한 기본 지식은 물론이거니와 시장에 대한 해안도 없어 보였고 특집에 걸맞는 질문도 어니었지만, 아무튼

나의 답신은;

(의견 요청) 클라우드 시대에 어떠한 서버 플랫폼이 궁극적인 승자가 될 것으로 보십니까?

(회신 내용) 질의하신, ‘클라우드 시대’라는 것은 일반적으로 재화를 구입하여 직간접적으로 운영하는 시대에서 벗어나 계약 기간내 사용한 컴퓨팅 자원을 탄력적으로 사용하고 그에 대한 대가를 금전으로 치루는 것을 의미할 것으로 볼 수 있습니다. 이러한 시대에 서버 플랫폼을 이야기하는 것은 매우 어색할 수 있습니다. 서비스 제공자는 사용자와의 ‘계약조건’에 적합한 IT 인프라를 구성할 것이며, 사용자는 ‘비용효율’과 ‘서비스 수준’을 고려한 선택을 하게 됩니다. 이와 같은 새로운 경제구조에서 서버 플랫폼의 CPU 아키텍쳐와 OS의 종류를 종례와 같이 고려하지는 않습니다. 따라서, ‘클라우드 시대’에 ‘어떠한 서버 플랫폼’이 마지막 ‘승자’로 예상하는 것은 유효한 판단이라고 할 수는 없을 것입니다.
현재 많은 서비스 제공자들이 8x86 CPU 아키텍쳐에서 Linux 커널 기반의 GNU 운영 시스템을 권장하고 있지만, 이것은 지금의 경향일 뿐일 수 있습니다. ARM 그리고 OpenPOWER가 좋은 대안으로 고려되고 있고, UNIX 혹은 윈도 서버 또는 우리가 아직 언급하지 않고 있는 새로운 운영체제가 각광받을 수도 있습니다. 앞서 언급한 ‘비용효율’과 ‘서비스 수준’만 만족할 수 있다면 대안은 언제든지 등장할 것입니다.
무엇보다 분명한 것은, 입시문제처럼 ‘준식’에 의거한 ‘정답’이 존재하던 시대는, 이제 끝이 났다는 점입니다.

Friday, July 22, 2016

오픈소스, OpenPOWER 그리고 GPU

변화와 혁신의 진원, 오픈소스 운동과 OpenPOWER 그리고 GPU로 여는 새로운 컴퓨팅의 세계

세상은 변하고 있습니다. 지난 세대도 지금의 세대도 앞으로의 세대도 변할 것임이 분명합니다. 이런 일반원칙이 가장 잘 적용되는 곳이 바로 IT 세계라고 생각합니다.
초기의 컴퓨팅 환경은 매우 흥미로웠습니다. 한 번의 연산을 수행하기 위하여 책상 위에서 완성한 코드가 적힌 공책을 손에 쥐고 키 입력의 순서를 기다리는 프로그래머들의 모습은 구텐베르크 혁명 이전의 시대, 세상에 몇 없던 도서관에서 중요한 서책의 한 부분의 필사를 원하는 수도사들과 다르지 않았을 것입니다. 이러한 모습은 네트워크 장치와 통신 방법의 발전과 일반화로 변하게 되었고, 많은 사람들의 협업과 세속적 이윤을 추구하기 위한 노력의 결과로 조금씩 보편화 되었습니다. 그리고 이제는 거의 모든 컴퓨터가 항상 온라인 상태를 유지하고 심지어 지금 우리의 호주머니 속에 있는 휴대전화도 매우 훌륭한 정보단말기로서의 역할을 온종일 수행할 수 있게 되었습니다.


이런 통신의 발전은 컴퓨팅이라는 일반연산 수행 방법과 결과 조회의 상황에 많은 변화를 주었습니다. 서버 없는 서버 설계가 가능하게 되었고, 소유하지 않으면서 정보를 생성하고 조회하고 가공하여 가까운 미래를 누구보다 먼저 예측할 수 있는 사업 모델을 만들어 낼 수도 있게 되었습니다. 그리고 이 발전은 매우 급진적이고 눈부셔서 당장 다음 세대를 예견하는 것은 매우 힘든 일이 되었고, 어쩌면 다음 주의 IT 헤드라인이 무엇이 된다 하여도 아무도 놀라지 않을지도 모를 일입니다.
혁신에 혁신을 더 하고 그 혁신이 창조적인 방법을 만들어 내고 창조적 방법들이 미래를 오늘날로 당겨오는 과정을 빠르고도 빠르게 진행시키는 것입니다.

그렇다면, 이런 혁신의 주체는 과연 누구일까요?
아무도 아닐 수 있을 만큼 모두가 될 수도 있습니다. 종례의 시간에는 비즈니스 리더쉽에 의존한 몇몇 독점적 특허와 판매 모델로 무장한 소수의 사람들이 부를 장악하고 그 장악력을 바탕으로 자신이 제어할 수 있는 범위 내의 새로운 제품을 시장에 소개함으로써 기술의 방향성을 설정하고 미래를 이야기할 수 있는 권리를 획득했습니다. 몇몇 건전한 기업은 이를 통하여 전인류의 복리에 기여했겠지만, 대부분의 기업은 독점적 지위에 편승한 제한된 혁신을 매력적인 제품에 차등 주입함으로써 가까운 미래를 먼 미래로 돌려 보내는 일도 서슴지 않았습니다.

하지만, 오늘날의 혁신은 이와 같지 않게 되었습니다. 전세계에 산재(散在)되어 제자백가(諸子百家)의 소리를 내던 해커들이 차근차근 이어온 오픈소스의 작은 혁명은 새로운 협업의 좋은 예로 인식되기 시작했고, 기업들은 보다 개방적 혁신을 세상에 제공하기 위하여 이러한 사상을 수용하였습니다. 그렇게 오픈소스 프로젝트는 보다 실속 있고 현실 세계의 변화를 주도하는 주효한 역할을 지속적으로 수행할 수 있게 되었습니다. 지금의 세상 지금의 IT의 혁신은 바로 이 오픈소스 운동에 기반한다고 하여도 과언은 아닐 것입니다.

오픈소스 운동은 70년대를 거치면서 자가개발 운영체제에 탄생되었다고 할 수 있습니다. 어쩌면 최초의 설치가능한 운영체제와 소프트웨어는 모두 오픈소스였다고 해도 괜찮을 것입니다. 그리고 지금도 오픈소스 운동은 소프트웨어의 발전 동력으로 평가되고 있습니다. 하지만, 오픈소스 운동은 운영체제 커널을 비롯한 각종 소프트웨어에서만 찾아볼 수 있는 것은 아닙니다. 하드웨어 그것도 가장 핵심적인 중앙처리장치(CPU)에서도 이미 진행 중입니다.


IBM은 수년 전 자사의 가장 핵심적인 기술 중의 하나인 Power 프로세서를 오픈소스로 기술을 공개했습니다. 바로 OpenPOWER가 그 이름이고, 이를 유지하기 위한  재단도 설립하였습니다. 원천기술을 제공한 IBM을 비롯한 NVIDIA, Google, Mallanox, Tyan그리고 우리에게도 익숙한 삼성전자가 함께 시작한 이 OpenPOWER는 현재, 전세계 주요 IT 회사들 뿐만 아니라 연구소 등 단체와 개인들이 참여하여 함께 꾸려가는 또 하나의 거대한 오픈소스 프로젝트가 되었습니다.

단순히 CPU 설계 기술을 공개했을 것만 같은 이 오픈소스 프로젝트는 리눅스가 기반하는 컴퓨팅의 자유를 더 넓은 세상으로 확대하게 되었고, 주요 배포판 제작사들이 모두 참여하는 든든한 바탕이 완성되었으며, 이러한 결과로 IT 인프라를 설계하고 주요 워크로드의 적절한 배치를 고민하는 기획자들에게 유효한 선택자가 되었습니다. 이에 대한 아주 좋은 사례로 Google이 자사의 IT 인프라에 OpenPOWER를 선택했다는 것에서 찾을 수도 있겠습니다.
하지만, 더 빛나는 결과는 이제 곧 펼쳐질 예정입니다.

GPU, Graphic Processing Unit은 과거 단순한 연산의 결과를 화면에 출력하는 프레임버퍼 역할에서 독자적인 연산 즉, CPU와 버금가거나 어쩌면 그에 우월하는 일반연산 영역까지 확대되고 있습니다. 이에 대하여 이견을 제시하는 사람은 아마 없을 것입니다. 1999년 이 장(章)의 첫 쪽을 멋있게 연 Nvidia는 GeForce라는 이름을 게임을 즐기는 한정 사용자 뿐만 아니라 IT에 관심을 가지지 않았던 사람들에게까지 알리는 계기가 되었고, 누구보다도 앞서서 혁신을 거듭하고 있습니다.


1999년 이후 거듭 세상을 놀라게 했던 GPU는  그래픽 출력의 영역을 일찍이 넘어 CPU와 더불어 연산의 차원을 확장하는 역할을 수행하고 있습니다. CPU의 발전의 제한을 GPU를 통하여 뛰어넘는 결과가 펼쳐지고 있는 것입니다. 이를 위하여 Nvidia는  NVLink라는 놀라운 버스 기술을 선보였고, Pascal 마이크로아키텍처를 바탕으로 하는 Telsa P100 GPU를 발표했습니다. 그리고, 이 새로운 세대의 GPU, Pascal 마이크로아키텍처를 완성하는 NVLink는 OpenPOWER 재단을 중심으로 IBM과 Nvidia의 수 년간의 협업을 통하여 완성되었으며, 곧 출시될 코드네임, Minsky로 알려진 최신 Power Systems에 세계 최초로 탑재됩니다. 오픈소스 혁신은 이렇게 하드웨어의 영역에서도 빛나는 결과를 얻게 되었습니다.

NVLink는 CPU와 GPU 간 데이터 교환을 PCIe 인터페이스를 거치지 않고 CPU와 GPU 그리고 GPU와 GPU가 직접 통신할 수 있게 설계된 새로운 버스입니다. NVLink의 최대 대역폭은 80 GB/s로, 16GB/s인 최신 PCIe 3.0 x16과 비교하여 5배 빠른 속도를 보여주고 있습니다. 하지만, 전송 bit당 소모 전력은 PCIe 버스에 비해 낮다고 알려져 있습니다.


Power Systems는 NVLink로 완성되는 GPU의 혁신을 가장 먼저 세상에 선보입니다. 서버의 최고 성능을 담보하는 고차원 컴퓨팅의 가능성을 직접 만날 수 있습니다. 특히, 미국 에너지부(Unite States Department of Energy; DoE)에서 NVLink를 기반으로 하는 'Summit'과 'Sierra'라고 알려진 두 종류의 수퍼컴퓨터를 IBM과 Nvidia를 통하여 공급받기로 계약을 했다는 보도는 제품이 아직 출시되지 않았음에도 이 기술에 대한 높은 가능성을 실증하는 사례로 일컬어지고 있습니다.

OpenPOWER 재단의 IBM과 Nvidia가 여는 새로운 컴퓨팅의 세계에서 우리는, 고성능 연산(HPC)과 딥러닝(Deep Learning)으로 이상과 현실의 경계를 보다 모호하게 만들 것이며, 먼 미래로 약속했던 발전의 이정표를 가까운 시간대로 수정하는 멋진 일을 가능하게 할 것입니다.

(어느 회사의 온라인 잡지에 수록되는 것을 전제로 청탁받아 기고한 글을 여기에도 게시함)

Monday, February 01, 2016

IBM Power Systems - PowerVC/PowerVM NovaLink

IBM Power Systems는 UNIX 기기 중에 가장 완벽하게 OpenStack을 지원되는 서버 시스템이다. PowerVC라는 가상화 관리 도구에 OpenStack API를 지속적으로 갱신하여 포함하고 있음은 물론이고 (놀랍게도 OpenStack의 릴리즈에 맞추어 꾸준히 갱신되고 있다), 지난 12월에 발표된 PowerVM NovaLink는 마치 KVM이 OpenStack Nova API에 직접 연결되는 것과 같은 경험으로 PowerVM을 운영할 수 있도록 한다.

PowerVC는 매우 뛰어난 사용자 인터페이스를 가지는 도구이다. UNIX 가상화 - 이 경우에는 PowerVM의 어려운 접근을 BUI(Browser User Interface)로 쉽게 운영할 수 있게 함은 물론이고, 여러 대의 Power Systems를 자원 풀(resource pool)로 간주할 수 있게 한다. 또한, 지원 목록에 등재된 스토리지 제품도 연결이 가능하고 FC 스위치 또한 그러한 연결을 지원할 뿐만 아니라, 별도의 전문지식 없이 서버(가상화), 스토리지, FC 네트워크를 아울러 관리할 수 있도록 해 주는 멋진 기능을 보유하고 있다.

PowerVC는, 하지만, 기존의 IBM Power Systems의 운영방식을 존중하는 방향으로 설계되었기 때문에 - 혹은 PowerVM과 Power Systems의 정해진 구성 및 운영방식으로 PowerVC 하위에 HMC(혹은 IVM)를 반드시 거느려야 하는 복잡함도 있었다. 엔터프라이즈급 서버 시스템에서는 아무런 문제가 되지 않지만, 엔트리급에서는 불필요한 투자를 해야 하는 경우도 발생할 수 있었다.

PowerVM NovaLink는 이러한 어려움을 일소하고 x86 플렛폼에서 일반적인 KVM과 같은 단계로 OpenStack에 연결되도록 IBM Power Systems를 변화시킨다. 물론, PowerVM NovaLink에서 PowerVC를 연결하여 사용할 수도 있다. IBM 하드웨어는 다양한 사용자의 운영방식을 존중하는 설계 철학이 있다.





이와 같은 변화는 IBM Power Systems를 보다 효율적이고 적극적으로 OpenStack과 연동시킬 수 있는 (또 하나의) 방식을 고려할 수 있다는 점에서 매우 발전적인 변화라고 평가할 수 있다.

아직 우리 데이터 센터에는 높은 수준의 가용성과 안정성을 추구하는 목적성에 부합되는 연산 플랫폼으로 UNIX/RISC 시스템만한 것은 없다. 여러가지 다양한 소프트웨어의 혁신적인 발전에 발맞추어 저급 저용량 저사양으로 저렴한 다수의 서버 시스템으로 새로운 방식의 데이터 센터를 꾸릴 수도 있겠지만, 엔터프라이즈급의 서비스의 요구에 부합하는 플랫폼으로써 수용하기 어려운 부분이 있다. 이러한 부분은 지금까지의 일시적인 제약일 수도 있고, 앞으로도 변하지 않는 가치의 구분일 수도 있다 - 아직은 아무도 모른다, 아직까지는.

이러한 숙제 앞에서 하이브리드 클라우드 컴퓨팅을 추구하는 계획에 있어, UNIX/RISC 시스템의 참여는 필수적이라고 할 수 있으며, 이러한 숙제를 해결하는 가장 올바른 해법을 IBM은 Power Systems에서 꾸준히 만들어 내고 있다.

IBM은 OpenStack의 이사회에 참여하는 주요 회원사이다. 그리고 IBM은 수많은 오픈소프 프로젝트를 후원하고 적극 참여하고 있다.

Friday, January 29, 2016

OpenStack - Period - Legacy

클라우드 컴퓨팅. 프라이빗, 퍼플릭, 사스, 아이아스, 파스… 지겹게 듣고 있다. IT 인프라스트럭처를 바꾸어야 한다고 말하고, 클라우드 컴퓨팅의 신기술로 세상을 선도하자고도 한다. 이런 저런 개념들이 모두 클라우드의 탈을 쓰고 소개가 되다보니 다이나믹 클라우드, 하이브리드 클라우드라는 말까지 들리어 혼란스럽기도 하지만, 이 혼란이 계속되다 보니 이제는 한결 익숙해지고 있다. 인지의 아이러니이랄까.

참, 하이브리드(Hybrid)의 원의는 아는가? 잡종이라는 뜻이다.

이런 클라우드 컴퓨팅의 난잡하여 잡종같은 개념들에서 겨우 빠져나온 IT 종사자들 앞에 놓인 한 단어는 아마도 오픈스택일 것이다. OpenStack. 美항공우주국(NASA)과 랙스페이스(Rackspace)가 주도하여 만들어낸 무엇으로 알려져 있다. 이 ‘무엇'은 어찌어찌 IaaS의 외로운 별이 되어 혼자 빛나게 되었다. 이제 ‘거의' 대안없는 프라이빗 클라우드 혹은 서비스 제공자의 클라우드 솔루션이라고 할 수 있겠다.

많은 IT 인프라 종사자들은 이 오픈스택을 새로운 기술(new technology)로 지칭한다. IT 인프라를 다른 방식으로 관리하고 현업과 IT 부서 간의 효율적인 업무처리를 가능하게 하는 기반이 되기도 하기 때문이다. 그리고 이 것을 클라우드 컴퓨팅이라고 부르기도 적당하다. 그래서, 오픈스택으로 구현되는 클라우드 컴퓨팅이 레거시(legacy)혹은 전통(traditional)적인 IT와 안녕을 고하고 새로운 시대로 진입(jump up)하는 첫번째 기술인가? 라는 질문에 절대 다수에 가까운 사람들이 ‘그렇다'라고 말한다.

과연 그러한가?

오픈스택으로 구현된 클라우드 컴퓨팅 환경을 설명할 때 가상화라는 개념을 빼놓을 수 없다. 그 가상화는 예전부터 우리 곁에 있어왔던 것이다. 물리 하드웨어, 하이퍼바이저, 가상 머신, 스토리지 가상화, 가상화된 네트워크 이 모든 것은 개별적으로 고유의 역할을 데이터센터에서 수행하고 있는 주요 컨퍼넌트이고, 이들의 쓰임은 예나 지금이나 같다. 다만, 오픈스택은 API를 통하여 이들을 묶었을 뿐이다. 물론, 자동화(automation)와 오케스트레이션(orchestration)을 가미했지만.

이런 시각에서 오픈스택은 종례 IT의 마지막 변형 혹은 진화라고 평가하고 싶다. 스마트폰의 꽃, 애플의 아이폰은 불현듯 우리의 삶을 송두리째 바꿔 놓은 것 같지만, Palm, Nokia 그리고 Research in Motion이 쌓아가고 있던 공든 탑을 새로운 시각에서 치장한 것 뿐이다. 즉, 변함없는 패러다임으로 같은 구조에 접근한 것이다. 그런 의미에서 아이폰은 지금까지 인류가 누리고 있는 손 안의 컴퓨터의 마지막일 수도 있는 것이다. 스티븐 스필버그가 블록 버스터의 시대를 본격적으로 연 감독이라고 평가되어 왔지만, 어쩌면 지난 시대의 서사와 영화적 기법이 마지막으로 꽃을 피우게 한 감독일 수도 있는 것처럼 말이다.


그렇다면, 종례와 구분되는 새로운 IT 인프라는 어떤 모습일까? 마치 메인프레임의 시대에서 오픈 시스템의 시대로 전이되고, 연산을 수행하기 위해 터미널 앞에서 줄을 서는 시대에서 시분할 컨퓨팅의 시대로 전환되는 것 같은 그런 변화 말이다.

나도 정확히 알 수는 없지만, 지금 주목하고 있는 단체는 Cloud Native Computing Foundation이다. 이들이 새로운 시대의 시작을 알리게 될지 혹은 그 시대를 앞당기는 촉매 역할을 할지는 모르겠지만, 흥미를 가지고 지켜보는 것 만으로도 충분히 즐겁다.