【发布时间】: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