주요 컨텐츠로 이동

TensorFlow (텐서 플로우)

Databricks 무료로 시작하기

지난 2015년 11월, Google에서 머신 러닝용 오픈 소스 프레임워크를 출시하며 이를 TensorFlow라 명명했습니다. 이것은 딥러닝, 신경망을 물론 CPU, GPU와 GPU 클러스터의 일반적인 수리적 연산을 지원합니다. TensorFlow의 가장 큰 장점 중 하나는 개발자, 데이터 사이언티스트와 데이터 엔지니어로 구성된 오픈 소스 커뮤니티가 있어 리포지토리에 기여한다는 점입니다. TensorFlow의 최신 버전 및 릴리스 노트는 GitHub에서 확인하실 수 있습니다. TensorFlow는 요즘 사용되는 AI 엔진 중 단연 가장 대중적입니다.

가장 보편적인 인공지능 엔진

TensorFlow란 무엇입니까?

TensorFlow는 수치 계산, 대규모 머신 러닝, 딥러닝, 기타 통계 및 예측 분석 워크로드를 위한 오픈 소스 라이브러리입니다. 데이터 획득, 대규모 예측, 미래 결과 개선을 지원함으로써 개발자들이 머신 러닝 모델을 구현하는 것을 더 빠르고 쉽게 만드는 기술입니다.

그렇다면 TensorFlow의 기능은 정확히 무엇인가요? 손으로 쓴 숫자 분류, 이미지 인식, 단어 임베딩 및 자연어 처리(NLP)와 같은 작업을 위해 심층 신경망을 학습시키고 실행할 수 있습니다. 소프트웨어 라이브러리에 포함된 코드를 모든 응용 프로그램에 추가하여 이러한 작업을 학습시킬 수 있습니다.

TensorFlow 애플리케이션은 기존 CPU(중앙 처리 장치) 또는 GPU(고성능 그래픽 처리 장치)에서 실행할 수 있습니다. TensorFlow는 Google에서 개발했기 때문에 TensorFlow 작업 속도를 높이기 위해 특별히 설계된 회사 자체 텐서 처리 장치(TPU)에서도 작동합니다.

TensorFlow는 어떤 언어로 작성되었는지 알고 싶으신가요? TensorFlow는 프레임워크를 사용하여 애플리케이션을 구축하기 위해 Python을 프론트엔드 API로 사용하지만, 실제로 C++ 및 Java를 포함한 여러 언어의 래퍼(wrapper)가 있습니다. 즉, 사용하는 언어나 플랫폼에 관계없이 머신 러닝 모델을 빠르게 학습하고 배포할 수 있습니다.

TensorFlow 모델 개발에 대한 FAQ를 보려면 여기를 클릭하세요.

TensorFlow 히스토리

Google은 TensorFlow를 2015년에 Apache 2.0 라이선스로 처음 공개했습니다. 그 전신은 딥러닝 구현을 위한 테스트베드를 제공한 DistBelief라는 비공개 소스 Google 프레임워크였습니다.

Google의 첫 번째 TPU는 2016년에 자세히 공개되었으며 TensorFlow와 함께 회사 내부의 일부 애플리케이션 및 온라인 서비스를 지원하는 데 사용되었습니다. 여기에는 Google의 RankBrain 검색 알고리즘과 Street View 매핑 기술이 포함되었습니다.

2017년 초에 구글 TensorFlow는 1.0.0 버전을 출시하였습니다. 1년 후 Google은 Google 클라우드 플랫폼 사용자가 자신의 머신 러닝 모델을 학습시키고 실행할 수 있는 2세대 TPU를 제공했습니다.

Google은 2019년 10월에 최신 버전인 TensorFlow 2.0을 출시했습니다. Google은 사용자들의 피드백을 고려하여 프레임워크를 다양하게 개선하고 더 쉽게 작업할 수 있도록 하였습니다. 예를 들어, 이제 모델 학습에 상대적으로 간단한 Keras API를 사용합니다.

TensorFlow는 누가 만들었나요?

