검수요청.png검수요청.png

텐서플로

위키원
lidongchun (토론 | 기여)님의 2019년 9월 18일 (수) 15:22 판
이동: 둘러보기, 검색
텐서플로(Tensor Flow) 로고
텐서플로(Tensor Flow) 로고와 글자

텐서플로(Tensor Flow)는 2015년 11월 구글(Google)에서 공개된 딥러닝(Deep Learning)과 머신러닝(Machine Learning) 기술 등에 활용하기 위해 개발된 오픈소스 소프트웨어이다. 텐서플로우라고 하기도 한다.

개요

구글 브레인팀에서 개발한 검색, 음성 인식 등의 구글 앱에 사용되는 기계 학습용 엔진으로, C++ 언어로 작성되어 파이썬(Python) 응용 프로그래밍 인터페이스(API)를 제공한다는 특징이 있다. 2011년부터 구글에서 내부적으로 사용되던 1세대 머신 러닝 시스템인 '디스트빌리프'의 뒤를 이은 2세대 머신 러닝 시스템이다. 오픈 소스 소프트웨어인만큼 학생, 개발자 등 원하는 사람들은 누구나 사용할 수 있으며, 빠르고 유연하여 한 대의 스마트폰 뿐만 아니라 데이터센터의 수천 대 컴퓨터에서도 운영 및 동작이 가능하다는 장점이 있다.[1][2][3] 텐서는 행렬로 표현할 수 있는 2차원 형태의 배열을 높은 차원으로 확장한 다차원 배열, 즉 딥러닝에서 데이터를 표현하는 방식을 의미한다. 또한 텐서플로는 데이터 흐름 그래프(Dataflow Graph)로 계산이 이루어 진다. 따라서 텐서플로는 데이터를 의미하는 텐서와 연산이 수행되는 플로를 합쳐 만들어졌다.[4]

특징

  • 손쉬운 모델 빌드 : 텐서플로는 다양한 수준의 추상화를 제공해 사용자는 자신의 요구에 맞는 수준을 선택할 수 있다. 유연성이 더 필요한 경우 즉시 실행 기능을 사용하면 즉각적인 반복 및 직관적인 디버깅이 가능하다. 모델 정의를 변경하지 않고 서로 다른 하드웨어 구성에서 배포 전략(Distribution Strategy) API를 이용해 분산 학습을 수행할 경우엔 대규모 ML 학습 작업을 할 수 있다.
  • 어디서든 강력한 ML 제작 : 서버, 에지 기기, 웹 등 어디서나 텐서플로를 이용해 언어나 플랫폼에 관계없이 모델을 쉽게 학습시키고 배포할 수 있다. 전체 프로덕션 ML 파이프라인이 필요한 경우에는 TFX(TensorFlow Extended)를, 모바일 및 에지 기기에서 추론을 실행하려면 TensorFlow Lite를, 자바 스크립트 환경에서 모델을 학습시키고 배포하고 싶을 경우엔 TensorFlow.js를 사용하면 된다.
  • 연구를 위한 강력한 실험 : 속도나 성능 저하 없이 최첨단 모델을 빌드하고 학습시킬 수 있다. 유연하고 긴밀하게 복잡한 토폴로지 생성을 제어할 수 있고 즉시 실행 기능을 사용해 손쉬운 프로토타이핑과 빠른 디버깅을 구현할 수 있다. 강력한 부가기능 라이브러리 및 모델을 실험해 볼 수 있는 생태계를 지원한다.[5]
  • 텐서보드(TensorBoard) 제공 : 브라우저에서 실행이 가능한 시각화 도구이다. 딥러닝 학습 과정을 추적하는데 유용하게 사용된다. 딥뉴럴 넷 등과 같은 복잡한 계산 시 학습과정이 복잡하고 이해하기 힘들 경우가 발생하는데 이때 사용하면 좋다.

이 외에도 텐서플로는 데이터 플로우 그래프를 통한 풍부한 표현력을 보이고 코드 수정 없이 CPU/GPU 모드로 동작할 수 있다. 또 아이디어 테스트에서 서비스 단계까지 이용이 가능하며 계산 구조와 목표 함수만 정의하면 자동으로 미분 계산을 처리, 파이썬과 C++ 뿐 아니라 스윙(SWIG)을 통해 다양한 언어를 지원한다는 특징이 있다. 그러나 텐서플로는 Unix 계열 OS(Linux/Mac OS), GPU 버전은 리눅스(Linux)만 지원하기 때문에 윈도우 이용자는 가상 머신 혹은 도커 툴박스를 설치한 후 진행해야 한다.[6]

용어

