P: ¿Hay alguna forma de evitar mediante programación que Google Colab se desconecte en un tiempo de espera?
A continuación, se describen las condiciones que hacen que una computadora portátil se desconecte automáticamente:
Los portátiles de Google Colab tienen un tiempo de inactividad de 90 minutos y un tiempo de espera absoluto de 12 horas. Esto significa que si el usuario no interactúa con su computadora portátil Google Colab durante más de 90 minutos, su instancia se cancela automáticamente. Además, la vida útil máxima de una instancia de Colab es de 12 horas.
Naturalmente, queremos exprimir automáticamente al máximo la instancia, sin tener que interactuar manualmente con ella constantemente . Aquí asumiré los requisitos del sistema comúnmente vistos:
Debo señalar aquí que tal comportamiento no viola los Términos de uso de Google Colab , aunque no se recomienda de acuerdo con sus preguntas frecuentes (en resumen: moralmente, no está bien usar todas las GPU si realmente no las necesitas). ).
Mi solución actual es muy tonta:
¿Hay mejores formas?
Edición 2: a partir de marzo de 2021, ninguno de estos métodos funcionará ya que Google agregó un botón captcha que aparece aleatoriamente después de un tiempo.
Edición 1: Aparentemente, la solución es muy fácil y no necesita JavaScript. Simplemente cree una nueva celda en la parte inferior que tenga la siguiente línea:
while True:passahora mantenga la celda en la secuencia de ejecución para que el bucle infinito no se detenga y, por lo tanto, mantenga viva su sesión.
Método anterior: establezca un intervalo de javascript para hacer clic en el botón de conexión cada 60 segundos. Abra la configuración del desarrollador (en su navegador web) con Ctrl + Shift + I, luego haga clic en la pestaña de la consola y escriba esto en el indicador de la consola. (para mac presione Opción+Comando+I)
function ConnectButton(){ console.log("Connect pushed"); document.querySelector("#top-toolbar > colab-connectbutton").shadowRoot.querySelector("#connect").click() } setInterval(ConnectButton,60000);Dado que la identificación del botón de conexión ahora se cambia a "colab-connect-button", se puede usar el siguiente código para seguir haciendo clic en el botón.
function ClickConnect(){ console.log("Clicked on connect button"); document.querySelector("colab-connect-button").click() } setInterval(ClickConnect,60000)Si aún así, esto no funciona, entonces siga los pasos a continuación:
function ClickConnect(){ console.log("Clicked on connect button"); document.querySelector("Put ID here").click() // Change id here } setInterval(ClickConnect,60000)Para mi los siguientes ejemplos:
document.querySelector("#connect").click() odocument.querySelector("colab-toolbar-button#connect").click() odocument.querySelector("colab-connect-button").click()estaban lanzando errores.
Tuve que adaptarlos a lo siguiente:
Versión 1:
function ClickConnect(){ console.log("Connnect Clicked - Start"); document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click(); console.log("Connnect Clicked - End"); }; setInterval(ClickConnect, 60000)Versión 2: si desea poder detener la función, aquí está el nuevo código:
var startClickConnect = function startClickConnect(){ var clickConnect = function clickConnect(){ console.log("Connnect Clicked - Start"); document.querySelector("#top-toolbar > colab-connect-button").shadowRoot.querySelector("#connect").click(); console.log("Connnect Clicked - End"); }; var intervalId = setInterval(clickConnect, 60000); var stopClickConnectHandler = function stopClickConnect() { console.log("Connnect Clicked Stopped - Start"); clearInterval(intervalId); console.log("Connnect Clicked Stopped - End"); }; return stopClickConnectHandler; }; var stopClickConnect = startClickConnect();Para parar, llame al:
stopClickConnect();