Если вы используете SageMaker Studio, то, возможно, вам не хватало некоторых функций, которые есть в других современных IDE. Как вы, возможно, знаете, SageMaker Studio построена на основе IDE JupyterLab. Она расширяет ее, интегрируясь с другими ресурсами SageMaker. Но это не включает никаких функций для удобства разработчиков.
Чтобы обогатить SageMaker Studio необходимыми вам функциями, вы можете установить расширения JupyterLab. Это можно сделать разными способами.
Вы можете использовать Менеджер расширений, который находится в меню слева. Он имеет значок в виде кусочка головоломки. В менеджере расширений вы можете проверить уже установленные расширения. Вы также можете искать расширения, если напишете их название в строке поиска. Когда вы найдете расширение, которое хотите установить, нажмите кнопку «Установить». После установки всех необходимых расширений перезапустите JupyterLab, обновив страницу. Теперь вы должны иметь возможность использовать их.
Другой способ установки расширений — использование инструмента Jupyter CLI. Для этого метода вам потребуется предварительно узнать название расширения. Откройте терминал внутри студии и введите следующие команды:
conda activate studio
Если пакет, который вы пытаетесь установить, находится в реестре пакетов NPM, вы можете установить его с помощью Jupyter CLI:
jupyter labextension install my-extension@1.2.3
Вы также можете установить расширения, находящиеся в реестре пакетов pip, с помощью команды pip:
pip install my-extension=1.2.3
Наконец, выполните следующую команду:
restart-jupyter-lab
и обновите страницу.
Установка расширений имеет проблему в SageMaker Studio. Каждый раз, когда ваш JupyterServer выключается, он теряет все установленные расширения и начинает работу с чистого состояния. Чтобы сохранить все установленные расширения, необходимо создать конфигурацию Lifecycle Configuration. Эта Lifecycle Configuration будет устанавливать все расширения при запуске. Конфигурация жизненного цикла будет выполнять сценарий при запуске JupyterServer. Содержание сценария будет следующим:
source activate studio
jupyter labextension install extension-foo
pip install extension-bar
restart-jupyter-server
Как вы можете заметить, в этом скрипте мы активируем среду с помощью source activate studio
вместо conda activate studio
, это потому, что conda не может быть использована из конфигурации жизненного цикла.
Существует много способов создания конфигурации жизненного цикла. Вы можете сделать это через консоль, используя Cloudformation Stack, или через AWS CLI. Используя CLI, вы можете сделать следующее:
aws sagemaker create-studio-lifecycle-config
--region <your-region>
--studio-lifecycle-config-name my-studio-lcc
--studio-lifecycle-config-content $LCC_CONTENT
--studio-lifecycle-config-app-type JupyterServer
$LCC_CONTENT — это строка с содержимым скрипта, описанного ранее. Затем, при создании профиля пользователя в домене SageMaker Domain, вы можете привязать к нему конфигурацию Lifecycle Configuration:
aws sagemaker create-user-profile --domain-id <DOMAIN-ID>
--user-profile-name <USER-PROFILE-NAME>
--region <REGION>
--user-settings '{ "JupyterServerAppSettings": { "LifecycleConfigArns": ["<LIFECYCLE-CONFIGURATION-ARN-LIST>"] } }'
С этого момента, когда пользователи запускают свой экземпляр SageMaker Studio, у них всегда будут установлены расширения. Они смогут использовать их с самого начала. Они также смогут устанавливать и удалять расширения из интерфейса и терминала, но эти изменения будут действовать только в течение всего сеанса работы с Studio.