728x90
반응형

구글이 만든 2세대 머신러닝 시스템

이미지, 음성, 비디오 등 다양하고 많은 데이터를 처리

모델을 훈련할 때는 주로 GPU를 이용

 

 

 

1. 구글의 머신러닝, 또는 기계학습에 대한 오픈소스 라이브러리 TensorFlow 개요

 - 구글이 개발한 기계 학습과 딥러닝을 위해 데이터 플로우 그래프(Data Flow Graph) 방식을 이용해 만든 오픈소스 라이브러리

2. 텐서플로우 특징 :

  - 데이터 플로우 그래프를 통한 풍부한 표현력

  - 코드 수정 없이 CPU/GPU 모드로 동작

  - 다중 병렬처리, 아이디어 테스트에서 서비스 단계까지 이용 가능

  - 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리

  - Python/C++를 지원하며, SWIG를 통해 다양한 언어 지원 가능

  - 가상화로 묶은 서버나 수 천대 규모의 데이터센터에서도 작동

 

3. 텐서플로우의 아키텍처 및 구성요소

 가. 구성요소

 1.Node: 수학적 계산, 데이터 입/출력 등 작업 수행   (역전파 등 기술사용)

 2.Edge: 노드들 간의 데이터 입출력 관계   (텐서 전송)

 3.Tensor: 학습 데이터가 저장되는 다차원 배열  (모든 데이터 표현)

 4.Operation: 계산 수행, 결과를 하나 이상 텐서로 반환 (그래프 상의 노드)

 5.Session: 오퍼레이션의 실행 환경을 캡슐화 (객체)

 6.Variables: 메모리 상에서 텐서를 저장하는 버퍼 (파라미터 저장, 갱신시 사용)

 

4. 텐서플로우의 활용과 라이선스

가. 텐서플로우 라이선스

- 텐서플로는 오픈소스로 공개된 소프트웨어 라이브러리.

- 소스와 API들이 공개되고 아파치2.0 기준으로 활용

- 아파치2.0 라이선스는 누구든 텐서플로우 소프트웨어에서 파생된 프로그램을 제작, 저작권 양도, 전송

- 관련 소프트웨어를 이용해 상업적인 목적 사용 가능

 

나. 텐서프로우 활용 및 제약

- 데이터를 분석할 수 있는 CPU 뿐 아니라 GPU를 이용

- 모바일 기기에서도 필요하다면 데이터를 분석

- API는 기기에 관계 없이 공통으로 사용

- C++뿐 아니라 머신러닝에 많이 쓰는 python도 활용

- 구글포토 : 500억장 사진 이해, 고양이와 자동차

- 랭크브레인 : 문장이나 애매한 키워드 입력 검색가능

- G메인 인박스 : e메일의 내용을 이해하여 적절한 짧은 답장 '스마트 답장'

텐서플로우의 이점, '추상화'
텐서플로우가 머신러닝 개발에서 제공하는 가장 큰 이점은 추상화(abstraction)다. 알고리즘 구현의 세부적인 면에 신경을 쓰거나 한 함수의 출력을 다른 함수의 입력으로 집어넣기 위한 적절한 방법을 알아내느라 고심할 필요 없이 개발자는 애플리케이션의 전체적인 논리에만 집중할 수 있다. 배후의 세세한 부분은 텐서플로우가 알아서 처리해준다.

