빅데이터 2019. 4. 23. 14:33


슈퍼컴퓨팅

거대 연산 기능의 컴퓨터로 연산의 부하가 많은 응용프로그램 이용에 사용


과학 응용 소프트웨어 예 

• 날씨 예측 

• 기후 조사 

• 분자 모델링 

• 물리 시뮬레이션 

• 양자 메카니즘 

• 기름과 기체 확산 

• 생물정보




클러스터

거대한 병렬 컴퓨팅 시스템을 설계할 때 접근 방법


1. 지리적으로 광범위한 영역에 퍼져있는 수많은 컴퓨터를 특정한 문제를 해결하기 위한 목적으로 호출하는 것(광범위)

  -인터넷과 같이 광범위한 영역의 네트워크에서 잘 작동된다.

  -분산시스템(Distributed systems)이라 한다.


2. 많은 연산 노드를 서로 인접한 거리에 위치시키는 것(근접)

  -장점으로 통신에 소요되는 시간을 절약한다.

  -연산 능력을 계산에 많이 필요한 문제를 해결 가능

  -클러스터링(clustering)이라 한다.


->슈퍼컴퓨터는 하나가 아닌 여러대를 사용하며 처리하려 한다.

아무리 좋은 컴퓨터 1대를 사용해도 사용성은 1대 이상의 능력이 나오지 않기 때문에 

여러 컴퓨터 자원을 사용하려 한다.


• 클러스터는 느슨하게 혹은 긴밀하게 종속돼 함께 동작하는 컴퓨터의 그룹이다. 

  -한 클러스터 내에 존재하는 컴퓨터를 node라고 한다.

  -한 클러스터 내에 모든 노드들은 같은 종류의 task를 수행한다.

->작업이 주어졌을 때 동시에 같은 작업을 수행하게 한다. (슈퍼컴퓨터 중요개념)

작업=task

   -모든 슈퍼컴퓨터는 클러스터이지만, 모든 클러스터는 슈퍼컴퓨터가 아니다

 


• 이종클러스터(heterogeneous cluster) 

  - 클러스터의 모든 노드가 동일한 하드웨어 구성을 갖지 않는 경우


• 베오울프클러스터(Beowulf cluster)

  - 모든 노드는 이종 클러스터와 달리 동일한 하드웨어로 구성됨 

  - 오픈 소스 기반으로 리눅스 환경에서 쉽게 클러스터를 구축 

  - 클라이언트에 보조기억장치(하드디스크)를 두지 않고 서버에만 둔다는 특징이 있다. 

     따라서 클라이언트를 추가하고 제거하기 쉽다



병렬성과 동시성

 병렬성(Parallelism) 

  - 연산 태스크가 병렬로 수행되는 것 (task가 동시에 수행된다는 것을 의미) 

  - 병렬성은 주로 연산의 양이 많은 문제의 경우 사용 

  - 연산의 양이 많은 문제는 종종 연산이 적은 하위 문제들로 분할할 수 있기 때문에 

    병렬적으로 해결할 수 있음 

  - 병렬은 직렬의 상대적인 개념(순차적이냐 동시에 수행하냐) 

  - 직렬은 하나가 수행된 이후 다른 것이 차례로 수행된다는 것을 의미

  - 병렬은 동시성(Concurrency)과 관련됨


동시성(Concurrency)

  - 많은 연산 task가 동시 처리되는 것을 의미 

  - 태스크가 같은 시간에 처리될 필요는 없다 

  - 병렬성에서는 각 노드가 같은 시간 동안 각자의 태스크를 실행한다 

  - 동시 시스템에서는 한 연산이 다른 연산을 기다리지 않고 진행될 수 있다 

  - 하나 이상의 연산이 진행될 수 있다는 것을 의미 

  - 동시성의 가장 적절한 예는 OS의 프로세스 스케쥴링이다 

  - 동시성은 순차적인 개념의 반대다




MPI(Message Passing Interface)

• 메시지 전달 인터페이스의 목적

  - 다양한 메세지 전달 프로그램을 작성하는 데 널리 이용될 메세지 전달에 대한 이식성,        효율성, 호환성의 표준을 정의하는 것 


• 플랫폼

  - 고성능 컴퓨팅(HPC), 병렬 컴퓨터, 클러스터, 분산 시스템 등이 존재하다. 

  - MPI 표준은 C, C++, Fortran으로 이식 가능한 메세지 전달 프로그램을 작성하기 위한        라이브러리 루틴의 구문과 의미를 정의한다.


