【问题标题】:Sagemaker: How to use Conda kernels while executing jupyter notebook from lambda functionSagemaker:如何在从 lambda 函数执行 jupyter notebook 时使用 Conda 内核
【发布时间】:2022-11-15 09:00:13
【问题描述】:

如何使用来自 lambda 函数的预安装 conda 内核而不是使用默认内核来执行 jupyter notebook?

目前我正在使用以下代码 sn-p 从 lambda 函数执行 jupyter notebook。

import time
import boto3
import logging
import requests
import websocket

def lambda_handler(event, context):
    sm_client = boto3.client('sagemaker')
    notebook_instance_name = 'Test-Instance'
    url = sm_client.create_presigned_notebook_instance_url \
                (NotebookInstanceName=notebook_instance_name)['AuthorizedUrl']
 
    url_tokens = url.split('/')
    http_proto = url_tokens[0]
    http_hn = url_tokens[2].split('?')[0].split('#')[0]
    
    s = requests.Session()
    r = s.get(url)
    cookies = "; ".join(key + "=" + value for key, value in s.cookies.items())
    
    ws = websocket.create_connection(
        "wss://{}/terminals/websocket/5".format(http_hn),
        cookie=cookies,
        host=http_hn,
        origin=http_proto + "//" + http_hn,
        header = [
            "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36"
        ]
    )
    
    ws.send("""[ "stdin", "jupyter nbconvert --execute --to notebook --inplace /home/ec2-user/SageMaker/test.ipynb --ExecutePreprocessor.kernel_name=python3 --ExecutePreprocessor.timeout=1500\\r" ]""")

当我从 lambda 执行 jupyter notebook 时,它使用可用于安装了 python3.7 的 Sagemaker 实例的默认 python 内核,但如果我从 sagemaker 实例执行我的笔记本而不是使用 conda python3.8

以下是从 sagemaker 实例执行时可用内核的列表:

R
Sparkmagic (PySpark)
Sparkmagic (Spark)
Sparkmagic (SparkR)
conda_amazonei_mxnet_p36
conda_amazonei_pytorch_latest_p37
conda_amazonei_tensorflow2_p36
conda_mxnet_p37
conda_python3
conda_pytorch_p38
conda_tensorflow2_p38

当我尝试从 lambda 函数执行它时,只有可用的内核是:

python3
ir

这是我试过的: 我使用 conda 创建了一个自定义内核,并尝试在从 lambda 函数执行时使用它,但它没有用。事实上,如果我在从 lambda 函数执行时在内核名称中提供除 python3 之外的任何其他内容,它不会执行笔记本。

【问题讨论】:

    标签: jupyter-notebook jupyter amazon-sagemaker amazon-sagemaker-studio


    【解决方案1】:

    看到这个github issue

    tl;dr - 激活你想要执行的 conda 环境,然后使用 jupyter nbconvert 命令。 jupyter kernelspec list 应该会显示可用的内核(kernel_name=python3 应该在conda_python3 环境中工作)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-30
      • 2021-02-12
      • 2020-07-04
      • 2021-02-03
      • 1970-01-01
      • 2019-04-13
      • 2016-12-29
      • 2022-12-28
      相关资源
      最近更新 更多