(http://www.itworld.co.kr/news/109825)

 

머신러닝 라이브러리, 텐서플로우의 이해

머신러닝은 복잡한 분야다. 그러나 구글 텐서플로우(TensorFlow)와 같은 머신러닝 프레임워크 덕분에 머신러닝 모델을 구현하는 과정은 예전만큼 복잡하거나 어렵지는 않다. 머신러닝 프레임워크�

www.itworld.co.kr

 

(https://medium.com/tensorflow/highlights-from-tensorflow-developer-summit-2018-cd86615714b2

 

Highlights from the TensorFlow Developer Summit, 2018

Posted by Sandeep Gupta, Product Manager for TensorFlow, on behalf of the TensorFlow team.

medium.com

 

 

▲텐서플로우 아키텍처(사진 : 마이크 슈스터 구글 박사 발표자료)

 

▲텐서플로우 지원 기술 (사진 : 마이크 슈스터 구글 박사 발표자료)

 

 

(http://www.bloter.net/archives/254962

 

[현장] 구글 ‘텐서플로우’ 개발자가 생각하는 머신러닝이란?

4월21일 저녁, 200여명 개발자가 구글 캠퍼스에 찾아왔습니다. 구글의 딥러닝 전문 연구팀인 브레인팀에 속해있는 마이크 슈스터 박사의 강연을 듣기 위해서인데요. 마이크 슈스터 박사는 2006년 �

www.bloter.net

 

 

(https://www.techleer.com/articles/483-announcing-tensor-comprehensions/

 

Announcing Tensor Comprehensions

Announcing Tensor Comprehensions

www.techleer.com

 

 

텐서플로우의 구성

버전 r1.4.1(안정화 버전과 웹 문서),

버전 r1.5 (RC: Release Candidate),

버전 r1.6 (마스터 브랜치(Master Branch) - 선 공개

데일리 빌드(Daily Build))

 

텐서플로우의 특징

 

텐서플로우는 1년 전과 마찬가지로 손글씨 숫자 분류를 위한 DNN(Deep Neural Network), 이미지 인식, 워드 임베딩(Word Embedding), RNN(Recurrent Neural Network), 기계 번역을 위한 시퀀스 투 시퀀스(Sequence-to-Sequence) 모델, 자연어 처리(NLP: Natural Language Processing), 그리고 PDE(Partial Differential Equation: 편 미분방정식) 기반 시뮬레이션 등을 학습해서 실행할 수 있다.

 

CPU와 엔비디아 GPU를 지원

학습을 위해 사용된 것과 같은 모델을 시용해서 대규모의 프로덕션 프레딕션(Production Prediction)도 지원

자동 미분을 수행할 뿐 아니라, 텐서보드(TensorBoard)에 모델 가상화 도구

 

텐서플로우의 변경

 

RNN(Recurrent Neural Network, 보통 자연어처리용으로 사용된다) 지원의 상당한 개선과 CPU 상에서의 딥 러닝 성능 개선을 위한 새로운 인텔 MKL(Math Kernel Library) 통합도 이루어졌다.

 

프로그래밍 측면에서는 몇 가지 리그레서(Regressor)와 클래시파이어(Classifier)를 포함해서 미리 준비된 에스티메이터(Canned Estimator, 사전 정의된 모델 네트워크)가 라이브러리에 추가

 

통계 분포(Statistical Distribution), 신호 처리 프리미티브(Signal Processing Primitive), 그리고 이미지에 대한 편미분 재표집(Differentiable Resampling) 등의 용도로 라이브러리가 추가

 

표준 구현물이 MXNet, 딥 러닝4j(Deeplearning4j), 마이크로소프트 CNTK(Cognitive Toolkit), 그리고 테아노(Theano) 상에서도 실행되는 고급 신경망 API인 케라스(Keras)의 텐서플로우 특화 구현물이 개발

 

IDG

 

텐서플로우 라이트는 안드로이드와 iOS, 심지어는 오프라인 디바이스에서도 충분히 작은 신경망 모델을 실행할 수 있게 해준다. 라이브러리는 아직 개발자 프리뷰 단계에 있으며 이전 또는 향우 버전과의 호환성에 대한 어떤 보장도 하지 않는다.

 

텐서플로우 서빙(Serving)

텐서플로우 서빙은 프로덕션 환경용으로 설계된, 머신러닝 모델을 위한 유연하고 고성능의 서빙 시스템이다. 하나의 모델만 서빙하기 위한 것은 아니다. 여러 가지 버전이 있는 여러 개의 서버블(Servable)을 가질 수 있으며, 클라이언트는 최신 버전이나 특정 모델을 위한 특정 버전 ID 중 하나를 요청할 수 있어서, 새로운 알고리즘과 실험을 쉽게 시도해 볼 수 있다.

 

복합 모델을 여러 개의 독립적인 서버블이나 하나의 복합 서버블로 표현할 수 있다. 서버블에 대한 액세스는 소스(Source)에 의해 통제되며, 소스는 임의의 스토리지 시스템에서 서버블을 찾아낼 수 있다.

 

텐서플로우 이거(Eager)

이거 실행(Eager Execution, 긴급 실행, 투기 실행)은 텐서플로우에 대한 실험적 인터페이스로 NumPy와 유사한 명령형 프로그래밍 스타일을 제공한다. 이거 실행을 활성화하면, 텐서플로우 작업들이 즉시 실행된다. Session.run()을 사용해서 사전 구성된 그래프(graph)를 실행하지 말기 바란다.

 

(http://www.itworld.co.kr/news/108197

 

텐서플로우 리뷰 : 더 좋아진 최고의 딥 러닝 라이브러리

버전 r1.5가 된 구글의 오픈소스 머신러닝 신경망 라이브러리는 더 많은 기능을 제공하고, 더 성숙해 졌으며, 배워서 사용하기도 더 쉬워졌다.작년에 텐서플로우를 딥 러닝(Deep Learning) 프레임워��

www.itworld.co.kr

 

특징

(1) 데이터 플로우 그래프를 통한 풍부한 표현력

(2) 코드 수정 없이 CPU/GPU 모드로 동작

(3) 아이디어 테스트에서 서비스 단계까지 이용 가능

(4) 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리

(5) Python/C++를 지원하며, SWIG를 통해 다양한 언어 지원 가능

 

2세대 TPU 칩…11.5 페타플롭스급 성능

 

1세대 TPU

알파고가 바둑 수를 계산하는 용도 외에 번역, 검색, 이미지 인식 등과 같은 업무를 수행하는 머신러닝 모델의 효율성을 높이는데 집중

추론을 하거나 이미 사전에 학습된 머신러닝 모델을 활용하는데 유용

 

2세대  TPU - TPU 팟(TPU Pods)

GPU와 CPU가 가진 병목현상을 없애면서도 머신러닝 모델을 학습시키고 운영하는데 최적화

여러 개 TPU2가 연결된 환경에서 각 TPU2 칩은 180테라플롭스의 부동소수점 연산처리 수행

하나 당 4개 TPU 칩으로 구성됐으며 64GB 고대역폭 메모리에 초당 2천400GB를 처리하면서 180 테라플롭스 성능

 

 

 

 

https://www.androidauthority.com/google-powering-ai-816146/

 

How Google is powering the world's AI

Google's Cloud TPU already powers the current and expanding AI ecosystem. But how does it work?

www.androidauthority.com

 

 

  ㅇ 구글은 자사의 클라우드 서비스인 '컴퓨트 엔진(Compute Engine)'에 TPU를 올려 '클라우드 TPU'를 제공

   - 클라우드 TPU는 일반 클라우드 서비스를 이용하듯 TPU를 이용하고, TPU와 최적화 된 컴퓨팅 인프라를 제공받는다는 장점이 있음.

 

 

TPU와 Tensorflow 관계도

 

 

 

보정자 계층(신경망에서 ReLU의 합과 같이 동작함)을 사용하여 격자 앙상블 및 선형 임베딩 계층을 교대로 사용하는 9계층 심도 격자 네트워크 아키텍처[5]의 예입니다. 파란색 선은 단조 입력에 해당하며, 계층별로 유지되므로 이런 식으로 전체 모델에 대해 유지됩니다. 계층마다 구분이 가능하므로 TensorFlow Lattice를 사용하여 이 아키텍처는 물론, 임의의 다른 아키텍처도 구성할 수 있습니다.

 

https://developers-kr.googleblog.com/2017/10/TensorFlow-Lattice.html

 

TensorFlow Lattice: 사전 지식을 기반으로 한 유연성 강화

<블로그 원문은 여기 에서 확인하실 수 있으며, 블로그 번역 리뷰는 최성준(Machine Learning GDE) 님이 참여해 주셨습니다.> 게시자: Maya Gupta(연구원), Jan Pfeifer(소프트웨어 엔지니어), 유승일(

developers-kr.googleblog.com

Higher-Level APIs in TensorFlow

 

TensorFlow 상위수준 API 사용하기

-Estimator, Experiment, Dataset을 사용하여 모델을 학습하는 방법

 

이 블로그에서는 Estimator , Experiment, Dataset을 비롯한 새로운 상위 수준 구문을 사용하여 예제를 살펴 보겠습니다 . 실험과 데이터세트를 자체적으로 사용할 수 있다는 점도 유의해야합니다. TensorFlow의 기본 사항을 알고 있다고 가정합니다.

이 블로그에서 MNIST를 데이터세트로 사용할 것 입니다. TensorFlow에서 이미 액세스 할 수있는 사용하기 쉬운 데이터 세트입니다.

 

Estimator

Estimator 클래스는 모델과 모델을 학습하고 평가하는 방법을 포함합니다. Estimator를 만들려면 모델 함수, 파라미터 모음 및 일부 구성을 전달해야합니다.

 

Model function

Model function는 first-class function로서 Estimator에 전달되는 Python 함수입니다. 뒤에 TensorFlow가 다른 장소에서 first-class function을 사용한다는 것을 알 수 있습니다. 모델을 함수로 나타내는 이점은 함수를 인스턴스화하여 모델을 반복하여 다시 만들 수 있다는 것입니다.

 

Experiment

Experiment 클래스는 모델을 학습하는 방법을 정의하고 Estimator와 잘 통합되어 있습니다.

 

Experiment를 정의하고 나면 다음과 같이 learn_runner.run 을 사용하여 모델을 학습하고 평가할 수 있습니다.

 

Dataset

Dataset 클래스와 해당 Iterator를 사용하여 학습과 평가 데이터를 나타내고, 학습중 데이터를 반복하는 data feeder를 만듭니다. 이 예에서는 Tensorflow에서 사용할 수 있는 MNIST 데이터를 사용하고 Dataset 래퍼를 만듭니다.

 

Estimator, Experiment, Dataset 프레임워크에 대한 참고 사항

1. Estimator 프레임워크의 상위 레벨 설계를 설명하는 “TensorFlow Estimators: Managing Simplicity vs. Flexibility in High-Level Machine Learning Frameworks" 라는 논문이 있습니다.

 

2. TensorFlow에는 Dataset API 사용에 대한 자세한 설명서가 있습니다.

 

3. Estimator 클래스에는 두가지 버전이 있습니다. 이 예제에서는 tf.estimator.Estimator을 사용하고 있지만, tf.contrib.learn.Estimator라는 이전의 불안정한 버전이 있습니다.

 

3. RunConfig 클래스에는 두가지 버전이 있습니다. tf.contrib.learn.RunConfig과 tf.estimator.RunConfig

 

4. 이 예제에서는 사용하지 않았지만 Estimator 프레임워크는 classifier, regressor와 같은 일반적인 모델에 대해 미리 정의 된 Estimator가 있습니다. 사전 정의된 Estimator는 사용하기 쉽고 상세한 튜토리얼과 함께 제공됩니다 .

 

 

 

 

Here is the class diagram for Estimators:

728x90
Posted by Mr. Slumber
,