아시다시피 TensorFlow는 Google이 개발했으며 현재도 프레임워크를 소유하고 유지 관리하고 있습니다. TensorFlow는 머신 인텔리전스의 핵심 영역을 발전시키고 딥러닝에 대한 이론 발전을 위한 기초 연구를 수행하는 Google Brain 연구팀이 만들었습니다.

Google Brain 팀은 TensorFlow가 Google의 자체 컴퓨팅 인프라와 독립적으로 작동하도록 설계했지만, 글로벌 기업인 Google의 지원을 받을 수 있었습니다. Google은 프로젝트의 빠른 개발을 위해 자금을 지원하고 수년에 걸쳐 TensorFlow를 개선하여 배포 및 사용의 편의성을 높였습니다.

Google은 AI 개발을 가속하기 위해 TensorFlow를 오픈 소스 프레임워크로 만들기로 결정했습니다. 커뮤니티 기반 프로젝트로서 모든 사용자가 기술 개선에 참여하고 그 이점을 누릴 수 있습니다.

TensorFlow는 어떻게 작동하나요?

TensorFlow는 다양한 머신 러닝과 딥러닝(또는 신경망) 모델과 알고리즘을 결합하여 유용한 공통 인터페이스를 제공합니다.

이를 통해 개발자는 수학적 연산을 표현하는 계산 노드들로 데이터 플로 그래프를 만들 수 있습니다. 노드 간의 각 연결은 다차원 벡터나 행렬을 나타내며, '텐서'가 생성됩니다.

TensorFlow용 프론트엔드 API는 Python이 제공하지만 실제 수학 연산은 Python에서 수행되지 않습니다. 대신 고성능 C++ 이진 파일이 백그라운드에서 연산 작업을 수행합니다. Python은 조각 사이의 트래픽을 전달하고 높은 수준의 프로그래밍 추상화를 통해 연결합니다.

TensorFlow 애플리케이션은 iOS 및 Android 기기, 로컬 머신 또는 클라우드의 클러스터 그리고 CPU 또는 GPU(또는 Google Cloud를 사용하는 경우 Google의 커스텀 TPU)등 거의 모든 대상에서 실행할 수 있습니다.

TensorFlow에는 고수준 및 저수준 API가 모두 포함되어 있습니다. Google은 데이터 파이프라인 개발 및 애플리케이션 프로그래밍을 간소화하기 위해 고수준 API를 권장하지만 애플리케이션 디버깅 및 실험에는 저수준 API(TensorFlow Core)가 유용합니다.

TensorFlow는 어디에 사용되나요? TensorFlow로 무엇을 할 수 있나요?

TensorFlow는 데이터 사이언티스트, 통계학자, 예측 모델러와 같은 사용자를 위한 고급 분석 애플리케이션 개발 및 실행 프로세스를 간소화하도록 설계되었습니다.

다양한 유형과 규모의 기업에서 프로세스를 자동화하고 새로운 시스템을 개발하기 위해 프레임워크를 널리 사용하며, 신경망과 같은 대규모 병렬 처리 애플리케이션에 특히 유용합니다. 또한 자율 주행 차량을 실험하고 테스트하는 데 사용되고 있습니다.

당연히 TensorFlow의 모회사인 Google 또한 검색 엔진의 정보 검색 기능 개선, 자동 이메일 응답 생성, 이미지 분류 및 광학식 문자 인식을 위한 애플리케이션 지원 등의 내부 작업에 TensorFlow를 사용합니다.

TensorFlow의 장점 중 하나인 추상화를 통해 개발자는 프레임워크가 세부 사항을 처리하는 동안 애플리케이션의 전체 논리에 집중할 수 있습니다. 이는 TensorFlow 디버깅과 내부 동작을 파악해야하는 개발자들에게도 편리합니다.

TensorBoard 시각화 제품군에는 그래프 실행 방식을 검사하고 프로파일링할 수 있는 대화형 웹 기반 대시보드가 있습니다. 또한 즉시 실행 모드를 사용하여 전체 그래프를 하나의 불투명한 개체로 생성하고 한 번에 평가하는 대신 각 그래프 연산을 개별적으로 투명하게 평가하고 수정할 수 있습니다.

머신 러닝용 Databricks Runtime에는 TensorFlowTensorBoard가 포함되어 있어 패키지를 설치하지 않고도 라이브러리를 사용할 수 있습니다.

