Отправка запросов на выполнение кода в google colab Python
Час добрый
Подскажите пожалуйста если ли возможность из скрипта на пк отправлять запрос на решение задачи в google colab и получать в ответ нужные данные?
Детальное объяснение:
Требуется сделать скрипт который будет при помощи rugpt3 (large версии) генерировать текст, но т.к. для работы с rugpt3 в принципе требуется большой объем gpu памяти, то запускать скрипт полагаясь на возможности компьютера/ноутбука нет смысла, т.к. они просто зависают из-за недостатка памяти.
Не могу дать примеры кода т.к. не нашел ничего что может помочь в документации, но можно ли примерно в следующем виде сделать работу скрипта:\
- В google colab создать блокнот с кодом функции генерации текста
- Из локального файла на пк вызывать по средствам api (если таковые имеются) выполнение данного скрипта на стороне google colab
- После выполнения скрипта в google colab получить сгенерированный текст в переменную на рабочем устройстве (пк/ноутбук)
Если все же описать примерный код, то вижу его примерно так (на примере запросов requests):
def get_text_from_google_colab(text)
request = requests.post(API_URL, text)
generated_text = request.text
return generated_text
def main()
text = 'пример затравки текста для генерации'
generated_text = get_text_from_google_colab(text)
Если же есть возможность отправлять функцию на исполнение в google colab при помощи api, то тоже хотелось бы узнать об этом. Функция генерации текста:
def load_tokenizer_and_model(model_name_or_path):
return GPT2Tokenizer.from_pretrained(model_name_or_path), GPT2LMHeadModel.from_pretrained(model_name_or_path).cuda()
def generate(
model, tok, text,
do_sample=True, max_length=50, repetition_penalty=5.0,
top_k=5, top_p=0.95, temperature=1,
num_beams=None,
no_repeat_ngram_size=3
):
input_ids = tok.encode(text, return_tensors="pt").cuda()
out = model.generate(
input_ids.cuda(),
max_length=max_length,
repetition_penalty=repetition_penalty,
do_sample=do_sample,
top_k=top_k, top_p=top_p, temperature=temperature,
num_beams=num_beams, no_repeat_ngram_size=no_repeat_ngram_size
)
return list(map(tok.decode, out))
tok, model = load_tokenizer_and_model("sberbank-ai/rugpt3large_based_on_gpt2")
generated = generate(model, tok, "Александр Сергеевич Пушкин родился в ", num_beams=10)