VS Code から SageMaker ノートブックを接続するにはどうすればいいですか?

VS Code から SageMaker ノートブックを接続するにはどうすればいいですか?

私は SageMaker を使用して ML アプローチをテストしています。SageMaker スクリプトをリファクタリングして、より本番環境に適したコードにしたいと考えています。そのため、VS Code を使用してコードをリファクタリングし、以前と同じように SageMaker インスタンスでコードを実行したいと考えています。VS Code Python では、次の定義が可能です。

Python: Jupyter サーバーの URI を指定する

SageMakerは以下を実行することでAuthorizedUrlを取得します。

aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name your-instance-name

AuthorizedUrl はシークレット ブラウザで開くと機能します。VS Code では機能しないのはなぜですか? VS Code はパスワードを要求します。複数のアプローチを試しましたが、役に立ちませんでした。

  1. SageMaker の jupyter_notebook_config.py ではパスワードが空なので空です
  2. トークンをパスワードとして使う [1]
  3. パスワード「jupyter notebook password」を設定し、「sudo initctl restart jupyter-server --no-wait」で jupyter を再起動しました。新しいパスワードは有効であるように思われます。新しく作成したパスワードを VS Code に渡しましたが、結果は同じ悪いものでした。

VS Code で次のエラーが発生します:

リモート Jupyter ノートブックへの接続に失敗しました。Jupyter サーバーの URI 設定に有効な実行中のサーバーが指定されていることを確認してください... エラー: パスワードで保護されたサーバーに接続できませんでした。パスワードが正しいことを確認してください。

では、SageMaker 上の VS Code でコードを実行するにはどうすればよいでしょうか? 私が試している方法よりも良い方法があるかもしれません。

ありがとう

[1]https://jupyter-notebook.readthedocs.io/en/stable/security.html

答え1

理解しているとおり、VS Code で Sagemaker Studio Lab から jupyter-lab/notebooks に接続したいとお考えのようです。私もプロジェクトに VS Code を使用したいのですが、以下の手順でうまくいきました。

  1. (studiolab) studio-lab-user@default:~$ conda install -y -c conda-forge code-server
  2. (studiolab) studio-lab-user@default:~$ code-server --auth none
  3. スタジオラボのURLをコピーして新しいタブに貼り付けます。URLは次のようになります。https://xxxxxxxxxxx.studio.us-east-2.sagemaker.aws/studiolab/default/jupyter/lab/
  4. 交換する研究室プロキシ/8080URLはhttps://xxxxxxxxxxxx.studio.us-east-2.sagemaker.aws/studiolab/default/jupyter/proxy/8080/
  5. ロードには数分 (約 3 分) かかります。StudioLab で VS Code を起動します。

これは StackExchange への私の最初の投稿です。役に立つ場合は賛成票をお願いします。

関連情報