이제 TensorFlow를 사용하는 방법을 살펴보겠습니다.

TensorFlow 설치 방법

tensorflow.org에서 모든 지침 및 자습서를 확인하실 수 있으며 기본 지침은 다음과 같습니다.

시스템 요구 사항:

  • Python 3.7+
  • pip 19.0 이상(manylinux2010 지원 필요, TensorFlow 2에는 최신 버전의 pip 필요)
  • Ubuntu 16.04 이상(64비트)
  • macOS 10.12.6(Sierra) 이상(64비트)(GPU 지원 필요 없음)
  • Windows 7 이상(64비트)

하드웨어 요구 사항:

  • TensorFlow 1.6부터 이진 AVX 명령어가 이전 CPU에서 실행되지 않을 수 있습니다.
  • GPU 지원에는 CUDA® 지원 카드(Ubuntu 및 Windows) 필요

#1. 내 시스템에 Python 개발 환경 설치

Python 환경이 이미 구성되어 있는지 확인합니다.

python3 - -version

pip3 - -version

이러한 패키지가 이미 설치되어 있는 경우 다음 단계로 건너뜁니다.

설치되어 있지 않은 경우 Python, pip 패키지 관리자 및 venv를 설치합니다.

가상 환경이 아닌 경우 아래 명령에 python3 -m pip를 사용합니다. 이렇게 하면 시스템 pip 대신 Python pip를 업그레이드하고 사용할 수 있습니다.

#2. 가상 환경 만들기(권장)

Python 가상 환경은 시스템에서 패키지 설치를 격리하는 데 사용됩니다.

#3. TensorFlow pip 패키지 설치

PyPI에서 다음 중 하나의 TensorFlow 패키지를 선택하여 설치하세요.

  • tensorflow —CPU 및 GPU를 지원하는 안정적인 최신 릴리스(Ubuntu 및 Windows)
  • tf-nightly —미리보기 빌드(불안정함). Ubuntu 및 Windows에는 GPU 지원이 포함됩니다.
  • tensorflow==1.15 —TensorFlow 1.x의 최종 버전입니다.

설치를 확인합니다. 텐서가 반환되면 TensorFlow를 성공적으로 설치한 것입니다.

참고: 일부 설치 메커니즘에는 TensorFlow Python 패키지의 URL이 필요합니다. 지정하는 값은 Python 버전에 따라 달라집니다.

TensorFlow를 업데이트하는 방법

pip 패키지 관리자는 모든 환경에서 간단하게 TensorFlow를 업그레이드하는 방법을 제공합니다.

필수 구성 요소:

  • Python 3.6-3.9 설치 및 구성(시작하기 전에 Python 버전을 확인하세요)
  • TensorFlow 2 설치
  • pip 패키지 관리자 버전 19.0 이상(필요한 경우 pip 버전을 확인하고 업그레이드)
  • 명령줄/터미널 또는 노트북 환경 액세스

다음 단계에 따라 TensorFlow를 최신 버전으로 업그레이드하세요.

#1. 터미널을 엽니다(CTRL+ALT+T).

#2. 현재 설치된 TensorFlow 버전을 확인합니다.

pip3 show tensorflow

이 명령은 버전 등의 패키지 정보를 표시합니다.

#3. 다음을 TensorFlow를 최신 버전으로 업그레이드하세요.

pip3 install - -upgrade tensorflow==<version>

Python 릴리스와 호환되는 버전을 선택하지 않으면 버전이 설치되지 않습니다. 노트북 환경의 경우 다음 명령을 사용하고 완료 후 커널을 다시 시작합니다.

!pip install - -upgrade tensorflow==<version>

이렇게 하면 종속성과 이전 버전이 자동으로 제거되고 최신 업그레이드가 설치됩니다.

#4. 다음을 실행하여 업그레이드된 버전을 확인하세요.

pip3 show tensorflow

TensorFlow Lite란 무엇인가요?

