TensorFlow

TensorFlow는 Google에서 만든 기계 학습을 위한 오픈 소스 프레임워크입니다. CPU, GPU 및 GPU 클러스터에 대한 딥 러닝 및 일반 수치 컴퓨팅을 지원합니다. Apache 라이선스 2.0의 사용 약관이 적용됩니다.

Machine Learning용 Databricks Runtime에는 TensorFlow 및 TensorBoard가 포함되어 있으므로 패키지를 설치하지 않고도 이러한 라이브러리를 사용할 수 있습니다. 사용 중인 Databricks Runtime ML 버전에 설치된 TensorFlow 버전은 릴리스 정보를 참조하세요.

참고

이 가이드는 TensorFlow에 대한 포괄적인 가이드가 아닙니다. TensorFlow 웹 사이트를 참조하세요.

단일 노드 및 분산 학습

단일 컴퓨터 워크플로를 테스트하고 마이그레이션하려면 단일 노드 클러스터를 사용합니다.

딥 러닝에 대한 분산 학습 옵션은 분산 학습을 참조하세요.

예제 Notebook

다음 Notebook은 단일 노드 클러스터에서 TensorBoard 모니터링으로 TensorFlow(1.x 및 2.x)를 실행하는 방법을 보여 줍니다.

TensorFlow 1.15/2.x Notebook

Notebook 가져오기

TensorBoard

TensorBoard는 TensorFlow, PyTorch 및 기타 기계 학습 프로그램을 디버깅, 최적화 및 이해하기 위한 시각화 도구 모음입니다.

TensorBoard 사용

Databricks Runtime 7.2 이상에서 TensorBoard 사용

Azure Databricks에서 TensorBoard를 시작하는 것은 로컬 컴퓨터의 Jupyter Notebook에서 시작하는 것과 다르지 않습니다.

  1. %tensorboard 매직 명령을 로드하고 로그 디렉터리를 정의합니다.

    %load_ext tensorboard
    experiment_log_dir = <log-directory>
    
  2. %tensorboard 매직 명령을 호출합니다.

    %tensorboard --logdir $experiment_log_dir
    

    TensorBoard 서버가 시작되고 Notebook에 인라인으로 사용자 인터페이스가 표시됩니다. 또한 새 탭에서 TensorBoard를 여는 링크도 제공합니다.

    다음 스크린샷은 채워진 로그 디렉터리에서 시작된 TensorBoard UI를 보여 줍니다.

    채워진 로그 디렉터리에서 시작된 TensorBoard UI

TensorBoard의 Notebook 모듈을 직접 사용하여 TensorBoard를 시작할 수도 있습니다.

from tensorboard import notebook
notebook.start("--logdir {}".format(experiment_log_dir))

Databricks Runtime 7.1 이하에서 TensorBoard 사용

Notebook에서 TensorBoard를 시작하려면 dbutils.tensorboard 유틸리티를 사용합니다.

dbutils.tensorboard.start("/tmp/tensorflow_log_dir")

이 명령은 클릭하면 새 탭에서 TensorBoard를 여는 링크를 표시합니다.

이 API를 사용하기 시작하면 TensorBoard는 dbutils.tensorboard.stop()으로 중지하거나 클러스터를 종료할 때까지 계속 실행됩니다.

참고

TensorFlow를 Azure Databricks 라이브러리로 클러스터에 연결하는 경우 TensorBoard를 시작하기 전에 Notebook을 다시 연결해야 할 수 있습니다.

TensorBoard 로그 및 디렉터리

TensorBoard는 TensorBoard 또는 PyTorch의 TensorBoard 콜백 및 함수에 의해 생성된 로그를 읽어 기계 학습 프로그램을 시각화합니다. 다른 기계 학습 라이브러리에 대한 로그를 생성하려면 TensorFlow 파일 작성기를 사용하여 직접 로그를 작성할 수 있습니다(TensorFlow 2.x의 경우 모듈: tf.summary를 참조하고 TensorFlow 1.x의 이전 API의 경우 모듈: tf.compat.v1.summary 참조).

실험 로그가 안정적으로 저장되도록 Azure Databricks에서는 임시 클러스터 파일 시스템이 아닌 DBFS(즉, /dbfs/ 아래의 로그 디렉터리)에 로그를 기록할 것을 권장합니다. 각 실험에 대해 고유한 디렉터리에서 TensorBoard를 시작합니다. 로그를 생성하는 실험에서 기계 학습 코드를 실행할 때마다 실험 디렉터리의 하위 디렉터리에 쓰도록 TensorBoard 콜백 또는 파일 작성기를 설정합니다. 그렇게 하면 TensorBoard UI의 데이터가 실행으로 분리됩니다.

TensorBoard를 사용하여 기계 학습 프로그램에 대한 정보를 기록하려면 공식 TensorBoard 설명서를 참조하세요.

TensorBoard 프로세스 관리

Azure Databricks Notebook 내에서 시작된 TensorBoard 프로세스는 Notebook이 분리되거나 REPL이 다시 시작될 때(예: Notebook의 상태를 지울 때) 종료되지 않습니다. TensorBoard 프로세스를 수동으로 종료하려면 %sh kill -15 pid를 사용하여 종료 신호를 보냅니다. 잘못 종료된 TensorBoard 프로세스는 notebook.list()를 손상시킬 수 있습니다.

현재 클러스터에서 실행 중인 TensorBoard 서버를 해당 로그 디렉터리 및 프로세스 ID와 함께 나열하려면 TensorBoard Notebook 모듈에서 notebook.list()를 실행합니다.

알려진 문제

  • 인라인 TensorBoard UI는 iframe 안에 있습니다. 브라우저 보안 기능은 새 탭에서 링크를 열지 않는 한 UI 내의 외부 링크가 작동하지 않도록 합니다.
  • TensorBoard의 --window_title 옵션은 Azure Databricks에서 재정의됩니다.
  • 기본적으로 TensorBoard는 수신할 포트를 선택하기 위해 포트 범위를 검사합니다. 클러스터에서 실행 중인 TensorBoard 프로세스가 너무 많으면 포트 범위의 모든 포트를 사용하지 못할 수 있습니다. --port 인수로 포트 번호를 지정하여 이 제한을 해결할 수 있습니다. 지정된 포트는 6006에서 6106 사이여야 합니다.
  • 다운로드 링크가 작동하려면 탭에서 TensorBoard를 열어야 합니다.
  • TensorBoard 1.15.0을 사용할 때 프로젝터 탭이 비어 있습니다. 해결 방법으로 프로젝터 페이지를 직접 방문하려면 URL에서 #projectordata/plugin/projector/projector_binary.html로 바꿉니다.
  • TensorBoard 2.4.0에는 업그레이드할 경우 TensorBoard 렌더링에 영향을 줄 수 있는 알려진 문제가 있습니다.