簡體   English   中英

如何從本地環境以編程方式(在 Sagemaker 筆記本內)運行 jupyter 筆記本

[英]How to run a jupyter notebook programmatically (inside a Sagemaker notebook) from a local environment

我可以使用 boto3 啟動/停止 Sagemaker 筆記本,但是如何在其中運行 jupyter 筆記本或.py腳本?

這是我將從本地環境或 lambda 運行的東西(但這沒問題)。

啟動 Sagemaker 筆記本實例:

import boto3

client = boto3.client('sagemaker')

client.start_notebook_instance(
    NotebookInstanceName='sagemaker-notebook-name'
)

文檔

在 UI 中,我只需單擊“打開 Jupyter”,然后在其中運行筆記本或.py腳本。

在此處輸入圖片說明

但我想用 boto3 或其他方式以編程方式完成。

我里面的文件叫做lemmatize-input-data.ipynb

這一定是可能的,但我不確定如何?

我也試過:

在“開始記事本”生命周期配置腳本,創建一個名為一個簡單的測試文件后test_script.ipynb是某些它不是在前進引起錯誤我jupyter筆記本。

set -e

jupyter nbconvert --execute test_script.ipynb

但是得到了錯誤:

[NbConvertApp] 警告 | 模式“test_script.ipynb”不匹配任何文件

我鼓勵你研究造紙廠 它在后台使用 nbconvert 復制並運行模板筆記本。 我發現 papermill 的主要好處是您可以輕松地參數化筆記本並通過 python 字典傳遞參數。 然后模板的副本會保留執行內容和結果的歷史記錄。

您的代碼將類似於:

import papermill as pm

pm.execute_notebook(
   'lemmatize-input-data.ipynb',
   'lemmatize-input-data-####.ipynb'
)

#### 類似於 datetime.now() 或任何您想在筆記本執行時區分它們的內容。

由於筆記本旨在成為活動文檔,因此您希望限制在筆記本發生更改並且您需要在某個時間點重新運行時會發生重大更改的外部依賴項的數量。 Papermill 通過制作當時執行內容的快照來解決這個問題。

更新更多背景信息:

我會更新 jupyter notebook 以包含 python 代碼而不是腳本。 筆記本將逐個單元執行並像腳本一樣運行。 如果需要,這還允許您在筆記本中打印和顯示中間值和最終值。 當紙廠復制並執行模板筆記本時,所有輸出都將顯示並保存在筆記本中。 這對於已生成的任何圖形都很方便。

Papermill 還具有可以跨筆記本聚合數據的功能。 請參閱此處,了解一般總結造紙廠的好文章。 Papermill 是由 Netflix 設計的,他們在這里發表了一篇關於其背后哲學的好文章,其中引用了機器學習。

盡管如此,Papermill 可用於輕松記錄在 sagemaker 中訓練機器學習模型的每個步驟。 然后使用 papemrill 的聚合功能,您可以以圖形方式查看模型隨時間的變化情況。

您有在生命周期配置腳本中執行筆記本的正確方法。 問題是腳本的工作目錄是“/”,而 Jupyter 服務器從/home/ec2-user/SageMaker 啟動

因此,如果您修改腳本以解決筆記本文件的絕對路徑,它應該可以工作。

jupyter nbconvert --execute /home/ec2-user/SageMaker/lemmatize-input-data.ipynb

感謝您使用 Amazon SageMaker!

看看這里 這可以將您的 Jupyter Notebook 部署為無服務器功能,然后您可以使用 REST 端點調用它。

暫無
暫無

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

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