2017년 Google은 TensorFlow Lite라는 새로운 버전의 TensorFlow를 출시했습니다. TensorFlow Lite는 임베디드 및 모바일 기기 사용에 최적화되어 있으며 상용화 가능한 오픈 소스 크로스 플랫폼 딥러닝 프레임워크로, 사전 훈련된 TensorFlow 모델을 속도나 저장 공간에 최적화된 형식으로 변환합니다.

각 시나리오에 적합한 버전을 사용하기 위해서는 TensorFlow를 사용해야 하는 경우와 TensorFlow Lite를 사용해야 하는 경우를 알아야 합니다. 예를 들어 네트워크 연결이 좋지 않은 지역에 고성능 딥러닝 모델을 배포해야 하는 경우 TensorFlow Lite를 사용하여 파일 크기를 줄이는 것이 좋습니다.

에지 디바이스용 모델을 개발 중인 경우, 공간을 최대한 덜 차지하고 낮은 대역폭 네트워크에서 다운로드 속도를 높일 수 있도록 가벼워야 합니다. 그러려면 모델을 최적화하여 크기와 지연 시간을 줄여야 합니다. —TensorFlow Lite는 양자화 및 가중치 프루닝을 통해 최적화를 수행합니다.

생성된 모델은 충분히 가벼워서 Android 또는 iOS 휴대폰과 같은 에지 디바이스나 Raspberry Pi나 마이크로 컨트롤러와 같은 Linux 기반의 내장 디바이스에서 저지연 추론을 위해 배포될 수 있습니다. TensorFlow Lite는 속도, 정확도 그리고 에지에서 추론을 실행하는데 중요한 전력 소비 최적화를 위해 여러 하드웨어 액셀러레이터를 사용합니다.

TensorFlow의 밀집 계층이란 무엇인가요?

밀집 계층은 얕은 신경망 및 깊은 신경망 생성에 사용됩니다. 인공 신경망(ANN)은 뇌와 유사한 아키텍처로 뉴런 시스템으로 구성되었으며 특정 규칙으로 프로그래밍되는 대신 예제를 통해 학습할 수 있습니다.

딥러닝에서는 여러 계층을 사용하여 원시 입력에서 고수준의 특징을 추출합니다. 네트워크가 여러 계층으로 구성되어 있는 경우 깊은 이를 쌓인 신경망이라고 부릅니다. 각 레이어는 노드로 구성되어 있으며, 노드들은 데이터로부터의 입력과 가중치라고 불리는 계수들의 집합을 결합하여 입력을 증폭하거나 감소시킵니다.

TensorFlow의 2.0 버전에서는 Keras라는 딥러닝 API를 도입하였습니다. Keras는 TensorFlow 위에서 운영되며, 다양한 신경망 구조와 목적에 맞는 사전 구성된 계층을 제공합니다. 밀집 계층 역시 이에 해당되며, 각 뉴런이 이전 계층의 모든 뉴런으로부터 입력을 받는 심층 연결을 갖습니다.

밀집 계층은 주로 생성된 벡터의 차원 변경, 회전, 스케일링, 이동에 사용되며 이전 계층의 모든 결합된 특성으로부터 특성을 학습할 수 있습니다.

TensorFlow와 Python의 차이점은 무엇인가요?

TensorFlow는 오픈 소스 머신 러닝 프레임워크이고 Python은 널리 사용되는 컴퓨터 프로그래밍 언어입니다. TensorFlow에서 사용되는 언어 중 하나입니다. TensorFlow에 권장되는 언어는 Python이지만 C++ 및 JavaScript도 사용합니다.

Python은 프로그래머가 소규모 프로젝트와 대규모 프로젝트 모두에 명확하고 논리적인 코드를 작성하는 것을 돕기 위해 개발되었습니다. Python은 웹 사이트 및 소프트웨어를 구축하고, 작업을 자동화하고, 데이터 분석을 수행하는 데 자주 사용되기 때문에 초보자도 TensorFlow를 비교적 간단하게 배울 수 있습니다.

TensorFlow는 어떤 버전의 Python을 지원하는지를 아는 것이 도움이 될 것입니다. 특정 TensorFlow 릴리스는 특정 버전의 Python과만 호환되며 2.0에는 Python 3.7에서 3.10이 필요합니다. TensorFlow를 설치하기 전에 요구사항을 확인하시기 바랍니다.