텐서플로에서 자주 사용되는 기본 용어는 다음이 있다.

  • 오퍼레이션(Op, Operation) : 그래프 상의 노드를 오퍼레이션이라 부른다. 오퍼레이션은 계산을 수행하고 결과를 하나 이상의 텐서로 반환할 수 있다.
  • 텐서(Tensor) : 내부적으로 모든 데이터는 텐서를 통해 표현된다. 텐서는 일종의 다차원 배열을 뜻하며, 그래프 내의 오퍼레이션 간에는 텐서만 전달된다. 이는 카페(Caffe)와 블롭(Blob)과 유사하다.
  • 세션(Session) : 세션이란 오퍼레이션의 실행 환경을 캡슐화한 것을 의미한다. 그래프를 실행하기 위해 세션 객체가 필요하다.
  • 변수(Variables) : 변수는 그래프 실행 시, 패러미터를 저장하고 갱신하는 데 사용된다. 메모리 상에서 텐서를 저장하는 버퍼 역할을 한다.[6]

활용 및 사례

  • 에어비앤비(Airbnb) : 이미지를 분류하고 대규모로 객체를 감지함으로써 게스트에게 더 나은 경험을 제공한다.
  • 에어버스(Airbus) : 위성 이미지에서 정보를 추출하고 고객에게 귀중한 정보를 제공한다. 도시 계획에 따른 지표면의 변화 모니터링, 불법 건축, 자연 재해로 인한 피해와 경관 변화 매핑 등으로 활용한다.
  • 암(ARM) : 하드웨어 추상화 레이어로 텐서플로 라이트의 성능을 4배 이상 향상시켰다.
  • 카루셀(Carousell) : 판매자는 이미지 인식으로 간편해진 게시 환경을 활용하고, 구매자는 추천과 이미지 검색을 통해 관련성이 더욱 높아진 상품 정보를 확인할 수 있도록 환경을 개선한다.
  • 세바(Ceva) : 딥 러닝 프로세서에서 실시간 임베디드 기기에서 사용할 수 있도록 텐서플로로 학습된 네트워크를 자동으로 변환한다.
  • 차이나 모바일(China Mobile) : 텐서플로를 사용하여 자동으로 컷오버 기간을 예측하고, 작업 로그를 확인하고, 네트워크 이상을 감지할 수 있는 딥 러닝 시스템을 만들었다. 이미 세계 최대 규모에 달하는 수억 개의 IoT HSS 번호 재배치를 성공적으로 지원한 이력이 있다.
  • 코카콜라(Coca-Cola) : 텐서플로를 사용해 모바일 구매 증명을 사용하도록 지원하였다.
  • GE : 텐서플로를 사용하여 뇌 MRI 검사 중 특정 해부학적 구조를 식별함으로써 속도와 안정성을 개선하는 데 도움이 되는 신경망을 학습시켰다.
  • 인텔(Intel) : 다양한 모델에서 텐서플로 추론 성능을 최적화하기 위해 구글과 제휴하였다. 덕분에 성능이 2.8배가 향상되어 광범위한 고객과 커뮤니티가 혜택을 입었다.
  • 카카오 택시(Kakao Taxi) : 텐서플로 및 텐서플로 서빙을 사용해 승차 요청을 이행하기 위해 운전자를 파견할 때 운행 완료율을 예측한다.
  • 레노보(Lenovo) : AI 학습 및 기존의 고성능 컴퓨팅을 가속화하고, 텐서플로 통합 및 최적화를 통해 딥 러닝 학습을 최적화한다. LiCO는 다양한 내장형 텐서플로 모델을 제공하며 이러한 모델의 최적화된 분산형 학습을 지원한다.
  • Liulishuo : 2016년 초에 처음으로 텐서플로를 내부 머신러닝 프로젝트에 적용했다. 이는 팀에서 영어를 가르치는 어플리케이션을 빌드하는데 도움이 되었다.
  • 네이버 쇼핑 : 제품을 체계적으로 구성하고 사용자가 더 쉽게 검색할 수 있도록 하루에 등록되는 2000만 개 이상의 제품을 텐서플로를 사용하여 약 5000개의 카테고리에 자동으로 매칭한다.
  • NERSC : 27000개가 넘는 엔비디아(Nvidia) V100 텐서 코어 GPU로 과학인적 DL 어플리케이션을 확장했다. 이 과정에서 ExaFLOP 장벽을 뛰어넘는데 성공했다.
  • 페이팔(Paypal) : 전이 학습 및 생성 모델링을 사용하여 시시각각 변하는 복잡한 사기 패턴을 인식하여 사기 감소 정확성을 높이는 한편, 식별의 정확성을 높임으로써 합법적인 사용자의 경험을 개선하였다.
  • 퀄컴(Qualcomm) 스냅드래곤 모바일 플랫폼과 IoT, 컴퓨팅, XR 및 자동차용으로 설계된 칩셋 포트폴리오 전반에 걸쳐 텐서플로 및 텐서플로 라이트 모델을 최적화하고 가속화한다.
  • 시노베이션 벤처스(Sinovation Ventures) : 텐서플로를 사용하여 망막의 OCT 이미지에서 질병 분류 빛 세분화를 수행한다. 맥락막 신생혈광 형성, 유리체 사마귀 또는 당뇨성 망막 부종이라는 세가지 질환으로 분류 후 병변의 경계를 제공했다.
  • 스위스컴(Swisscom) : 텍스트를 분류하고 전화를 받을 때 고객의 의도를 파악할 수 있도록 머신러닝 모델을 심층적으로 맞춤설정하기 위해 텐서플로를 활용한다.
  • 트위터(Twitter) : 텐서플로를 이용해 수천 명을 팔로잉하는 사용자도 최근의 중요한 트윗을 놓치지 않도록 타임라인을 빌드했다.
  • VSCO : 텐서플로 라이트를 사용해 '포 디스 포토(For This Photo)'를 개발했다. 온디바이스 머신러닝을 통해 사용자가 편집하려는 사진의 유형을 파악한 다음 엄선된 목록에서 적합한 프리셋을 제안한다.
  • WPS Office : 온디바이스 영상 인식과 텐서플로 기반 이미지 OCR같이 다양한 비즈니스 시나리오를 구축한다.[5]
  • 구글 포토 : 서비스를 시작한 지 6개월 만에 500억 장의 사진을 모아 텐서플로에 올려 머신러닝을 통해 학습했다.
  • 랭크브레인 : 머신러닝으로 학습해 이해력을 높여 문장이 애매한 키워드를 입력해도 검색 결과가 나타난다.
  • 스마트 답장 : 지메일(Gmail) 인박스가 이메일의 내용을 이해한 후 적절하고 짧은 답장을 작성한다.[7]
  • 시각 장애 안내 AI : 경기도 화성 동탄 고등학교의 김윤기 학생이 보행로를 인식해 알려주는 AI를 만들었다. 자전거를 타고 촬영한 영상을 텐서플로로 학습시켜 자전거의 앞길은 안전한 길로, 그 외 아스팔트가 놓인 길을 차도로 구별해 음성으로 알려주는 방식이다.[8]

문제점

  • RNN(Recurrent Neural Network)이 테아노(Theano)에 비해 느리고 메모리 소비가 많다. 그러나 이러한 차이는 빠르게 좁혀질 것으로 예상되고 있다.
  • 비정형 데이터를 다루는 예제가 부족하다. 특히 RNN과 관련된 예제에서는 쉽고 어려운 난이도 사이의 차이가 너무 커 오류가 날 가능성이 높다. 텐서플로 개발팀에서 많은 리소스를 투여해주길 권장하고 있다.
  • 한 코드에서 테아노와 텐서플로를 동시에 사용할 수 없다. 결국 GPU 디바이스를 환경변수를 통해 라이브러리마다 따로 지정해서 사용해야 한다. [9]

전망

  • 2019년 6월 24일 텐서플로 월드(TensorFlow World)의 등록이 시작되었다. 2019년 10월 28일에서 31일까지 산타클라라 컨벤션 센터에서 텐서플로 팀과 머신러닝 개발자가 모여 텐서플로의 권장사항 및 사용 사례를 얘기하고 최신 텐서플로 제품 개발 현황을 살펴볼 수 있도록 진행될 예정이다.[10]

각주

  1. 텐서플로(두산백과)〉, 《네이버 지식백과》
  2. 텐서플로(IT용어사전)〉, 《네이버 지식백과》
  3. 텐서플로〉, 《위키백과》
  4. Excelsior-JH, 〈(러닝 텐서플로)Chap01 - 텐서플로란?〉, 《티스토리 블로그》, 2018-05-31
  5. 5.0 5.1 텐서플로 공식 홈페이지 - https://www.tensorflow.org/
  6. 6.0 6.1 김정주, 〈TensorFlow 시작하기〉, 《깃허브》
  7. Jayzzz, 〈텐서플로우 특징 및 장점〉, 《티스토리 블로그》, 2017-08-10
  8. 박태인 기자, 〈시각장애인 안내하는 'AI'... 고2가 이틀만에 만들었다〉, 《중앙일보》, 2018-09-10
  9. The Good, Bad & Ugly of TensorFlow〉, 《개인 블로그》, 2016-05-16
  10. 오라일리 텐서플로 월드 페이지 - https://conferences.oreilly.com/tensorflow/tf-ca?utm_medium=affiliate&utm_source=google&utm_campaign=tfca19&utm_content=tensorflow+links

참고자료

같이 보기


  질문.png 이 문서는 로고가 필요합니다.  

  검수요청.png검수요청.png 이 텐서플로 문서는 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.