簡體   English   中英

如何在從 lambda function 執行 jupyter notebook 時使用 Conda 內核

[英]How to use Conda kernels while executing jupyter notebook from lambda function

如何使用 lambda function 中預安裝的 conda 內核執行 jupyter notebook,而不是使用默認的 kernel?

目前,我正在使用以下代碼片段從 lambda function 執行 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 筆記本時,它使用默認的 python kernel 可用於安裝了 python3.7 的 Sagemaker 實例,但是如果我從 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 function 執行它時,只有可用的內核是:

python3
ir

這是我嘗試過的:我使用 conda 創建了一個自定義 kernel 並嘗試在從 lambda function 執行時使用它,但它沒有用。 事實上,如果我在從 lambda function 執行時在 kernel 名稱中提供除python3以外的任何其他名稱,它不會執行筆記本。

看到這個github 問題

tl;dr - 激活你想要執行的 conda 環境,然后使用 jupyter nbconvert 命令。 jupyter kernelspec list應該顯示可用的內核( kernel_name=python3應該在conda_python3環境中工作)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM