TensorFlow는 기계 학습과 인공 지능을 위한 소프트웨어 라이브러리로, 주로 신경망의 훈련과 추론에 사용된다. PyTorch와 같은 다른 프레임워크와 함께 가장 인기 있는 딥 러닝 프레임워크 중 하나이다. Apache License 2.0에 따라 무료 오픈 소스 소프트웨어로 출시된 TensorFlow는 Google Brain 팀이 Google의 내부 연구 및 프로덕션 용도로 개발했다. 초기 버전은 2015년에 출시되었으며, 업데이트된 버전인 TensorFlow 2.0은 2019년 9월에 이어서 출시되었다. TensorFlow는 Python, JavaScript, C++, Java를 포함한 다양한 프로그래밍 언어를 지원하여 여러 분야에서의 사용을 용이하게 한다.
역사
DistBelief
2011년부터 Google Brain은 딥 러닝 신경망을 기반으로 한 독점 기계 학습 시스템인 DistBelief를 구축했다. 그 사용은 다양한 Alphabet 회사에서 연구 및 상업 응용 프로그램 모두에서 빠르게 성장했다. Google은 Jeff Dean을 포함한 여러 컴퓨터 과학자들을 배정하여 DistBelief의 코드베이스를 더 빠르고 견고한 애플리케이션급 라이브러리로 단순화하고 리팩터링하게 했으며, 이것이 TensorFlow가 되었다. 2009년에 Geoffrey Hinton이 이끄는 팀은 일반화된 역전파 및 기타 개선 사항을 구현하여 상당히 높은 정확도를 가진 신경망을 생성할 수 있게 했으며, 예를 들어 음성 인식에서 오류를 25% 줄였다.
TensorFlow
TensorFlow는 Google Brain의 2세대 시스템이다. 버전 1.0.0은 2017년 2월 11일에 출시되었다. 참조 구현은 단일 장치에서 실행되지만, TensorFlow는 여러 CPU와 GPU에서 실행될 수 있다(그래픽 처리 장치의 범용 컴퓨팅을 위한 선택적 CUDA 및 SYCL 확장 포함). TensorFlow는 64비트 Linux, macOS, Windows 및 Android와 iOS를 포함한 모바일 컴퓨팅 플랫폼에서 사용할 수 있다. 유연한 아키텍처는 다양한 플랫폼(CPU, GPU, TPU)에서의 계산 배포를 용이하게 하며, 데스크톱에서 서버 클러스터, 모바일 및 엣지 장치에 이르기까지 다양하다.
TensorFlow 계산은 상태 저장 데이터 흐름 그래프로 표현된다. TensorFlow라는 이름은 이러한 신경망이 다차원 데이터 배열(텐서라고 함)에 대해 수행하는 연산에서 유래한다. 2016년 6월 Google I/O 컨퍼런스에서 Jeff Dean은 GitHub에서 1,500개의 저장소가 TensorFlow를 언급했으며 그중 5개만 Google에서 나온 것이라고 밝혔다.
2018년 3월, Google은 JavaScript 기계 학습을 위한 TensorFlow.js 버전 1.0을 발표했다. 2019년 1월, Google은 TensorFlow 2.0을 발표했으며, 이는 2019년 9월에 공식적으로 사용 가능해졌다. 2019년 5월, Google은 컴퓨터 그래픽의 딥 러닝을 위한 TensorFlow Graphics를 발표했다.
텐서 처리 장치(TPU)
2016년 5월, Google은 기계 학습을 위해 특별히 구축되고 TensorFlow에 맞춰진 주문형 집적 회로(ASIC)인 텐서 처리 장치(TPU)를 발표했다. TPU는 저정밀 산술(예: 8비트)의 높은 처리량을 제공하도록 설계된 프로그래밍 가능한 AI 가속기이며, 훈련보다는 모델 사용 또는 실행에 중점을 둔다. Google은 데이터 센터 내에서 1년 이상 TPU를 실행해 왔으며, 기계 학습에서 와트당 성능이 한 자릿수 더 최적화된 것을 발견했다고 밝혔다.
2017년 5월, Google은 2세대 TPU와 Google Compute Engine에서의 사용 가능성을 발표했다. 2세대 TPU는 최대 180테라플롭스의 성능을 제공하며, 64개의 TPU 클러스터로 구성되면 최대 11.5페타플롭스를 제공한다. 2018년 5월, Google은 최대 420테라플롭스의 성능과 128GB 고대역폭 메모리(HBM)를 제공하는 3세대 TPU를 발표했다. Cloud TPU v3 Pods는 100페타플롭스 이상의 성능과 32TB HBM을 제공한다. 2018년 2월, Google은 Google Cloud Platform에서 TPU를 베타 버전으로 제공한다고 발표했다.
Edge TPU
2018년 7월, Edge TPU가 발표되었다. Edge TPU는 스마트폰과 같은 소형 클라이언트 컴퓨팅 장치에서 TensorFlow Lite 기계 학습(ML) 모델을 실행하도록 설계된 Google의 특수 목적 ASIC 칩으로, 엣지 컴퓨팅으로 알려져 있다.
TensorFlow Lite
2017년 5월, Google은 모바일 및 임베디드 장치용 기계 학습 모델을 지원하는 소프트웨어 스택으로 TensorFlow Lite를 발표했으며, 2017년 11월에 개발자 미리 보기를 제공했다. 2019년 1월, TensorFlow 팀은 Android 장치의 OpenGL ES 3.1 Compute Shaders와 iOS 장치의 Metal Compute Shaders를 사용하는 모바일 GPU 추론 엔진의 개발자 미리 보기를 출시했다. 2019년 5월, Google은 TensorFlow Lite Micro(마이크로컨트롤러용 TensorFlow Lite라고도 함)와 ARM의 uTensor가 통합될 것이라고 발표했다. 2024년에 LiteRT로 이름이 변경되었다.
TensorFlow 2.0
연구 논문에서 TensorFlow의 시장 점유율이 PyTorch에 유리하게 감소함에 따라, TensorFlow 팀은 2019년 9월에 라이브러리의 새로운 주요 버전 출시를 발표했다. TensorFlow 2.0은 많은 변경 사항을 도입했으며, 가장 중요한 것은 TensorFlow eager로, 자동 미분 방식을 정적 계산 그래프에서 Chainer와 이후 PyTorch에 의해 대중화된 "Define-by-Run" 방식으로 변경했다. 다른 주요 변경 사항으로는 이전 라이브러리 제거, 다른 버전의 TensorFlow에서 훈련된 모델 간의 교차 호환성, GPU 성능의 상당한 개선이 포함되었다.
기능
자동 미분
자동 미분은 모델의 각 매개변수에 대한 기울기 벡터를 자동으로 계산하는 프로세스이다. 이 기능을 통해 TensorFlow는 모델의 매개변수에 대한 기울기를 자동으로 계산할 수 있으며, 이는 성능 최적화에 기울기를 요구하는 역전파와 같은 알고리즘에 유용하다. 이를 위해 프레임워크는 모델의 입력 텐서에 수행된 연산 순서를 추적한 다음 적절한 매개변수에 대한 기울기를 계산해야 한다.
즉시 실행
TensorFlow는 "즉시 실행" 모드를 포함하며, 이는 연산이 나중에 실행되는 계산 그래프에 추가되는 대신 즉시 평가된다는 것을 의미한다. 즉시 실행되는 코드는 각 코드 줄에서 데이터가 보강되므로 계산 그래프에서 나중에가 아니라 디버거를 통해 단계별로 검사할 수 있다. 이 실행 패러다임은 단계별 투명성 때문에 디버깅하기 더 쉽다고 간주된다.
분산
즉시 실행 및 그래프 실행 모두에서 TensorFlow는 다양한 분산 전략을 통해 여러 장치에 계산을 분산하기 위한 API를 제공한다. 이 분산 컴퓨팅은 TensorFlow 모델의 훈련 및 평가 실행 속도를 높일 수 있으며 AI 분야에서 일반적인 관행이다.
손실 함수
모델을 훈련하고 평가하기 위해 TensorFlow는 손실 함수(비용 함수라고도 함) 세트를 제공한다. 인기 있는 예로는 평균 제곱 오차, 범주형 교차 엔트로피 및 힌지 손실이 있다. 이러한 함수는 예측 출력과 실제 출력 간의 차이를 측정하여 훈련 중 최적화 프로세스를 안내한다.
영향 및 채택
TensorFlow는 Machine learning 분야의 기초 도구가 되었으며, 연구자와 개발자가 Deep learning 모델을 대규모로 구축하고 배포할 수 있게 했다. Google Cloud와의 통합 및 Neural network 아키텍처 지원은 학계와 산업계 모두에서 표준 선택이 되게 했다. TensorFlow의 출시는 Artificial intelligence 기술의 더 넓은 채택에 기여했으며, 이후 프레임워크와 도구에 영향을 미쳤다. 2024년 현재 TensorFlow는 여전히 널리 사용되지만, 연구 환경에서는 PyTorch와 경쟁에 직면해 있다. 지속적인 개발은 성능, 사용성 및 배포 문제를 해결하여 진화하는 AI 환경에서 관련성을 유지하고 있다.