1. 텐서플로우(TensorFlow) 아키텍처(Architecture)

  • 텐서플로우는 대규모 분산 학습 및 추론을 위한 파이썬 라이브러리

  • 텐서플로우는 기본적으로 크로스 플랫폼 라이브러리(플랫폼에 상관이 거의 없음)

  • C API가 로우 레벨단에 존재하므로 프로그래머가 다양한 프로그래밍 언어를 이용해 소스코드를 작성할 수 있도록 해준다는 특징이 있음

  • C API에서 작성하는 것이기에 C++에서도 가능함

1) 클라이언트(Client)

 -컴퓨터 연산과정을 데이터플로우 그래프 형태로 표현

 -세션을 이용해 한번의 그래프 실행 시작을 알릴 수 있음

 -우리가 작업하는 부분은 클라이언트 부분

 

2)분산된 마스터(Distributed Master)

 -세션의 시작을 위한 인수로 정의된 그래프에서 부분그래프를 정리

 -하위 그래프를 다른 프로세스와 장치에서 실행되는 여러 조각으로 분할

 -그래프 조각이 처리될 수 있도록 작업자 서비스에게 분배

 -작업자 서비스가 실행할 그래프 조각을 초기화

 

3)작업자 서비스(Worker Services)

 -특정 하드웨어에게 적절한 커널 기능을 이용하는 그래프 작업의 실행을 관리

 -그래프가 효율적으로 동작하도록 하기 위해서 커널기능을 잘 이용하는 것이 관건

 -다른 작업자 서비스와 실행결과를 주고받음

 

4)커널기능(Kernel Implementations)

 -개별적인 그래프 작업을 처리

 -실질적으로 컴퓨터가 연산을 처리하는 부분

2. 세션(Session)

  • 텐서플로우는 방향 그래프를 기반으로 설계된 기계학습 라이브러리

  • 텐서플로우에서 데이터의 처리 단위는 텐서이기 때문에 이러한 현상 나옴

  • 함수가 바로 연산을 하는 것이 아닌 그래프를 정의한 것임

  • 연산을 수행하기 위해서 필요한 것이 세션(Session)임

sess = tf.Session()

sess.run()을 통해 그래프를 동작하도록 할 수 있음

print(c)를 했을 때 결과 값을 보면 텐서는 연산이 된것이 아닌 형태만 잡혀있다는 것을 알 수 있음

+ Recent posts