PyTorch 및 TensorFlow란 무엇인가요?

TensorFlow 말고도 다른 머신 러닝 프레임워크가 있습니다. PyTorch와 같은 다른 선택지들이 있으며, 이들은 유사성이 있고 많은 공통된 요구사항을 충족합니다. 그렇다면 TensorFlow와 PyTorch은 어떤 점에서 다를까요?

PyTorch와 TensorFlow는 Python 딥러닝 환경을 위해 기술 회사에서 개발한 프레임워크 중 두 가지에 불과하며 컴퓨터가 인간과 유사하게 실제 문제를 해결할 수 있도록 지원합니다. PyTorch와 TensorFlow의 주요 차이점은 코드를 실행하는 방식입니다. PyTorch는 Python 언어와 더 긴밀하게 통합됩니다.

앞에서 살펴보았듯이 TensorFlow는 강력한 시각화 기능, 프로덕션용 배포 옵션 및 모바일 플랫폼 지원을 제공합니다. PyTorch는 TensorFlow만큼 널리 사용되지는 않지만 간단하고 사용이 용이하며 동적 계산 그래프와 효율적인 메모리 사용 등을 제공하여 인기가 있습니다.

TensorFlow 또는 PyTorch ­중 어느 것이 더 나은지는 사용 목적에 따라 다릅니다. AI 관련 제품에는 TensorFlow가, 연구 중심의 개발에는 PyTorch가 적합합니다. PyTorch는 프로젝트를 단기간에 시작하고 실행하는 데 적합한 반면 TensorFlow는 강력한 기능 덕분에 대규모 프로젝트와 복잡한 워크플로에 적합합니다.

TensorFlow를 이용하는 기업

TensorFlow 웹사이트에 따르면 Google뿐만 아니라 에어비앤비, 코카콜라, eBay, 인텔, 퀄컴, SAP, 트위터, 우버, 스냅챗 개발사 스냅, 스포츠 컨설팅 회사 STATS LLC 등 많은 유명 기업에서도 이 프레임워크를 사용합니다.

TensorFlow를 이용하는 기업

TensorFlow의 상위 5개 대안

1. DataRobot

DataRobot은 기업이 머신 러닝 모델을 배포하고 고급 AI 애플리케이션을 만들어 데이터 사이언스 기능을 확장할 수 있도록 설계된 클라우드 기반 머신 러닝 프레임워크입니다.

R, Python, Spark, H2O, VW, XGBoost 등과 같이 유용한 오픈 소스 모델링 기법을 사용하고 최적화할 수 있도록 지원합니다. DataRobot은 예측 분석을 자동화하여 데이터 사이언티스트와 애널리스트가 보다 정확한 예측 모델을 생성할 수 있도록 지원합니다.

각 모델을 구축하기 위한 최적의 기능, 알고리즘, 매개변수 값에 대한 라이브러리가 계속 확장되고 있으며, 자동 통합 기능은 사용자가 시행착오를 겪지 않고 다양한 알고리즘과 사전 구축된 프로토타입을 쉽게 찾아 특성 추출과 데이터 준비에 사용할 수 있도록 지원합니다.

2. PyTorch

Facebook 팀이 개발하고 2017년 GitHub.com에서 오픈 소스로 공개한 PyTorch는 새로운 딥러닝 프레임워크입니다. 앞서 언급했듯이 하드웨어 가속 컴포넌트와 디자인을 진행하며 즉각적인 개발이 가능한 양방향 개발 모델 등, TensorFlow와 여러 가지 유사점을 가지고 있습니다.

PyTorch는 또한 Python의 비동기 실행에 대한 기본 지원을 활용하여 성능을 최적화합니다. 내장된 동적 그래프와 TensorFlow의 강력한 커뮤니티가 장점입니다.

그러나 PyTorch는 학습된 모델을 온라인으로 직접 배포하기 위한 프레임워크를 제공하지 않으며 프로덕션에 API 서버가 필요합니다. 또한 시각화에 타사 —Visdom—이 필요하며 기능이 다소 제한적입니다.

3. Keras

