Skip to content

Latest commit

 

History

History
92 lines (61 loc) · 3.98 KB

aws-sagemaker-studio.md

File metadata and controls

92 lines (61 loc) · 3.98 KB

AWS SageMaker Studio

A customised version of jupyterlab v1.2.17 (as of Oct 2020) with panes for git, experiment tracking and endpoints.

Notebooks and terminals (aka image terminals) are started in docker containers and accessed by a kernel gateway. These are known as apps. Several docker images are provided eg: Data Science, TensorFlow 2. By default the containers start on a ml.t3.medium. These are what you pay for.

There is one SageMaker domain per account. A domain can have multiple users, each with their own workspace and set of apps. Anyone with access to the account can open an user's workspace.

User workspaces are persisted to EFS. They are mounted at /home/sagemaker-user

API Usage

List apps:

aws sagemaker list-apps

Changing instance types

See Change an Instance Type

Studio setup

The system terminal is a command line for Studio itself. Studio runs on Amazon Linux with miniconda python 3.7.7 installed in /opt/conda/bin/python

Studio runs in a container with internet egress, which can be disabled when running Studio in a VPC.

Studio starts Jupyter lab with:

/opt/conda/bin/python /opt/conda/bin/jupyter-lab --ip 0.0.0.0 --port 8888                       \
  --NotebookApp.kernel_manager_class=sagemaker_nb2kg.managers.RemoteKernelManager               \
  --NotebookApp.kernel_spec_manager_class=sagemaker_nb2kg.managers.RemoteKernelSpecManager      \
  --NotebookApp.token= --NotebookApp.base_url=/jupyter/default --NotebookApp.allow_origin=*     \
  --debug --no-browser /home/sagemaker-user

This delegates kernel management to SageMaker in a fashion similar to Enterprise Gateway.

No access to the ec2 metadata endpoint.

Access

Studio via a presigned domain url, eg: https://<id>.studio.<region>.sagemaker.aws/jupyter/default/lab

Ports (eg: TensorBoard etc.) on the notebook instance can be accessed via https://<id>.studio.<region>.sagemaker.aws/jupyter/default/proxy/<port>.

jupyterlab extensions

  • @jupyter-widgets/jupyterlab-manager
  • @jupyterlab/celltags
  • @jupyterlab/git
  • @amzn/sagemaker-ui - The primary UI module that ties all the components together for AWS' SageMaker UI JupyterLab plugin
  • @amzn/sagemaker-ui-theme-dark-jupyterlab
  • nbdime-jupyterlab
  • sagemaker-forked-extensions - SageMaker customized jupyterlab extensions for notebook, console and - terminal.
  • sagemaker_notebooks_extension - A JupyterLab extension to enable SageMaker Notebooks functionality
  • sagemaker_session_manager - A JupyterLab extension.
  • sagemaker_sharing_extension - A JupyterLab extension to enable sharing of files within SageMaker

Located at /opt/conda/share/jupyter/lab/extensions

jupyter server extensions

  • aws_jupyter_proxy
  • jupyter_server_proxy
  • jupyterlab
  • jupyterlab_git
  • nbdime
  • sagemaker_sharing
  • sagemaker_nb2kg
  • sagemaker_ui_proxy

Conda packages

Installed at /opt/conda/lib/python3.7/site-packages/:

  • awscli
  • aws-jupyter-proxy
  • sagemaker-jupyter-server-tools
  • sagemaker-nb2kg
  • sagemaker-sharing
  • sagemaker-ui-proxy (depends on jupyter-server-proxy and jupyter-telemetry): establishes URL handlers for /graphql(.*), /studio/eventlog, /studio/context

NPM:

  • sagemaker-graphql-server

Logs

/var/log/studio/nb2kg.log