跳转到主要内容

FISS和dalmatian的轻松包装器

项目描述

Lapdog

PyPI

dalmatian和FISS的轻松包装器

先决条件

  • Lapdog需要MacOS或Linux。Windows官方不支持
  • Lapdog需要Python >= 3.3
  • Lapdog需要Google Cloud SDK,可以从这里安装。
    • 您的gcloud --version应至少为252.0.0。如果不是,请运行gcloud components update
  • Lapdog使用您的Gcloud应用程序默认凭据
    • 在运行Lapdog之前,请使用gcloud auth application-default logingcloud config set account {account}
  • Lapdog需要Gcloud的Alpha和Beta套件
    • Alpha和Beta套件可以通过gcloud components install alpha beta安装
  • (可选) Lapdog用户界面需要node和npm,可以使用系统包管理器安装
    • MacOS: brew install node npm
    • Linux: 通过系统包管理器安装或从源安装
    • Lapdog需要node --version >= 10.15.1
    • Lapdog需要npm --version >= 6.4.1

安装

  1. 通过pip安装lapdog:pip install lapdog
    • 如果您已经安装了lapdog,可以使用pip install --upgrade lapdog升级它
    • 如果遇到PyYAML错误,请参阅下面的PyYaml注意
  2. (可选) 启用Lapdog用户界面
    • 默认情况下,UI 在本地运行。如果您在服务器上安装 Lapdog,则需要为端口 4200 和 4201 设置 SSH 隧道。
    • 如果您尚未安装,请安装 nodenpm
      • 如果您使用的是 Mac OS,请运行 brew install node npm
    • 运行 lapdog ui --install。这可能需要一些时间。

使用方法

  1. 您可以在 Python 中将 lapdog 导入作为 dalmatian 的替代品。
    • lapdog 提供了 dalmatian 中所有可用的功能的超集。
    • 当 lapdog 与 Firecloud 通信时,WorkspaceManager 会缓存数据。如果 Firecloud 经历间歇性故障,WorkspaceManager 可能能够在离线模式下继续运行。调用 WorkspaceManager.sync() 将重新连接到 Firecloud,并推送在离线模式下排队的数据更新。
    • lapdog 中的 WorkspaceManager 通过 WorkspaceManager.execute() 提供执行 api。执行与提交不同之处在于它们直接在 Google 上运行,并在之后将结果上传回 Firecloud。
  2. lapdog 可以用作命令行工具。
    • 此工具提供必要的功能来创建工作区、填充数据、导入或上传方法和配置,以及提交作业(或直接执行它们)。
    • 运行 lapdog --help 以获取可用命令列表。
  3. 您可以通过交互式用户界面使用 lapdog,该界面用于运行和监视 lapdog 执行。
    • 运行 lapdog ui 以启动用户界面。

作业执行

Lapdog 通过为每个 FireCloud 命名空间分配专用的 Google 项目(“引擎”)来执行作业。只能由计费账户管理员初始化给定命名空间的 Lapdog 引擎。要初始化新引擎,请联系您的命名空间管理员,并要求他们运行 lapdog initialize-project

引擎初始化后,您必须向其注册。

  • 当您在未注册的命名空间中加载工作区时,Lapdog 用户界面将自动为您注册。
  • Lapdog Python 模块支持手动注册。
    • 在未注册的命名空间中创建 WorkspaceManager 时,您将收到警告。
    • 您还可以通过检查 WorkspaceManager.gateway.registered 的值来检查您的注册状态。
    • 然后,您可以使用 WorkspaceManager.gateway.register() 进行注册。
    • 如果由于任何 FireCloud 错误而导致注册失败,请稍等几分钟,然后再次尝试调用 register()
  • Lapdog CLI 不支持注册。您可以通过 UI 或 Python 模块进行注册。

工作区权限

