Security_RNRF
[머신러닝] 구글 오픈소스- 텐서플로우(TensorFlow) 본문
구글의 딥러닝, 머신러닝 라이브러리
텐서플로우(TensorFlow)
TensorFlow is an Open Source Software Library for Machine Intelligence
구글의 텐서플로우는 일반인들도 쉽고 다양한 기능들로 딥러닝과 기계학습 빅데이터분석을 할수 있게 해주는 오픈소스 라이브러리 입니다 .
데이터만 있으면 인공지능을 구현할 수 있도록 해주며 무료로 제공 되고 있습니다 .
오픈소스로 공개 (https://github.com/tensorflow)
유연하고, 효율적이면서 휴대성이 좋아 스마트폰부터 대형 컴퓨터 클러스터까지 모두 수행이 가능하여 학습된 모델을 실제 제품에 바로 적용 할 수 있도록 합니다 .
이미지, 음성, 비디오등 다양하고 많은 데이터를 처리할 수 있는 장점이 있으며, 대표적인 구글 번역 스트템 에도 적용 되었습니다 .
C++과 파이썬을 사용하여 접근성이 높은 텐서플로우는 짧은시간에 강력한 머신러닝 딥러닝 분석을 할 수 있도록 해 줍니다.
딥러닝 학습을 위해서는 많은 데이터를 이용한 훈련이 매우 중요합니다 .
많은 데이터를 반복하여 학습시키는 데에는 많은 시간이 걸리게 되며, 이러한 이유로 과거에는 중앙처리장치(CPU, Central Processing Unit)로 데이터를 처리 하게되여 많은 시간이 걸려 실용적이지 못했습니다 .
데이터 분석 처리를 획기적으로 빠르게 학습하기 위해 그래픽처리장치(GPU,Graphics Processing Unit)를 이용하면서 부터 딥러닝 성능은 크게 향상 되었습니다 .
PC에 꽂을 수 있는 GPU는 3000개 이상의 처리코어를 가지고 있어 동시에 병렬적으로 딥러닝 수치계산을 빠르게 할 수 있도록 해 줍니다 .
일반적으로 이미지(사물/얼굴) 인식부터 음성 인식 등 다양한 분야의 머신러닝 작업을 수행 할때는 GPU나 CPU를 창착한 고객의 스마트 기기에서도 구동 되고 있습니다 .
특히 구글은 인공지능서비스를 훈련시킬 뿐 아니라 구동할 때도 GPU기반 스마트기기를 활용 합니다 .
텐서플로우(TensorFlow)는 데이터플로우 그래프(Data flow graph)를 사용하여 수치 연산을 하는 소프트웨어로 , 그래프의 노드(Node)는 수치연산을 나타내고 엣지(edge)는 노드사이를 이동하는 다차원 데이터 배열(tensor)를 나타내 줍니다 .
유연한 아키텍처로 구성되어 있어 코드 수정없이 데스크탑, 서버 혹은 모바일 디바이스에서 CPU나 GPU를 사용하여 연산을 구동시킬수 있습니다.
텐서플로우는 머신러닝과 딥뉴럴 네트워크 연구를 목적으로 개발되었으며, 여러 다른 분야에도 충분히 적용될 수 있습니다 .
텐서플로우를 사용하기 위한 언어는 파이썬이 대표적이며
수기 숫자 분류와 이미지인식, 워드 임베딩(Word Embedding), RNN(Recurrent Neural Network), 기계번역을 위한 (Sequence to Sequence)모델, 자연어처리 , PDE(Partial Differential Equation)기반의 시뮬레이션에 대한 애플리케이션 등이 포함 되어 있습니다 .
일반버전과 GPU 가속 버전 두가지가 공개 되어 있으며 , 일반버젼은 어떤 컴퓨터에서든 실행할 수 있고, GPU가속버전은 GPGPPU를 사용 대량 연산을 빠르게 수행할수 있습니다 . 단 NVIDIA의 GPGPU 언어인 CUDA를 사용하기 때문에 NVIDIA 그래픽카드에서만 작동됩니다.
그외 구글의 자사 서비스를 위한 내부버전은 AI 가속 하드웨어인 TPU(Tensor Processing Unit)에서 동작되어 타사보다 최대30배 더 빠르다고 합니다 .
TensorFlow™ is an open source software library for numerical computation using data flow graphs
텐서플로우(TensorFlow)는 graph로 연산(computation)을 나타내는 프로그래밍 시스템 입니다 .
graph에 있는 노드는 작업 op(operation)이라고 부릅니다.
작업은 0개 혹은 그이상의 Tensor를 가질 수 있고 연산도 수행하며 0개 혹은 그 이상의 Tensor를 만들어 내기도 합니다 .
TensorFlow에서 Tenser는 정형화된 다차원 배열 (a typed multi_dimensional array)입니다.
TensorFlow에서 graph는 연산을 표현해 놓은 것이라서 연산을 하려면 graph가 Session 상에 실행 되어야 합니다 .
Session은 graph의 작업을 CPU나 GPU같은 Device에 배정하고 실행을 위한 메서드들을 제공 합니다 .
tensor는 파이썬 에서 numpy ndarry형식으로 나오고 C 와 C++에서는 TensorFlow Tensor형식으로 나옵니다 .
텐서플로우에는 Scikit Flow라는 패키지도 포함되어, 한줄 모델링 기능(oneline medeling function)을 응용 수학적인 함수, 클래스 모델등을 제공합니다 .
Tensor |
원래 의미는 2차원 이상의 배열이지만 여기 에서는 임의의 차원을 가진 배열을 뜻합니다. |
|
Operation |
임의의 계산을 수행하는 것으로 다양한 속성 값(attribute) 을 가질수 있습니다. |
|
Kernel |
커널은 operation을 디바이스 별로 실제 구현한 것으로 가속화를 위해 다양한 분산 최적화 알고리즘을 활용하고 있습니다. |
|
Variale |
변수란 학습을 통해 변화하는 배열값을 저장하기 위한 operation입니다. |
|
Session |
TensorFlow그래프를 구성한후 실제 수행을 할때 다앙한환경(CPU, CPU/GPU, 원격분산처리)에서 처리하기 위해서 Client에서 session을 만들어 전달하는 개념입니다. |
텐서플로우는 바이너리패키지나 깃허브 소스를 이용해 설치할 수 있습니다 .
텐서플로우 파이썬 API는 파이썬 2.7과 3.3+을 지원 합니다 .
Pip : 파이썬 패키지를 설치하고 관리하는 패키지 매니저 프로그램
Virtualenv: 각기 다른 파이썬 프로젝트에서 필요한 패키지들의 버젼이 충돌되지 않도록 다른 공간에서 운영할수 있는 툴로 기존 패키지들을 덮어쓰지 않게 됩니다 .
아나콘다(Anaconda): 아나콘다는 여러 수학, 과학, 패키지를 기본적으로 포함하고 있는 파이썬 배포판 입니다 .
Anaconda는 "conda" 패키지 매니저를 사용하여 Virtualenv와 유사한 환경 시스템을 제공 합니다 .
도커 (Docker): 로컬 컴퓨터에서 컨테이너로 리눅스 운영체제를 운영할 수 있는 시스템 입니다 .
소스에서 설치: 텐서플로우를 pip wheel을 이용하여 빌드하고 설치 합니다 .
Pip는 파이썬 패키지를 설치하고 관리하는 패키지 매니저 프로그램 입니다 .
특징
● 데이터 플로우 그래프를 통한 풍부한 표현력
● 코드 수정 없이 CPU/GPU모드로 동작
● 아이디어 테스트에서 서비스 단계까지 이용가능
● (distributed)실행환경이 가능함
● 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리
● Python/C++를 지원하며, SWIG를 통해 다양한 언어 지원 가능
관련소프트웨어
● 텐서보드(TensorBoard)
기본적으로 텐서플로우에 내장된 그래프 시각화 소프트웨어
텐서플로우 실행 중의 log파일을 이용해 모델의 동작을 살핌
통계요약, 학습 분석, 디버깅 등에 도움을 줌
● 텐서플로우 서빙 (Tensor Serving)
학습된 텐서플로우 모델을 쉽게 활용할 수 있는 소프트웨어로 내장된 함수를 사용하여 자신의 모델을 export하고 이를 텐서플로우 서빙에서 사용 함
구글, 사진속 물체 인식을 위학 TensorFlow API 공개
(google Research blog)
얼마전 구글은 텐서플로우기반 물체인식 API를 오픈소스로 공개하였으며, 깃허브(GitHub)를 통해 자료를 받을 수 있습니다 .
이미지 사진에서 물체를 확인할 수 있도록하는 텐서플로우 기반 물체인식 (TensorFlow Object Detection) API 입니다 .
개발자들에게는 딥러닝 모델을 직접 만들고 학습시키지 않아도 관련 기술을 사용할 수 있게 합니다 .
현재 구글서비스 NestCam, 스타일 기반 이미지 검색, 구글 스트리트 뷰 글자인식 등에 사용 되고 있는 동일 API라고 합니다 .
이번 물체인식 API는 무거운 인셉션 기반 CNN(convolutional neural networks)과 비교적 덜 정교한 머신에서 작동하도록 설계된 경량모델을 포함한 모바일넷(mobilenets)을 발표한바 있는데, 물체인식, 얼굴인식, 랜드마크인식 등의 기능을 제공 합니다 .
구글은 앞으로도 TensorFlow 와 자신들의 연구 결과를 지속적으로 오픈하여 개발자들이 TensorFlow생태계에 들어와 결과적으로 클라우드 머신러닝 플랫폼 시장은 확대 발전 될 듯 합니다 .
■ 관련 사이트 : http://www.tensorflow.org
■ https://www.udacity.com/course/deep-learning--ud730
TensorFlow: Open source machine learning
TensorFlow: 텐서플로우: 모두를 위한 기계 학습
'Project > AI' 카테고리의 다른 글
머신러닝 기초1 - kNN 이해하기 (0) | 2020.12.22 |
---|---|
사진 속 문자를 읽는 기술 - OCR과 오픈소스 (0) | 2020.12.21 |
1. 나만의 인공지능 만들기 (0) | 2020.11.17 |
인공 지능 , 머신 러닝, 딥 러닝 차이점이 무엇? (0) | 2020.11.17 |