Openstack Summit 2018 기술 in detail

Openstack Summit에 다녀오신 분에게 데이터센터 동향에 대해 들었다.

데이터 센터는 사용자 요구와 수에 따른 유연성이 성능에 우선하는 원칙이다.
그렇기 때문에 서비스를 잘게 쪼개는 기술이 많이 있다.

1. Edge Computing
미국이나 중국의 대륙은 DC와 Edge 사이 거리가 서비스 질을 상당 좌우한다. 
그래서 소규모 DC를 분산해 배치하는 것이 좋다.
Openstack의 경우 대규모 DC를 대상으로 만들어진 프레임웤 이다. 
이를 소규모 DC용 (1-12개 노드) 로 만드는 프로젝트가 있다.
요구: 소규모, 원격으로 관리 가능
2. Container
컨테이너는 OS를 공유하는 가상화 환경이다.
APP을 여러개의 Micro 서비스 단위로 쪼개서 컨테이너 위에서 운용한다.
전통적인 VM 기반에서 운용되는 모듈도 있다.
컨테이너와 VM 기반 모듈 사이 호환이 화두이다.

3. High Performance Computing
GPU는 가상화가 안된다.
GPU를 여러 사용자 간에 나누어 쓰게 하는 방법이 논의 중
FPGA와 같은 경우엔 bare-metal 환경으로 사용자에게 제공됨, 관련된 프로젝트는 Ironic project

global cloud index 잡생각


전자 신분증 잡생각

요즘 많은 사람들이 삼성 페이 네이버 페이와 같은 모바일 폰을 이용한다. 전통적인 결제수단인 실물 카드와 현금을 모바일 페이 서비스가 대체하니 자연스럽게 지갑의 사용빈도가 낮아진다. 그 와중에 지갑을 주머니에서 치우는 걸 방해하는 물건이 있으니 신분증이다. 왜 주민등록증이나 운전면허증과 같은 신분증은 가상 인증 서비스를 받을 수 없는것일까? 전자 신분증은 불가능한가?

전자신분증의 현실화를 막는 가장 큰 장애물은 바로 보안이다. 왜냐하면 신분에 관련된 데이터는 현재 인터넷으로부터 폐쇄된 데이터 베이스에 저장되어 있는데, 전자신분증 서비스를 위해서는 이 데이터베이스를 외부 인터넷에서 접근 가능하게 만들어야 하기 때문이다.

외부 인터넷에서 접근이 가능한 데이터베이스는 잠재적인 해킹 위협에 노출된다. 모바일 페이 서비스를 제공하는 금융사의 경우에는 이에대한 방어를 위해서 실시간 보안위협 탐지 시스템을 운용한다. 그럼에도 세간에는 신용카드 관련 사기나 회원정보 탈취에 대한 소식이 끊이지 않는다.

또한 전자신분증의 도입은 한번의 해킹으로 국가기관이 관리하는 국민 신분 데이터베이스가 송두리째 도난, 변경, 유실 되는 결과른 초래한다. 데이터베이스 해킹은 동시에 수많은 사람의 정보가 공격받는다는 점에서 신분증 복제나 도난과 같은 문제에 비해 피해 범위가 넓다.



NVDLA 기술 in detail

H/W

function
1. convolution core
매핑명령어:  tf.nn.conv2d
명령어 수행에 사용되는 버퍼가 하나 Convolution Buffer.. 이놈은 포트가 4개다. 
Read Port for feature data 
Read Port for weight data 
Write Port for feature data 
Write Port for weight data
2. single data processor
매핑명령어:  tf.nn.batch_normalizationtf.nn.bias_addtf.nn.elu,tf.nn.relutf.sigmoidtf.tanh
3. planar data processor
매핑명령어:  tf.nn.avg_pooltf.nn.max_pool, and tf.nn.pool
maximum-pooling – get maximum value from pooling window. 
minimum-pooling – get minimum value from pooling window.
average-pooling – average the feature value in the pooling window. 
이 명령은 별도의 포트를 가지고 있다.. 
4. channel data processor
매핑명령어:  tf.nn.local_response_normalization
5. dedicated memory & data reshape engine
매핑명령어: tf.nn.conv2d_transposetf.concattf.slice, and tf.transpose
원본 matrix: a [[0 1 2 9 10] [3 4 5 11 12] [6 7 8 13 14]] 
  Operations: splitting - 잘라서 여러개의 matrix를 만든다. 
split(a, [2,3]) = [[0 1] [3 4] [6 7]], [[2] [5] [8]], [[9 10] [11 12] [13 14]] 
slicing - 잘라내서 한줄만 남긴다 a[:,1] = [1 4 7] 
merging - 여러개의 matrix를 합친다 
contraction - reshape transpose - Deconvolution step에서 사용. 잇풋보다 아웃풋이 큼.