• 관련 중요 요소 

  - MPI는 라이브러리를 위한 상세 사양이다. 

     - MPI 자체는 라이브러리가 아니다

  - MPI의 목적은 메세지 전달 표준이 실용적이어야 하며, 이식 가능해야 하고, 

    호환 가능해야 한다. 

  - 실제 MPI 라이브러리들은 MPI표준이 적용되는 방법에 따라 다르다.


• MPI의 특징

  - 모든 노드를 연결하는 네트워크와 분산 메모리를 포함하는 분산시스템에 최적화됨



  - 단순성: MPI 패러다임의 기본은 전통적인 통신 작업 .

  - 일반성: 병렬 아키텍처에 내장된 대부분의 시스템에 구현 가능 .

  - 성능: 구현은 기본 하드웨어의 속도와 일치할 수 있음 .

  - 확장성: 동일한 프로그램을 변경하지 않고 대규모 시스템에 적용할 수 있다.


scale out: 서버를 확장한다.

scale in: 서버를 줄인다.

scale up: 하드웨어 성능을 높인다.

scale down: 하드웨어 성능을 낮춘다.



• MPI4PY(MPI for Python) 

  - Python에서 MPI 바인딩을 제공 

  - 멀티프로세서로 구성된 컴퓨터를 사용하는 어떤 파이썬 프로그램도 실행 가능 

  - MPI-1/2/3 사양 위에 패키지로 구축됨 

  - 병렬프로그래밍의 객체지향 인터페이스를 제공 

  - MPI4PY는 어떤 Python객체에서

    - 지점 간 통신(point-to-point communication)의 전송, 수신으로 구성 

    - 군집 통신(collective communication)의 방송, 분산, 수집으로 구성 등을 제공한다.


• MPI4PY(MPI for Python) 개념 

  - MPI 랭크 및 프로세스 

  - 데이터 송수신 

  - 데이터 태깅 

  - 데이터 브로드캐스팅

  - 데이터 분산

  - 데이터 수집


• 기초 

  1. MPI는 단일 프로그램 다중 데이터(SPMD, Single-Program Multiple-Data) 개념을 사용


  2. SPMD 아키텍처 

    - 모든 프로세서(랭크라고함)는 동일한 코드를 실행 (프로세서= 랭크)

    - 각 프로세스는 다른 데이터 영역에 접근 

    - 모든 프로세스는 동시에 실행

 

 3. 랭크 

    - 병렬프로그램은 개별 프로세스로 분해된다 

    - 각 랭크는 고유한 주소 공간을 사용하기 때문에 데이터를 랭크에 따라 분할해야 한다 

    - 각 랭크는 프로그램 데이터의 일부를 자체 메모리에 보유한다 

    - 랭크는 0에서 n-1까지 순차적으로 넘버링된다.





Hello world 작성


comm = MPI.COMM_WORLD

name = MPI.Get_Processor_name() 현재 내가 돌리고 있는 프로세서 이름


sys.stdout.write("Hello World!")

sys.stdout.write("NAME: %s, my rank is %d\n" %(name, comm.rank))

system call을 하는 이유는 버퍼에 쌓이지 않고 바로 쌓이게 하기 위해서 사용한다.

(메모리가 너무 작으면 쌓일때까지 기다린다음 출력하기 때문)


posted by 마스터박 MasterPark

댓글을 달아 주세요

빅데이터 2019. 3. 26. 14:39

Python programming


객체지향적, 동적 타이핑 언어


파이썬 특징

1. 플랫폼

플랫폼 = OS   

플랫폼: 각자 다른 목적을 가지지만, 한 장소에 모여서 각자의 역할을 수행하는것

: 윈도우, 리눅스, 안드로이드, 맥OS, IOS등 프로그램이 실행되는 운영체제가 플랫폼


2. 독립적

OS에 상관없이 한번 프로그램을 작성하면 사용가능


3. 인터프리터언어

소스코드를 바로 실행할 수 있게 지원하는 프로그램 실행 방법



파이썬 특징 2

가독성

– 간결하고 가독성이 좋다.

– 코드블럭을 들여쓰기(indentation)로 구분.


풍부한 라이브러리

– 매우 광범위한 라이브러리가 기본으로 포함되어 있음.

– 외부 라이브러리가 풍부하며 확장이 쉬움.


접착성

