在 Vertex AI 用户管理笔记本启动时公开现有环境的内核

2023-11-29

这是一个延续这个线程,发布在这里,因为它太复杂,无法发表评论。

TL;DR

在 Vertex AI 用户管理笔记本中,如何通过重复的停止和启动周期保留存储在数据磁盘上的现有 venv(以及 conda,如果可能)环境的公开内核图标?

Details

我正在使用基于 Docker 映像构建的用户管理笔记本实例。启动笔记本后,我手动创建一个自定义环境。目前,我们假设这是一个 venv python 环境。环境运行良好,我可以公开内核,以便它在 Jupyter 实验室的启动器中显示为图标。如果我关闭实例并重新启动它,该图标就会消失。我一直在尝试创建一个重新公开内核的启动脚本,但它无法正常工作。我一直在尝试使用上面链接中@gogasca 提出的方法#2。在其他操作(正确执行)中,我的启动脚本包含以下内容:

cat << 'EOF' > /home/jupyter/logs/exposeKernel.sh
#!/bin/bash
set -x
if [ -d /home/jupyter/envs ]; then
  # For each env creation file...
  for i in /home/jupyter/envs/*.sh; do
      tempName="${i##*/}"
      envName=${tempName%.*}
      # If there is a corresponding env directory, then expose the kernel
      if [ -d /home/jupyter/envs/${envName} ]; then
        /home/jupyter/envs/${envName}/bin/python3 -m ipykernel install --prefix=/root/.local --name $envName &>> /home/jupyter/logs/log.txt
        echo -en "Kernel created for: $envName \n" &>> /home/jupyter/logs/log.txt
      else
        echo -en "No kernels can be exposed\n" &>> /home/jupyter/logs/log.txt
      fi
  done
fi
EOF
chown root /home/jupyter/logs/exposeKernel.sh
chmod a+r+w+x /home/jupyter/logs/exposeKernel.sh
su -c '/home/jupyter/logs/exposeKernel.sh' root
echo -en "Existing environment kernels have been exposed\n\n" &>> /home/jupyter/logs/log.txt

我正在尝试记录操作,并且在日志中看到内核已在与手动激活环境并从内部公开内核时创建的位置相同的位置成功创建。尽管日志中明显成功(至少没有错误),但内核图标并未出现。如果我使用以下命令从终端手动运行 hideKernel.sh 脚本su -c '/home/jupyter/logs/exposeKernel.sh' root,它也工作得很好,内核is正确曝光。 @gogasca 对上述线程的评论表明我应该使用 jupyter 用户而不是 root,但重复的测试和日志记录表明 jupyter 用户无法执行代码,而 root 成功(尽管从一开始调用时都没有创建内核图标)脚本)。

问题:

(1) 我的目标是在启动时自动重新公开现有的环境内核。据推测,每次虚拟机停止和启动时它们都会消失,因为每次都会重建启动磁盘的某种链接。这里合适的策略是什么?有没有办法构建环境(对 conda 和 venv 都感兴趣),以便它们的内核图标在关闭时不会消失?

(2) 如果 (1) 的答案是否定的,那么为什么 EOF 创建的文件在从启动脚本调用时无法完成任务?

(3) 与此相关,我认为正确的是启动后脚本在初始 Notebook 实例创建过程中仅执行一次,而启动脚本或启动脚本 url每次笔记本启动时执行?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Vertex AI 用户管理笔记本启动时公开现有环境的内核 的相关文章