mode
1. independent mode: convolution 결과를 DRAM으로 저장하고 다시 로드해서 single data processor로 보냄.
2. fused mode: 레이어간 데이터 전송을 FIFO 큐를 통해서 버퍼링하고 device 외부로 보내지 않음

configuration
1. 데이터 타입: binary; int4; int8; int16; int32; fp16; fp32; and fp64.
2. 

Signals
1. DBBIF
DRAM과 데이터를 주고 받을 때 5개의 채널이 관여한다.
- AW (Write request) channel (nvdla_core2dbb_aw_)
- AR (Read request) channel (nvdla_core2dbb_ar_)
- W (Write data) channel (nvdla_core2dbb_w_)
- B (Write response) channel (nvdla_core2dbb_b_)
- R (Read data) channel (nvdla_core2dbb_r_)

Ping-Pong register programming method
1. 데이터 처리중일 때 다음 processing을 위한 register setting을 미리 할 수 있는 방법.
2. 2개의 configuration register file이 있다. producer 레지스터 그룹의 pointer 레지스터가 어떤 레지스터 파일이 CSB로 전송될지 선택한다.
3. programming sequence
1) 먼저 CDMA_POINTER를 읽어서 CONSUMER(NVDLA로 configuration 정보를 전송)를 PRODUCER(CPU가 configuration을 진행)의 값으로 세팅 ( 데이터 가져오려는 곳 == 데이터 보내려는 곳)
2) CPU는 register group0에 configuration 정보를 세팅하고 D_OP_ENABLE의 enable bit를 세팅한다.
3) layer0에 대해 하드웨어가 processing을 진행.
4) CPU는 group1의 status를 읽어서 idle 상태인지 확인한다.
5) CPU는 PRODUCER를 1로 세팅하고 register group 1에 configuration 정보를 세팅하고 D_OP_ENABLE의 enable bit를 세팅한다.
6) CPU는 group 0의 status를 체크하고, 만약 여전히 실행 중 이라면 interrupt를 기다린다.
7) h/w가 layer 0 processing을 끝내면, STATUS는 idle이 되고 D_OP_ENABLE의 enable 비트도 clear 된다.
8) 이제 CONSUMER를 group 1으로 세팅한다. 만약 enable 비트가 set 되어있으면 ( 예시의 경우에 그렇다 ) 바로 processing이 시작된다.
9) h/w 가 done 을 보낼 때 까지 PRODUCER를 0으로 바꾸고 configuration작업을 진행한다...
--반복






S/W

flow
1. compilation tools: pre-trained caffee model ---parser ---> intermediate representation & hardware configuration --- compiler ---> network of h/w layers (NVDLA Loadable file)
2. runtime environment: 
user mode driver(UMD): NVDLA Loadable -> kernel mode driver, NVDLA 이미지 로드하고, input output 데이터를 버퍼에 위치시키고, KMD에 이걸 passing 해준다. KMD에의 passing의 경우 리눅스의 ioctl()이 있다.
kernel mode driver(KMD): scheduling layer operation & programming NVDLA configuraiton registers, KMD는 여러개의 job을 동시에 받을 수 있고 이를 스케쥴링 한다. 그 결과 특정 job을 core engine schedular로 보낸다. core engine schedular는 레이어 간의 의존성을 체크해서 작업의 순서를 결정하고 관리한다. 의존성 체크에는 dependency graph가 이용된다.
 *NVDLA Loadable = dependency information + tensors(?) + h/w configuration of each functional blocks
 *dependency graph = layer linking information (used by KMD)
 

NVDLA integrator

NVDLA h/w configuration 시에 고려사항
1. data precision을 결정하는 것.
2. MAC 유닛의 개수를 결정하는 것: 한 레이어에서 수행하야 하는 MAC operation의 개수를 통해 결정. convolution layer의 경우 mac operation의 개수는 input, output feature 개수 
3. 메모리 bandwidth를 결정하는 것: ( input 이미지를 읽어올 때, output 이미지를 내보낼 때, weight를 가져올 때 메모리 양) / (초당 전송 가능한 메모리 양)


원문 출처 -- http://nvdla.org


Weft and warf (seoul museum of art 2018-5-22) 전시회

Mankind always have lived using fabric. The clothes we wear and blankets we cover ourselves are all made of kinds of fabrics. In addition to the practical function, the fabrics works also as an art work that reflect the time and place and creativity of an artist.

Despite the role of fabric on human life is so important, the social and economical status of fabric is largely underestimated. We consider the people who is using a sewing machine as low class worker. Even if working with fabric is based on the person's highest ability, the ability to create something new, people's prejudice is robust.

At the exhibition warf and weft, the social influence of the fabric is re-examined. The fabric is used to question a labor problem. The fabric is used to ask the meaning of the life. 

And the woman problem is treated together. It's because we usually think the people who are dealing with fabrics are women. The problem of the fabric industry could be connected with the woman problem so some artist tried to think these together.

1 2 3 4 5 6 7 8