– 쉽게 라이브러리를 추가할 수가 있습니다. 

– 파이썬에서 C로 구현된 부분을 사용할 수도 있으며, C에서 파이썬을 사용할 수도 있습니다.


무료

– 파이썬은 파이썬 소프트웨어 재단(Python Software Foundation)에서 관리하고 있음. 

– 무료와 다름없는 Python Software Foundation License.


유니코드

– 파이썬에서의 문자열들은 모두 유니코드입니다. 

– 우리가 한글, 한자 등을 표현하려고 특별한 노력을 할 필요가 없습니다.


동적타이핑

– 런타임 시에 타입 체크를 하는 동적타이핑을 지원하며, 

– 메모리 관리 자동으로 합니다.



파이썬 특징 3

객체 지향적 언어 

실행 순서가 아닌 단위 모듈(객체) 중심으로 프로그램을 작성 하나의 객체는 어떤 목적을 달성하기 위한 행동(method)와 데이터(attribute)를 

가지고 있음 


동적 타이핑 언어 

프로그램이 실행하는 시점 프로그램이 가지고 있는 데이터에 대한 타입을 검사함



파이썬을 사용하는 이유?

동적으로 메모리가 할당됨

인간 지향적인 간단한 문법

다양한 라이브러리, 넓은 활용범위

문자열을 자유롭게 처리할수 있다.



파이썬 2.0 3.0 차이

파이썬 2.0

프린트하고 한칸 뛰움

print "welcome"


파이썬 3.0

프린트하고 가로열고 가로 닫음

print("welcome")



코딩 컨벤션

ㆍ프로그래밍은 공동작업이 많기 때문에 프로그램을 작성하는 가이드라인 언어마다 정해져 있음 

ㆍ자신만의 방식으로만 프로그램을 작성할 경우, 다른 사용자의 이해가 떨어짐 

ㆍ컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다. - 마 틴 파울러 – 

ㆍ이를 위해 기본적인 코딩 작성법을 코딩 컨벤션이라 함



데이터 구조

파이썬 에서는 리스트, 튜플, 집합(Set), 사전(dictionary) 등의 기본 데이터 구조를 제공함

사전이 예를 들면 C++에서의 STL 역할과 동일한다.


스택, 큐


튜플(tuple)

ㆍ리스트와 동일한 개념이나 값의 변경이 불가능함

ㆍ선언시 “[ ]” 가 아닌 “( )”를 사용 

ㆍ리스트의 연산, 인덱싱, 슬라이싱 등을 동일하게 사용

값이 변하지 않고 고정되어있다. (리스트는 값이 변경이 가능하다)


t = (1,2,3) 

print t +t , t * 2     # (1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3) 

len(t)                  # 3 

t[1] = 5               # Error 발생 (값을 변경할 수 없다.)



집합(set)

ㆍ값을 순서없이 저장, 중복 불허 하는 자료형 

ㆍset 객체 선언을 이용하여 객체 생성


s = set([1,2,3])              # set 함수를 사용 1,2,3을 집합 객체 생성 

s.add(1)                      # 1를 추가, 중복불허로 추가 되지 않음 s.remove(1) # 1 삭제 

s.update([1,4,5,6,7])       # [1,4,5,6,7] 추가 

s.discard(3)                  # 3 삭제

s.clear()                       # 모든 원소 삭제



사전 (Dictionary)

ㆍkey와 value를 매핑하여 key로 value를검색

ㆍ다른 언어에서는 HashTable이라는용어를사용

ㆍ{Key1:Value1, Key2:Value2, Key3:Value3 ...} 형태



※ 한글입력을 위해서 다음 행을 첫 줄에 삽입

# -*-coding: utf-8 -*

posted by 마스터박 MasterPark

댓글을 달아 주세요

빅데이터 2019. 3. 20. 11:38

• Supervised learning(지도학습)

-Classification and Categorization

-Regression

ex) 남자와 여자의 구별


지도학습 구조(이미 알고있는 데이터들)

1. 들어오는 데이터의 종류들: training text documents, images, sounds

2. 들어온 데이터의 특징을 잡는다. features vectors

3. 라벨링을 한 데이터(이런 특징을 가지면 남자이다, 이런 특징을 가지면 여자다 라벨링)


1,2를 통해 들어온 특징 지어진 데이터를 3으로 머신러닝 알고리즘을통해 data set(training set)을 만든다.


4. 새로운 데이터들이 들어온다.

