태그 보관물: Eager Execution

TensorFlow 1.5.0 Release

텐서플로 1.5.0 버전이 릴리즈되었습니다. RC 버전에서 소개되었던 것처럼 Eager execution과 TensorFlow Lite의 프리뷰 버전이 포함되어 있습니다. 구글 개발자 블로그에서 텐서플로 1.5에 추가된 기능에 대해 조금 더 자세히 소개하고 있습니다. 여기에는 Eager execution의 가이드 문서와 TensorFlow Lite의 코드랩 TFlite 튜토리얼이 소개되어 있습니다.

텐서플로 1.5.0 부터는 CUDA 9, cuDNN 7에서 컴파일된 PyPI 패키지가 제공됩니다. pip를 사용해 설치하려면 두 라이브러리를 업데이트해 주어야 합니다. 텐서플로 1.5.0의 설치 가이드는 다음 포스트도 참고하세요. 그리고 glibc 버전 2.23에서 컴파일 되기 때문에 현재 리눅스의 glibc 버전이 낮다면 업그레이드해 주어야 합니다.

$ pip install --upgrade tensorflow
$ pip install --upgrade tensorflow-gpu

(업데이트) cuBLAS 패치 버전(9.1)과 cuDNN 7.0.5에서도 1.5.0 버전을 설치할 수 있습니다.

(업데이트) 텐서플로 로드맵 페이지에서 앞으로의 개발 방향을 살짝 엿볼 수 있는데요. 눈에 띄이는 것들이 여러개 있는 것 같습니다. C++, Java 등의 언어지원, 고수준 API(케라스로 부족한 걸까요?), 자동 배치 알고리즘(!!!), OpenCL 지원(!!!!) 등이 입맛을 당기네요. 🙂

TensorFlow Eager Execution

오늘 다이나믹 그래프를 지원하는 텐서플로의 Eager Execution 기능이 소개되었습니다. 올해 초에 명령형imperative 스타일의 기능이 텐서플로에 추가되었습니다(TensorFlow 1.1.0 RC2 and Imperative Style). 다음 버전인 1.5.0에서 이 기능이 빠지고 새롭게 Eager Execution으로 추가되는 것 같습니다.

텐서플로의 텐서는 연산 노드를 가리키는 핸들과 같았습니다(TF의 텐서와 상수, 변수, 플레이스홀더). Eager Execution에서 텐서는 데이터를 직접 포인팅합니다. 그래서 tf.Session을 시작하지 않고 직접 값을 얻을 수 있습니다.

>>> import tensorflow.contrib.eager as tfe
>>> tfe.enable_eager_execution()
>>> c = tf.constant(1)
>>> c
<tf.Tensor: id=0, shape=(), dtype=int32, numpy=1>

텐서 c를 확인해 보면 numpy 속성이 생긴 것을 알 수 있습니다.

>>> c.numpy()
1
>>> type(c)
EagerTensor
>>> type(c.numpy())
numpy.int32

Eager Execution은 NumPy와 호환성을 크게 높인 것 같습니다. 계산 그래프의 생성과 실행 단계가 구분되지 않으므로 파이썬의 조건문으로 계산 그래프를 동적으로 조직할 수 있습니다. 이외에도 그래디언트 계산과 동적 모델에 관한 기능들이 많이 추가되었습니다.

Eager Execution은 한번 설정하면 취소할 수 없어서 파이썬 세션을 새로 시작해야 합니다. 또 tf.data와 tf.layers 밑의 클래스를 사용해야 합니다. 아직 파이토치PyTorch 만큼은 자유도가 높아 보이지는 않지만 점점 다른 프레임워크의 장점을 흡수하는 모습은 기대가 됩니다. 텐서플로에 비하면 파이토치 사용자가 극히 적을 텐데도 상당히 의식하는 것 같습니다. 🙂

… we’re looking for feedback from the community to guide our direction.

텐서플로의 종전 API가 그랬듯이 Eager Execution도 향후에 상당히 변화가 많이 있을 것으로 예상됩니다. 좀 더 자세한 내용은 깃허브의 가이드 문서예제를 참고하세요.

Eager Execution을 사용해 보려면 다음 명령으로 텐서플로의 Nightly 빌드를 설치하면 됩니다.

$ pip install tf-nightly
$ pip install tf-nightly-gpu