Keras는 사용자 친화적이고 확장하기 쉽도록 설계된 모듈식 고급 오픈 소스 신경망 라이브러리입니다. 주요 (및 기본) 백엔드는 TensorFlow이며 Google의 주요 지원을 받지만, Python으로 작성되었으며 여러 백엔드 신경망 계산 엔진을 지원합니다.

앞서 살펴본 TensorFlow Keras 고수준 API와 마찬가지로 Keras도 Theano를 기반으로 실행됩니다. 신경망 계층, 비용 함수, 옵티마이저, 초기화 체계, 활성화 함수 및 정규화 체계를 포함하여 결합할 수 있는 여러 독립 실행형 모듈이 포함됩니다.

Keras는 광범위한 프로덕션 배포 옵션을 지원하고 다중 GPU 및 분산 교육에 대한 강력한 지원을 제공합니다. 그러나 커뮤니티 지원이 매우 제한적이며 라이브러리는 일반적으로 작은 데이터세트에 사용됩니다.

4. MXNet

Apache MXNet은 오픈 소스 딥러닝 소프트웨어 프레임워크로, 다양한 디바이스에서 심층 신경망을 정의, 훈련 및 배포하는 데 사용됩니다. Amazon에서 AWS의 프리미어 딥러닝 프레임워크로 채택되는 성과를 거두었습니다.

여러 GPU와 여러 머신에서 거의 선형으로 확장할 수 있어 빠른 모델 학습이 가능하며 사용자가 기호 프로그래밍과 명령형 프로그래밍을 혼합하여 효율성과 생산성을 극대화할 수 있는 유연한 프로그래밍 모델을 지원합니다.

MXNet은 또한 Python, C++, Scala, R, JavaScript, Julia, Perl 및 Go 등 여러 프로그래밍 언어 API를 지원합니다(기본 API는 TensorFlow만큼 작업 친화적이지는 않음).

5. CNTK

CNTK라고도 불리는 Microsoft Cognitive Toolkit은 계산 단계의 일련의 과정으로 데이터 플로를 설명하는 그래프 구조를 사용하는 통합 딥러닝 툴킷입니다(TensorFlow와 비슷하지만 배우고 배포하는 것이 쉽지는 않음).

이 툴킷은 주로 딥러닝 신경망을 생성하는 데 중점을 두며 이러한 작업을 빠르게 처리할 수 있습니다. CNTK는 사용자들이 feed-forward DNN, 컨볼루션 네트워크(CNN), 회귀형 네트워크(RNN/LSTM)와 같은 인기 있는 모델 유형을 쉽게 이해하고 결합하도록 .

다양한 API(Python, C++, C#, Java)를 갖추고 있으며, 이를 Python, C#, 또는 C++ 프로그램에 라이브러리로 포함시키거나—자체 모델 설명 언어(BrainScript)를 통해 독립적인 머신 러닝 도구로 사용할 수 있습니다. 64비트 Linux 또는 64비트 Windows 운영 체제를 지원합니다.

참고: 2.7 버전은 CNTK의 마지막 주요 릴리즈였으며, 새로운 기능 개발 계획은 없습니다.

TensorFlow를 사용해야 할까요?

TensorFlow는 장점이 많습니다. 오픈 소스 머신 러닝 프레임워크는 뛰어난 아키텍처 지원을 제공하여 다양한 플랫폼에서 계산 프레임워크를 쉽게 배포할 수 있습니다. Google의 명성 덕분에 여러 유명 기업에서 인공 지능 작업을 수행하는 데 사용되었습니다.

그러나, TensorFlow의 구현과 관련된 몇 가지 세부적인 부분들 때문에, 일부 학습에는 일관성 있는 학습 결과를 얻는 것이기 어렵습니다. 하지만 팀은 작업 흐름 내에서 결정성을 더욱 효과적으로 관리할 수 있는 방안을 검토 중입니다.

머신 러닝용 Databricks Runtime이 지원하는 TensorFlow by Databricks를 사용하면 추가 설정 없이 즉시 시작할 수 있습니다. 몇 초 만에 Cluster를 시작하고 실행할 수 있으며 다양한 저수준 및 고수준 API의 이점을 누릴 수 있습니다.

추가 자료

용어집으로 돌아가기