5. 새로운 데이터의 특징을 잡는다.

6. 머신러닝 알고리즘으로 예측되는 모델을 만든다.

7. 예측되는 라벨이 생긴다.


Supervised application

• Face recognition: Pose, lighting, occlusion (glasses, beard), make-up, hair style 

• Character recognition: Different handwriting styles.

• Speech recognition: Temporal dependency.

• Use of a dictionary or the syntax of the language. 

• Sensor fusion: Combine multiple modalities; eg, visual (lip image) and acoustic for speech 

• Medical diagnosis: From symptoms to illnesses 

• Web Advertizing: Predict if a user clicks on an ad on the Internet.



• Unsupervised learning(비지도학습)

-Clustering

-Dimensionality reduction

데이터를 쪼갠다.

ex) 점에 대한 데이터가 있을 때, 점에 RGB값을 가진다. Red에 가까운 점 Green에 가까운 점, Blue에 가까운 점으로 나눈다.

만일 R,G,B 정중앙에 위치한점에 대한 처리는?

-> 먼저 잡혀가는 루프에 포함된다. (루프: Red에 가까운 점을 모을때 돌리는 루프)


비지도학습 구조

1. 들어오는 데이터의 종류들: training text documents, images, sounds

2. 들어온 데이터의 특징을 잡는다. features vectors

(지도학습처럼 라벨이 존재하지 않는다) 


1,2를 통해 들어온 특징지어진 데이터를 머신러닝 알고리즘을통해 data set(training set)을 만든다.


4. 새로운 데이터들이 들어온다.

5. 새로운 데이터의 특징을 잡는다.

6. 머신러닝 알고리즘으로 모델을 만든다.

8. 클러스터링 알고리즘이 라벨을 정한다.


Unsupervised application

• Learning “what normally happens”  데이터의 형태가 어떻게 구분되는지

• No output  결과물이 없을 수도 있고 있을 수도 있다.

• Clustering: Grouping similar instances  목적에 따라 같은 인스턴스들을 그룹화한다. 

• Other applications: Summarization, Association Analysis  데이터들의 상관관계를 확인한다, 연관 분석

• Example applications 

• Customer segmentation in CRM 

• Image compression: Color quantization 

• Bioinformatics: Learning motifs



• Semi-supervised learning(지도학습과 비지도학습을 혼합)




• Reinforcement learning 

-Decision making (robot, chess machine)



테스트 결과 확인

머신러닝의 결과가 얼마나 잘 됐고, 결과가 좋지 않은지 확인해야 한다.

-데이터의 결과를 이미 알고있지만, 모른다고 가정하고 데이터가 잘 분류되는지 확인해야한다.

                            <교차 검증>



MANY CLASSIFIERS TO CHOOSE FROM 다양한 알고리즘들

• SVM 

• Neural networks

• Naïve Bayes 

• Bayesian network 

• Logistic regression 

• Randomized Forests 

• Boosted Decision Trees

• K-nearest neighbor

• RBMs 

• Etc



posted by 마스터박 MasterPark

댓글을 달아 주세요

빅데이터 2019. 3. 19. 14:42


GRID COMPUTING

• 그리드 컴퓨팅이 필요한 사람들

- 특정 모델링이나 시뮬레이션을 필요로 하는 사람(단위 시간당 계산량이 많을 경우)

- 하드웨어나 컴퓨팅의 높은 요구를 필요로 하는 사람

- 큰 네티워크 대역폭을 사용하는 사람


• 생각해야 할 부분

- 병렬화

- 할당 받은 작업을 어떻게 분산할지



CLOUD COMPUTING

• What is cloud computing?

데이터가 컴퓨터에 저장되지 않고 클라우드 어딘가에 저장되는 것


• Cloud architecture

-Front end: seen by the user, such as a web browser 

-Back end: the cloud itself comprising computers, servers, data storage devices, etc.


• 한국에 초기 클라우드 버전: 웹하드


• 실생활에서 클라우드 컴퓨팅이 이용되는 방법

os에 독립적으로 사용할 수 있다 -> 다양한 os를 사용할 수 있다.



MACHINE LEARNING

WHAT IS MACHINE LEARNING?

인공지능의 한 분야이며 경험적 데이터를 통해서 알고리즘을 설계하고 개발하는, 행위를 진화시키는 분야

컴퓨터가 지식을 아는 것이 필수적이다.


머신러닝의 발달

