Thursday, January 25, 2018

김동률, 답장 - 고마워요.

새로운 음악을 기다리고 - 손가락을 꼽지는 않았다, 거리가 있는 곳까지 가서 매장을 둘러보다 무심히 사고, 하루이틀 가방 속에 묵혀 두었다가 - 세월은 하수상하고 나는 무의미로 시간의 지층을 만들기에 여념이 없기에 - 피로에 쓰러지기 전에 플레이어에 걸어 본다.

다행이다. 다섯 곡. 삼십분이 되지 않는다. 어제처럼 이불도 없이 쓰러져 잠들지는 않을 거 같아. 그냥 고마운 마음.

오래된 팬들을 위한 최고의 선물은, 그가 변함없이 그의 음악을 한다는 소식일 것이다. 이런 이야기는 온통 노란색으로 번쩍이는 일간지에서도 읽을 수 있겠지만, 더 나은 방법은 음악. 그리고 노래. 그래서 그의 음성에서 전해지는, 그러니까 앨범을 손에 들고 헤드폰을 뒤집어 쓰며 느껴지는 짐작일테다.

그는 여전히 그의 음악을 하고 있어 보였다. 그래서 행복하길,

김동률, 답장.
Thanks.


Monday, November 27, 2017

이동진 독서법 - 을 읽고

닥치는 대로 / 끌리는 대로 / 오직 / 재미있게 / 이동진 독서법

난 본디 성질이 고약하고 성격이 평범하지 않아서 쉽게 열광을 하지 못 한다. 그래서 누군가의 팬이 된다는 건 참으로 힘든 일인데, 그럼에도 불구하고 몇몇의 생각과 행동을 쫓곤 한다. 그 중 한 사람이 이동진이다. 열성적인 팬의 입장이 될 때도 종종 있는데, 그런 경향은 그가 朝鮮日報 문화부 기자일 때부터 유지되고 있다.

특히, '출발 비디오 여행!'의 한 코너에서 심야 단독 방송이 되었던 '영화는 수다다'를 좋아했고, 지금 진행 중인 '이동진의 빨간책방'은 시작이후 한 편도 놓치고 있지 않다. 그는 영화를 전문으로 다루는 문화부 기자였고, 그 이후에도 영화 평론가의 삶을 현재까지 유지하고 있지만, 음악 애호가이자 책벌레로도 유명하다.

그 책벌레가 '독서법'을 담은 책을 냈을 때 난 신기했고 - 고유의 독서법이 있을 법 하지도 않을 뿐더러 그것으로 수필을 엮을 만한 성격도 아니어서 아마도 그냥 심심한 책읽기에 대한 단상(斷想)이겠지 생각하긴 했지만 - 궁금했다. 그래서 사 읽었다.


책은 당연히 재미가 있지는 않았고, 분량도 적은 편이다. 하지만, 몇 가지 대목에서 나와의 공통점을 발견하고 같은 고민에 시간을 보낸 사람으로서 즐겁기는 했다.

‘저의 서재에는 물론 다 읽은 책도 상당하지만 끝까지 읽지 않은 것도 많습니다. 서문만 읽은 책도 있고 구입 후 한 번도 펼쳐보지 않은 책들도 있습니다. 그런데 저는 그것도 독서라고 생각합니다. 책을 사는 것, 서문만 읽는 것, 부분 부분만 찾아 읽는 것, 그 모든 것이 독서라고 생각합니다.’ p.13.

‘오늘날 많은 문화 향유자들의 특징은 허영심이 없다는 게 아닐까 생각하고는 합니다. 각자 본인의 취향에 강한 확신을 갖고 있고 그렇기 때문에 그 외 다른 것에 대해 무관심하거나 배타적이기까지 합니다. 그만큼 주체적이기도 하지만 뒤집어서 이야기하면 도약할 수 있는 가능성이 줄어든다고도 할 수 있겠죠' p.18.

가 대표적이다, 나머지는 기억에 오래 남지 않을 여러가지 신변잡기라고 여겨졌다. 그래도 팬으로서 그의 얼굴이 멋지게 그려져 있는 ‘빨간' 책 하나를 책장에 꽂아두는 일은 가치가 있다 하겠다.

Monday, October 23, 2017

데이비드 보위: 그의 영향 - 을 읽고


데이비드 보위: 그의 영향 - 은 전형적인 정신없는 잡문들의 묶음이다. 조금 배웠다는 사람들의 허위와 위선으로 가득찼으며, 독자들은 잘 알지 못 할 단편적이고 주관적 지식과 익숙한 것들을 낯설게 만들기 위해 애쓴 작가의 흔적을 쉽게 발견할 수 있다.
그렇다, 영미권 지식인의 전형적인 배설이다.

데이비드 보위의 열성적인 편이라 하여도 굳이 읽어야 할 이유를 찾기 힘들겠다. 그냥 멋진 보위의 얼굴이 표지인 이 책을 장식으로 쓴다면, 책값 15,000원이 적당한지 한 번 더 자문할 필요가 있다.

David Bowie에게 이부형제, Terry Burns가 있었고 조현병을 앓았다는 사실을 알게 된 것 이외에 특별히 기억나는 부분이 없다. 아주 불행히도 말이다.

Wednesday, May 24, 2017

겟 아웃, GET OUT (2017)


영화 '겟 아웃'은 영화사에서 제공하는 트레일러가 완전한 스포일러이다.

초반부터 뿌려대는 '익숙한' 빵부스러기를 트레일러로 쉽게 조합하여 빨간망토를 벗어던지며 기-승-전-결 모두 예상할 수 있었다. 이런 영화의 묘미는 의외의 이야기 전개에 있다면, 이 영화는 홍보과정에서 실패했다.

정치적 의미, 그들의 사회적 입장과 만든이의 주장이 어떻게 함축되고 상징으로 스며있는지를 생각하기도 전에 미지근한 청량음료를 계속 먹는 느낌이었다. 어디선가 본 듯한, 이미 알고 있는 듯 한, 좋은 원작이 있는 듯 한 - 그러한 불편. 난 끝없이 밀려드는 지루함에 몸을 배배 꼬았고, 로튼 토마토토마토 지수를 앞으로는 믿지 않기로 했다.


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 S822LC for HPC
IBM S822LC for HPC

– 이런 제품을 고객과 이야기를 해 보면, 실제로 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 에 crossposting 됩니다.
관련 글: 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/