Запуск моделей машинного обучения на локальном компьютере может быть затруднен при работе с обширными алгоритмами глубокого обучения, особенно если графический процессор недостаточно мощный. Google Colab предлагает решение, предоставляя бесплатный доступ к графическому процессору.

Google Colab предоставляет возможность подключения к локальной среде, но тем самым вы позволяете интерфейсу Colab выполнять код в ноутбуке, используя локальные ресурсы вашего компьютера. Следовательно, ваш графический процессор имеет приоритет над ресурсами графического процессора, предлагаемыми Colab.

Чтобы реализовать гибридный подход, обеспечивающий плавный переход между локальным выполнением и выполнением в Colab, мы можем настроить сервер Flask в Google Colab и предоставить API для выполнения определенного кода.

Однако прямой доступ к серверу Flask по адресу (по умолчанию) localhost:5000 из Colab невозможен из-за различий между виртуальной машиной Colab и локальной машиной. Решение простое! Чтобы сделать сервер доступным, перед запуском сервера необходимо выполнить простой фрагмент кода.

from google.colab.output import eval_js
print(eval_js("google.colab.kernel.proxyPort(5000)"))
OUTPUT: https://a2nb27sj8gr-496sf2e9c6d22116-5000-colab.googleusercontent.com/

Когда вы запустите этот фрагмент кода, он отобразит общедоступный URL-адрес, который вы можете использовать для доступа к серверу Flask, работающему на порту 5000, из внешних источников.

Создать флажковый сервер

Во-вторых, мы можем создать новую ячейку с простым фляжным сервером:

from flask import Flask
from flask_ngrok import run_with_ngrok
app = Flask(__name__)
run_with_ngrok(app)   
  
@app.route("/")
def home():
    return "<h1>Hello this is Flask</h1>"
    
app.run()

Добавьте свои конечные точки

Наконец, вы можете добавить свои конечные точки, например:

from flask import Flask
from flask_ngrok import run_with_ngrok
app = Flask(__name__)
run_with_ngrok(app)   

def my_task():
  #YOUR CODE HERE
  
@app.route("/")
def home():
    return "<h1> Hello this is Flask </h1>"
@app.route("/task")
def task():
    result=my_task()
    return result
    
app.run()

Подключиться из локальной IDE

Теперь из локальной среды IDE вы можете подключиться к этим конечным точкам:

import requests

# Replace this URL with the URL you obtained from running the code snippet on Colab
colab_url = "https://a2nb27sj8gr-496sf2e9c6d22116-5000-colab.googleusercontent.com"

# Endpoint to access the home route
home_url = colab_url + "/"

# Endpoint to access the custom task route
task_url = colab_url + "/task"

# Make a GET request to the home route
response = requests.get(home_url)
print("Response from Home Route:")
print(response.text)

# Make a GET request to the custom task route
response = requests.get(task_url)
print("\nResponse from Task Route:")
print(response.text)

Теперь у вас есть мощность графического процессора в вашей локальной среде разработки! Этот гибридный подход позволяет вам использовать бесплатные ресурсы графического процессора Colab для ресурсоемких задач, одновременно пользуясь удобством и привычностью вашей локальной IDE.

Для обучения, создания прототипов и экспериментов Colab предоставляет отличную среду с ускорением графического процессора. Для производственных или крупномасштабных проектов рассмотрите возможность использования выделенных облачных служб, которые предлагают гарантированные ресурсы и более продолжительное время выполнения.

Однако важно знать о некоторых ограничениях, несмотря на бесплатное предложение графического процессора Colab, таких как время ожидания сеанса или ограничения ресурсов.