이전 글에서 TensorBoard가 무엇이고 어떻게 사용하는지 살펴보았다.
하지만 이 방법으로는 원격 서버에서 학습을 할 때 텐서보드를 실행해도 로컬에서는 모니터링이 불가능하다.
이번 포스팅에서는 port forwarfing(포트 포워딩)을 통해 서버에서 학습을 돌리고 로컬에서 그 과정을 모니터링하는 방법을 살펴보자.
Port Forwarding 이란
먼저 port forwarfing(포트 포워딩)이 무엇인지 간단히 살펴보자.
포트 포워딩은 컴퓨터의 한 포트에서 다른 컴퓨터의 다른 포트로 네트워크 트래픽을 리디렉션할 수 있는 기능이다.
일반적으로 방화벽이나 NAT(네트워크 주소 변환)뒤에 있는 컴퓨터에서 실행되는 서비스에 대한 원격 엑세스를 활성화하는데 사용된다.
컴퓨터가 여러 개의 방이 있는 집이고 각 방에는 문(포트)가 있다고 상상해보자.
각 문(포트)에는 예를 들어 웹 브라우징용(포트 80) 및 이메일용(포트 25)과 같은 특정 용도기 할당되어있다.
그러나 컴퓨터는 네트워크에 연결되어 있고 인터넷에서 들어오는 트래픽은 방화벽에 의해 차단되는 상태이다.
즉, 컴퓨터에서는 나가는 요청만 인터넷에 도달하고 들어오는 요청은 차단된 상태이다.
이제 포트 포워딩을 사용하면 방화벽에서 특정 문(포트)을 열고 들어오는 트래픽을 로컬 네트워크 내의 다른 컴퓨터에 있는 특정 방(포트)으로 리디렉션할 수 있다.
인터넷과 방화벽 뒤의 컴퓨터에서 실행되는 특정 서비스나 어플리케이션 사이에 가상의 터널이 있는 것과 같다.
예를 들어 방화벽 뒤에 있는 원격 컴퓨터(ex: 포트 80)에서 실행 중인 웹 서버에 엑세스하려고 할 때 포트 포워딩을 설정할 수 있다.
로컬 컴퓨터(ex: 포트 8080)에서 문(포트)을 열고 해당 포트에서 들어오는 모든 트래픽을 원격 컴퓨터의 포트 80으로 리디렉션 한다.
이렇게 하면 로컬에서 localhost:8080에 엑세스할 때 들어오는 트래픽은 원격 컴퓨터의 웹 서버로 전달되며 여기에서 호스팅되는 웹 사이트를 볼 수 있게 된다. (예를 들었더니 더 헷갈리는 것은 기분 탓)
그냥 서버와 로컬 사이에 다리를 놓는다 생각하자.
포트 포워딩 직접 해보기
아무튼 직접 포트 포워딩을 통해 서버에서 학습을 돌리고 로컬에서 모니터링하는 방법을 알아보자.
그 전에 텐서보드 사용법을 모른다면 이 글에서 확인하고 오자.
[PyTorch] 예제를 통해 알아보는 TensorBoard(텐서보드) 사용법 및 Duplicate plugins for name projector 에러 해
TensorBoard 텐서보드 소개 TensorBoard(텐서보드)는 오픈 소스 머신러닝 프레임워크인 TensorFlow에서 제공하는 시각화 도구이다. 텐서보드는 머신러닝 모델의 다양한 부분을 시각적으로 모니터링하고
dykm.tistory.com
이제 텐서보드 사용법을 알았다.
이제 포트 포워딩을 해보자.
1. 먼저 서버에서 텐서보드를 실행한다.
tensorboard --logdir=runs --port=<port_number>
이때 <port_number>
을 원하는 포트 번호로 바꾸자.
물론 <
>
는 빼고 숫자만 넣는다.
(본인은 학부 때 처음 컴퓨터를 배울 때 <>이나 []같은 괄호를 다 넣고 실행이 안된다고 교수님을 불러제낀 적이 있다.)
2. 이제 로컬에서 SSH 포트 포워딩을 활성화해야한다.
로컬에서 터미널을 열고 다음 명령을 실행하자.
ssh -N -f -L localhost:<local_port>:localhost:<remote_port> username@remote_server_ip
이제 넣어줘야하는 것들이 두 개가 있는데 <local_port>
는 로컬에서 사용할 포트를 말하고 <remote_port>
는 서버에서 설정한 <port_number>
와 똑같은 숫자를 넣어주면 된다. (당연히 <
>
는 빼고 숫자만 넣는다. username
와 remote_server_ip
는 서버 접속할 때 사용한 유저네임과 서버 주소를 넣으면 된다.)
3. 로컬에서 웹브라우저를 열고 http://localhost:<local_port>을 쳐서 접속하자. (<
>
는 빼고 숫자만)
그러면 서버에서 실행한 텐서보드를 볼 수 있다.
'코딩 환경 > PyTorch' 카테고리의 다른 글
[PyTorch] 파이토치 코드 실행 속도 높이기 / .cuda()와 device=torch.device('cuda')의 차이 + 애플 m1, m2 칩 (0) | 2023.05.27 |
---|---|
[PyTorch] num_workers 설명과 빠른 트레이닝을 위한 값 최적화 (0) | 2023.05.24 |
[PyTorch] 예제를 통해 알아보는 TensorBoard(텐서보드) 사용법 및 Duplicate plugins for name projector 에러 해결 (2) | 2023.05.15 |
[PyTorch] CustomDataset 설정 및 예제 (0) | 2023.03.21 |
[PyTorch] GPU을 사용할 때 to(device)와 cuda() 차이 (2) | 2023.02.27 |