随机推荐

  • 使用 Containable 对关联模型 (HABTM) 上的条件过滤的结果进行分页

    我需要对列表进行分页Products 属于特定Category HABTM 协会 In my Product我有的型号 var actsAs array Containable var hasAndBelongsToMany array C
  • 如何在cmake中链接所有LLVM库?

    我想链接我的 cmake C 项目中的所有 LLVM 库 I use llvm config components为了获得 LLVM 的所有组件 它给了我 llvm config components aarch64 aarch64asmp
  • 使用 Greasemonkey 将日期选择器添加到文本框

    有一个需要日期但没有日期选择器的文本框 我想用 Greasemonkey 添加一个 我寻找一个例子 但找不到 这可能吗 有这样做的例子吗 它不需要很花哨 我喜欢用jQuery UI 的 datepicker 因为我通常都会加载 jQuery
  • 为什么 git 会在每个命令名称前添加“git-”?

    如果我需要帮助git status命令 我可以输入git help status 并返回一个帮助页面 显示名称为 git status But git status 不是命令 命令是git status有一个空格 而不是连字符 如果我输入g
  • 来自 Qt 中 main.cpp 代码的 MainWindow

    想要了解之间的代码差异MainWindow和main cpp 具体来说 如何专门编写一段代码main cpp需要修改为的一部分mainwindow cpp and mainwindow h 作为一个例子 我试图修改这个罚款的代码answer
  • 函数返回后不更改指针

    语言是 Go Golang 功能initApp正在接收一个指向对象的指针 Go 中的 struct 在函数内部 我创建一个新的对象指针并初始化该对象的值 打印和调试器都显示在函数返回之前一切都很好 但在返回之后 作为函数参数的指针具有与函数
  • 如何从命令行重建并运行 android 项目

    我想创建与 android studio 通过命令行在后台运行的相同进程 like first clean project gt build project gt Run Project all through command line 可
  • PLC 中的定时器 - 结构化文本

    PLC 结构化文本 ST 中的计时器如何工作 我们如何声明它们 我一直在研究PLC的标准 IEC 61131 3 他们没有谈到ST中的定时器 我知道绝大多数 PLC 程序员都是用梯形图逻辑来完成这些任务 但在这种特殊情况下 我确实需要在 S
  • ActionBar 选项卡标题中的自定义字体

    我正在尝试在我的上设置自定义字体ActionBar选项卡的标题 我看到更多的开发人员要求以正确的方式在 SO 上执行此操作 例如如何自定义操作栏选项卡的字体 如何 如果可能 在选项卡文本的 ActionBar 中使用资产文件夹中的字体设置自
  • ValueError:应在输入列表上调用合并层。张量流 Keras

    我目前正在尝试使用 MobileNetV2 的前 50 层 因此 我想提取这些层并创建一个新模型 我以为我可以调用每一层 但是 block 2 add 层会导致错误 我不明白为什么 import tensorflow as tf from
  • 使用服务器进行表单验证

    我有一个表单 我想通过检查电子邮件是否存在来执行 http 验证 但它返回错误 这是我的表格 在表单组件上 constructor private formBuilder FormBuilder private validationServ
  • 如何隐藏jSlider的旋钮?

    我需要自定义JSlider的旋钮 我需要将我自己的旋钮图像放在 Jslider 的默认旋钮上 问题是目前有两个旋钮做出响应 一个是我自己的旋钮 第二个是默认旋钮 请告诉我如何隐藏默认旋钮或任何其他解决方案 下面的代码用于执行此操作 publ
  • 反向地理编码在某些 Android 设备上不起作用?

    我正在开发一个地图应用程序 无法在该手机中获取地址 其android版本是4 3 如下所示 但它在我的手机上运行良好 其版本是4 1 2 如下所示 它在某些棒棒糖版本中运行良好 final Geocoder gc new Geocoder
  • K8s:如何通过服务访问我的应用程序?

    我正在学习 K8s 并在 OSX 上安装了 minikube 我正在阅读 Nigel Poulton 的 K8s 书 并在第 5 章 部署 中进行实验 我有这样的部署 k8s cat deploy yaml apiVersion apps
  • 将 Azure 流量管理器与移动应用程序结合使用

    Azure 流量管理器可以与移动应用程序一起使用 特别是通过社交登录吗 我已经配置了一个流量管理器和两个应用程序服务 例如 mobileapp1 和 mobileapp2 来使用它 它们似乎与邮递员和响应配合得很好 一切都正常 现在 我已在
  • 如何在Linux中使用addr2line命令?

    我试图在 Unix 中使用 addr2line 命令 但每次它都会给出与 0 相同的输出 我发出命令为addr2line e a out 0x4005BDC 我在运行这个 a out 可执行文件时得到了这个地址valgrind查找内存泄漏的
  • MathJax 未在 Sphinx 中呈现

    我在 Sphinx Rest 中有一个文档集 我已将 sphinx ext mathjax 包含在 conf py 中 并包含行 mathjax path http cdn mathjax org mathjax latest MathJa
  • 在上一个命令失败后创建带有红色 $ 的 Bash 命令提示符

    我是 Bash 编程新手 我正在努力创建一个自定义 Bash 命令提示符 我的目标是创建一个提示 仅在登录名和主机名与我通常使用的不同时显示它们 当位于 Git 版本控制下的目录中时 我还希望将当前的 Git 分支附加到命令提示符 我想将登
  • Android:查找动态创建的视图的ID

    我有以下问题 在 Android Studio 中我生成 enEditText动态地当ExerciseButton被点击 public void exerciseButtonClick View view EditText exercise
  • 在 Vertex AI 用户管理笔记本启动时公开现有环境的内核

    这是一个延续这个线程 发布在这里 因为它太复杂 无法发表评论 TL DR 在 Vertex AI 用户管理笔记本中 如何通过重复的停止和启动周期保留存储在数据磁盘上的现有 venv 以及 conda 如果可能 环境的公开内核图标 Detai