在 UI 中,每个页面的底部都会找到 firecloud.org 电子邮件。这是一个代理组电子邮件,包含您以及所有您的服务帐户。要允许 Lapdog 引擎运行作业,该代理组电子邮件必须获得对作业将运行的 FireCloud 工作区的写访问权限。您可以为读取数据的 workspace 授予组读访问权限,但作业无法在没有写权限的工作区中执行。可以通过调用 lapdog.cloud.proxy_group_for_user(YOUR_EMAIL) 来找到代理组电子邮件。

注意:由于 FireCloud 中的一个错误,如果组在您注册到该命名空间的 Lapdog 引擎之前已获得对工作区的访问权限,则不会授予权限。如果您的代理电子邮件确实已获得对工作区的访问权限,但您的作业仍在权限错误失败,请尝试删除访问权限,然后重新授予权限。您可以在此处查看 FireCloud 对此错误报告的响应 此处


路线图

请参阅 里程碑页面 以阅读开发路线图。

与 Firecloud 的优缺点

优点
  • 每个提交都有一个专用的 Cromwell 实例。除非您触碰到 Google 使用配额,否则您的作业永远不会排队。
  • Lapdog 支持请求者付费存储桶和 GPU。
  • 工作区缓存:Lapdog 缓存从 Firecloud 接收的大多数数据。
    • 在发生Firecloud错误时,Lapdog将通过使用其缓存的数据来尝试继续运行。任何数据更新将在工作区同步时推送到Firecloud。
  • 数据缓存:Lapdog API缓存发送到UI和从谷歌读取的数据。
    • 这些缓存通过在可能的情况下存储结果,大大提高了UI性能。
  • 简化UI:Lapdog UI在设计时考虑了效率。
  • 生活品质功能
    • 节省更新方法的时间。将methodRepoMethod.methodVersion设置为"latest",让Lapdog确定快照ID。
    • 轻松上传数据。在将DataFrame上传到Firecloud之前,调用prepare_entity_df。任何本地文件路径将在后台上传到工作区的bucket,并返回一个新的包含新gs://路径的DataFrame。
    • 自动引用上传。当您调用update_attributes时,任何引用本地文件路径的值将在后台上传(就像prepare_entity_df一样)。现在update_attributes返回一个包含上传属性的字典。
缺点
  • 每个提交运行Cromwell服务器都要额外支付0.05美元/小时的费用。
  • 提交结果必须手动通过在UI中点击“上传结果”按钮上传到Firecloud。
  • Lapdog引擎的运行会产生一些小额的额外费用。这些费用包括对API的调用和元数据的存储,这两者都应该是非常便宜的。

PyYAML注意

在安装Lapdog时,由于无法卸载当前的PyYAML版本,安装失败的情况经常发生,因为升级PyYAML时。

这是因为一些较旧的PyYAML版本是通过distutils分发的,这阻止了包的卸载。新的PyYAML版本是通过setuptools分发的,可以被成功卸载。

要解决这个问题,请转到您的Python site-packages目录。site-packages目录通常以.../lib/python{version}/site-packages/结尾。确切的位置取决于您的平台、环境管理器和python配置。

  • 对于anaconda,此路径位于anaconda的安装文件夹中:/{path to anaconda}/envs/{environment}/lib/python{version}/site-packages
  • 对于virtualenvs,此路径位于环境的安装文件夹中:/{path to environment}/lib/python{version}/site-packages
  • 对于Unix系统上的系统python:/usr/local/lib/python{version}/site-packages

定位此文件夹的一个简单方法是打开python,然后

import yaml
yaml

此表达式将评估并打印yaml模块的路径,它将在您的site-packages目录中。

定位到site-packages目录后,您必须删除以下两个目录

  • .../site-packages/yaml/
  • .../site-packages/PyYAML*.egg-info

一旦删除,您可以再次尝试安装lapdog的安装命令。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

lapdog-0.18.10.tar.gz (282.7 kB 查看哈希值)

上传时间

构建分发

lapdog-0.18.10-py3-none-any.whl (138.3 kB 查看哈希值)

上传时间 Python 3

由以下支持