인공지능에 대한 접근을 쉽게 만들어준 GPU 발전이후로 발달이 크게 이루어짐



WHAT IS AI? ML? 



ALGORITHMS 

• Supervised learning(지도 학습)

     -Prediction 

     -Classification (discrete labels), Regression (real values) 


• Unsupervised learning(비지도 학습)

-Clustering 

-Probability distribution estimation 

-Finding association (in features) 

-Dimension reduction 


• Semi-supervised learning(지도 학습과 비지도 학습을 혼합)


• Reinforcement learning 

 -Decision making (robot, chess machine)


posted by 마스터박 MasterPark

댓글을 달아 주세요

빅데이터 2019. 3. 12. 14:50

1회차 review

빅데이터란?

Big data is when the normal application of current technology does not enable users to be obtain timely, cost-effective, and quality answers to data-driven questions.

컴퓨터의 기술이 발전함에 따라 빅데이터를 처리할 컴퓨터 인프라가 구축되어, 빅데이터의 발달이 시작되었다.


key enables for the growth of "Big Data" are:

Increase of storage of capacities

Increase of processing power

Availability of data

현재 빅데이터의 발전이 급격히 이루어질수 있던 이유는 환경이 뒷받침이 가능해졌기 때문이다. 현재는 컴퓨팅환경이 많이 발전했기 때문에

2012년부터 빅데이터의 popularity가 증가했다.

과거에도 인공지능의 붐은 있었지만, 환경이나 시스템이 받쳐주지 못해서 오래가지 못했다. (인프라의 구축이 부족했다.)



2회차

컴퓨팅 파워의 발전에 따라서 새로운 os과 환경이 구성되었다.

새로운 환경에 따라 데이터의 양과 데이터를 처리하는 방식이 많이 생기게 되었다.


BIG DATA value chain

Big data constituencies

generate data -> aggregate data -> analyze data -> consume data and derive value



빅데이터는 언제 어려움을 겪을까?

-> 운영 데이터가 복잡할경우

Modeling and reasoning with data of different kinds can get extremely complex


빅데이터의 좋은 소식

often, because of vast amount of data, modeling techniques can get simpler

(ex. smart counting can replace complex model based analytics)

as long as we deal with the scale



posted by 마스터박 MasterPark

댓글을 달아 주세요

빅데이터 2019. 3. 6. 11:43

Understanding of Big Data 


What is Big data?  빅데이터란?



컴퓨터 시스템의 발전

8bit computer, 디스크 소켓에서 시작


->컴퓨터가 점점 발전하면서 빅데이터 개념이 생김.



Big data is when the normal application of current technology does not enable users to be obtain timely, cost-effective, and quality answers to data-driven questions.



ex) 기상예보

컴퓨터로 어떻게 구름을 표현할까?

-> 1픽셀에 구름크기를 맞추며 대략 1byte로 예측한다.


하나의 1byte는 작은 정보이지만, 대한민국 전체 구름과, 구름의 이동, 몇년 동안의 날씨 정보까지 합쳐지면 데이터의 양이 방대해진다.



'Big-data' is similar to 'small-data', but bigger.

but having data bigger consequently requires different approaches.



과거에도 데이터는 많았다. ex) 신문데이터


빅데이터는 단지 데이터의 수집에서 데이터를 어떻게 해석하고, 어떻게 처리하냐에 따라 그 의미가 달라진다.


빅데이터라는 단어의 개념은 기존의 개념에서 시대의 변화에 따른 용어의 변화라고 볼 수도 있다.



Characterization of Big data

Volume, Velocity, Varierty


Volume

terabyte -> zettabyte

데이터 사이즈의 크기 변화


Velocity 

batch -> steaming data

일괄처리. 데이터를 한번에 쭉 처리한다.  -> 필요에 따라 데이터를 처리


Varierty

structured-> structured & unstructured



key enables for the growth of "Big Data" are:

Increase of storage of capacities

Increase of processing power

Availability of data

현재 빅데이터의 발전이 급격히 이루어질수 있던 이유는 환경이 뒷받침이 가능해졌기 때문이다. 현재는 컴퓨팅환경이 많이 발전했기 때문에

2012년부터 빅데이터의 popularity가 증가했다.

과거에도 인공지능의 붐은 있었지만, 환경이나 시스템이 받쳐주지 못해서 오래가지 못했다. (인프라의 구축이 부족했다.)

posted by 마스터박 MasterPark

댓글을 달아 주세요