colab에서 런타임 연결이 종료되지 않도록 유지하는 방법

ivor·2022년 10월 20일
0

AI

목록 보기
1/2

colab에서 모델을 학습시켜놓고 다른 일을 할 때가 종종 있다. 그럴 때 일정 시간 자리를 비우고 colab에서의 활동이 없으면 런타임이 종료되는 경우가 있어서 매우 불편했다.

관련된 해결법을 찾던 중 많이 알려진 방법을 발견했고, 제대로 실행되도록 약간의 수정을 거쳤다.


colab 탭에서 우클릭을 하면 safari 기준 '요소 점검'이라는 항목이 있다. 요소, 콘솔, 소스, 네트워크 등의 탭이 있는데 '콘솔' 항목으로 들어가 다음의 코드를 입력하면 일정 시간마다 특정 작업을 수행해 런타임이 종료되는 것을 방지해준다.

function ConnectButton(){
  console.log("Connect pushed"); 
  document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click() 
}
setInterval(ConnectButton, 60000);

다른 글들에는 코드에 대한 설명이 없길래 따로 알아봤다. (웹상에 알려진 코드로는 에러가 발생하기도 했기 때문이다. html 내용이 수정된 부분이 있어서 그런 거였다.)

차례차례 설명하자면

  1. setInterval(ConnectButton, 60000);
    : 60000ms마다 ConnectButton 함수를 실행한다. 즉 1분마다 ConnectButton 함수를 실행한다는 뜻이다. colab에서 활동이 없다는 것을 판단하는 기준이 30분이라고 하니 그것보다 짧게 설정하는 것을 추천한다.

  2. document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click()
    : querySelector(~)는 ~를 이용해 element를 찾는다고 생각하면 된다.
    즉 "id가 'top-toolbar'인 항목을 찾고, 그 항목 내에서 'colab-connect-button'을 찾은 후 그 안의 shadow 콘텐츠를 찾고 그 콘텐츠 중 'connect'라는 id값을 갖는 element를 클릭하라"라는 뜻이다.

해당 element가 어디를 의미하는지 찾아봤더니 colab 탭에서 'RAM'과 '리소스'를 간략히 표현하는 곳이었다. 런타임이 해제되어 있을 경우 '다시 연결' 등의 메세지가 표시되는 부분이다.
이 곳을 클릭하면 시스템 RAM, GPU RAM, 디스크 등의 리소스가 그래프 형태로 표시되고, 다시 클릭하면 리소스 표시가 사라지게 된다.

즉 위의 코드를 요약하면 1분마다 리소스 표시창을 띄우고, 다시 끄는 것을 반복하는 것이다. colab에서 짜놓은 코드 실행에 영향을 끼치지 않으면서 활동 없음으로 인한 런타임 종료를 피할 수 있는 일종의 꼼수 같았다.


해결방법으로 올라온 코드 대부분이 비슷한 꼴이었는데 에러가 나던 이유는 html이 수정되었기 때문인 것 같았다. 만약 이후에 에러가 난다면 해당 아이콘의 요소를 찾아서 코드를 수정해 다시 적용하면 될 것 같다.

profile
BEST? BETTER!

0개의 댓글