Как программно запустить ноутбук Jupyter (внутри ноутбука Sagemaker) из локальной среды - PullRequest
1 голос
/ 14 мая 2019

Я могу запускать / останавливать записные книжки Sagemaker с помощью boto3, но как запустить записные книжки jupyter или .py скрипты внутри?

Это то, что я буду запускать из локальной среды или лямбды (но это не такпроблема).

Запустить экземпляр записной книжки Sagemaker:

import boto3

client = boto3.client('sagemaker')

client.start_notebook_instance(
    NotebookInstanceName='sagemaker-notebook-name'
)

документы

В пользовательском интерфейсе я бы просто нажал "Откройте «Jupyter», затем запустите блокнот или скрипт .py внутри него.

enter image description here

Но я хочу сделать это программно с помощью boto3 или другого.

Мой файл называется lemmatize-input-data.ipynb.

Это должно быть возможно, но я не уверен, как?

Я также пытался:

В скрипте конфигурации жизненного цикла "start notebook" после создания более простого тестового файла с именем test_script.ipynb, чтобы убедиться, что в моем ноутбуке jupyter не было ничего продвинутого, вызвавшего ошибку.

set -e

jupyter nbconvert --execute test_script.ipynb

Но получил ошибку:

[NbConvertApp] ПРЕДУПРЕЖДЕНИЕ |шаблон 'test_script.ipynb' не найдено ни одного файла

Ответы [ 2 ]

1 голос
/ 23 мая 2019

У вас есть правильный подход к выполнению записной книжки в скрипте конфигурации жизненного цикла. Проблема в том, что рабочий каталог скрипта - "/", тогда как сервер Jupyter запускается с / home / ec2-user / SageMaker .

Итак, если вы измените сценарий, указав абсолютный путь к файлу блокнота, он должен работать.

jupyter nbconvert --execute /home/ec2-user/SageMaker/lemmatize-input-data.ipynb

Спасибо за использование Amazon SageMaker!

1 голос
/ 14 мая 2019

Я советую вам заглянуть в бумажную фабрику . Он копирует и запускает шаблон ноутбука, используя nbconvert под капотом. Основным преимуществом papermill я считаю то, что вы можете легко параметризировать блокноты и передавать параметры через словарь python. Затем копии шаблона сохраняют историю того, что было выполнено, и результаты.

Ваш код будет выглядеть примерно так:

import papermill as pm

pm.execute_notebook(
   'lemmatize-input-data.ipynb',
   'lemmatize-input-data-####.ipynb'
)

Если #### быть чем-то вроде datetime.now () или чем-то еще, что вы хотели бы отличать ноутбуки по мере их выполнения.

Поскольку записные книжки предназначены для использования в качестве живых документов, вы хотите ограничить количество внешних зависимостей, которые могут привести к критическим изменениям, если записная книжка изменится, и вам необходимо будет повторно выполнить ее на определенный момент времени. Papermill решает эту проблему путем создания снимка того, что было выполнено в то время.

Обновление для получения дополнительной информации:

Я бы обновил записную книжку jupyter, чтобы вместо кода скрипта содержался код python. Записная книжка будет выполнять ячейка за ячейкой и действовать как скрипт. Это также позволяет вам печатать и отображать промежуточные и конечные значения в блокноте, если это необходимо. Когда бумажная фабрика копирует и выполняет шаблон записной книжки, все выходные данные будут отображаться и сохраняться в записной книжке. Это удобно для любых сгенерированных графиков.

Papermill также обладает функциональностью, которая затем объединяет данные в разных ноутбуках. См. здесь для хорошей статьи, обобщающей бумагу в целом. Papermill был разработан Netflix, и у них есть хорошая статья о философии здесь , в которой они ссылаются на машинное обучение.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...