TensorBoard는 TensorFlow의 모델을 시각화하고 디버깅하기 위한 도구이다. 이를 통해 모델의 학습 과정과 성능을 쉽게 모니터링할 수 있다는 장점이 있다.
이번에 tensorboard를 처음 사용해보는데 docker container 안에서 모델을 돌리고 tensorboard를 실행하려고 하니까 아래와 같은 오류가 나서 이것 저것 시도하다가 찾아본 해결 방법이다.
해결 방법
docker container 포트 설정
tensorboard는 port를 6060을 사용하기 때문에 docker를 run할 때 이 옵션을 넣어주는 것이 중요하다.
-p 6006:6006 을 입력하면 된다. 예시 명령어는 다음과 같다.
docker run --gpus all -it -p 6006:6006 --name [container 이름 설정] --ipc=host -v [mount 경로 설정]
오류 이유 설명
이유를 간략하게 설명하자면,
Docker는 애플리케이션과 그 환경을 독립적으로 실행할 수 있는 가상화된 컨테이너를 제공한다. 이 컨테이너는 기본적으로 외부 네트워크와 격리되어 있어서 직접적인 접근이 불가능하다.
따라서, 컨테이너 내부의 애플리케이션(예: TensorBoard)이 외부와 통신할 수 있도록 하기 위해 특정 포트를 외부와 연결해줘야 한다. 이를 "포트 매핑"이라고 한다.
TensorBoard는 기본적으로 6006 포트를 사용하여 웹 서버를 실행하기 때문에 이 포트를 사용하여 로컬 머신과 Docker 컨테이너 사이를 연결하면 로컬 브라우저에서 TensorBoard 인터페이스에 접근할 수 있게 되는 것이다.
명령어 -p 6006:6006의 첫번째 숫자 6006은 로컬에서 접근할 포트 번호이고 두 번째 숫자 6006은 컨테이너 내에서 실행 중인 애플리케이션이 수신하는 포트 번호이다.
위 설정은 해준 뒤에 컨테이너를 실행하면 docker desktop에서도 아래와 같이 나타난다.
참고로 tensorboard를 사용하려면 tensorboard와 tensorflow가 모두 설치되어 있어야 한다.
pip install tensorboard
pip install tensorflow
이 후에 도커 컨테이너 안에서 다음 명령어를 입력하여 tensorboard를 실행하고 http://localhost:6006/ 로 접속하면 정상적으로 실행되는 것을 확인할 수 있을 것이다.
tensorboard --logdir=[로그 데이터 저장 경로] --port 6006 --host=0.0.0.0
위 명령어를 실행하면 http://0.0.0.0:6006/ 로 접속하라고 하는데 필자의 경우는 http://localhost:6006/ 로 접속해야 제대로 tensorboard를 확인할 수 있었다.
'Settings > Docker' 카테고리의 다른 글
[Docker] .wslconfig로 Docker가 사용하는 리소스 제한하기(VmmemWSL) (2) | 2024.06.03 |
---|---|
[Docker] 컨테이너 메모리 사용 제한 방법 (2) | 2024.06.03 |
[Docker] 도커 컨테이너 메모리 제한 오류 (2) | 2024.06.03 |