私は 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 はパスワードを要求します。複数のアプローチを試しましたが、役に立ちませんでした。
- SageMaker の jupyter_notebook_config.py ではパスワードが空なので空です
- トークンをパスワードとして使う [1]
- パスワード「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 を使用したいのですが、以下の手順でうまくいきました。
(studiolab) studio-lab-user@default:~$ conda install -y -c conda-forge code-server
(studiolab) studio-lab-user@default:~$ code-server --auth none
- スタジオラボのURLをコピーして新しいタブに貼り付けます。URLは次のようになります。https://xxxxxxxxxxx.studio.us-east-2.sagemaker.aws/studiolab/default/jupyter/lab/
- 交換する研究室とプロキシ/8080URLはhttps://xxxxxxxxxxxx.studio.us-east-2.sagemaker.aws/studiolab/default/jupyter/proxy/8080/
- ロードには数分 (約 3 分) かかります。StudioLab で VS Code を起動します。
これは StackExchange への私の最初の投稿です。役に立つ場合は賛成票をお願いします。