Shortcuts

torchx.工作空间

状态:测试版

工作区用于在现有镜像的基础上应用本地更改,以便您可以在远程集群上执行代码。此模块包含工作区实现所使用的接口。

这些工作空间被定义为fsspec路径,其下的目录和文件将用于生成补丁。

示例工作区路径:

  • file://. 当前工作目录

  • memory://foo-bar/ 一个用于笔记本/编程使用的内存工作区

class torchx.workspace.WorkspaceMixin(*args: object, **kwargs: object)[source]

注意:(原型)此接口可能会在没有通知的情况下更改!

一个可以附加到调度程序的混合功能,增加了构建工作空间的能力。工作空间是代码库/项目的本地检出,构建成镜像。工作空间调度程序增加了自动重建镜像或生成差异补丁的能力,这些补丁应用于Role,允许用户对应用程序进行本地代码更改,并在运行时反映这些更改(通过新镜像或覆盖补丁),而无需手动重建镜像。工作空间构建产物的确切语义取决于实现。

abstract build_workspace_and_update_role(role: 角色, workspace: str, cfg: Mapping[str, Optional[Union[str, int, float, bool, List[str], Dict[str, str]]]]) None[source]

构建指定的workspace相对于img,并更新role以反映构建的工作空间工件。在最简单的情况下,此方法构建一个新镜像并更新角色的镜像。某些(更高效的)实现构建增量差异补丁,这些补丁覆盖在角色的镜像之上。

注意:此方法会改变传入的 role

dryrun_push_images(app: AppDef, cfg: Mapping[str, Optional[Union[str, int, float, bool, List[str], Dict[str, str]]]]) T[source]

dryrun_push 执行镜像推送的试运行,并更新应用程序以具有最终值。仅针对远程作业调用。

push 必须在调度作业之前调用。

push_images(images_to_push: T) None[source]

如果需要,push 会将任何镜像推送到远程仓库。

workspace_opts() runopts[source]

返回工作区期望的运行配置选项。 基本上是一个--help用于run API。

torchx.workspace.walk_workspace(fs: AbstractFileSystem, path: str, ignore_name: str = '.torchxignore') Iterable[Tuple[str, Iterable[str], Mapping[str, Mapping[str, object]]]][source]

walk_workspace 遍历文件系统路径并应用通过 ignore_name 指定的忽略规则。 这遵循 .dockerignore 的规则。 https://docs.docker.com/engine/reference/builder/#dockerignore-file

torchx.workspace.docker_workspace

class torchx.workspace.docker_workspace.DockerWorkspaceMixin(*args: object, docker_client: Optional[DockerClient] = None, **kwargs: object)[source]

DockerWorkspaceMixin 将从工作区构建修补后的 docker 镜像。这些修补后的镜像是 docker 镜像,可以通过 docker 守护进程在本地使用,或者使用辅助方法推送到远程仓库以用于远程作业。

这需要本地运行一个docker守护进程,并且对于远程推送需要通过docker login进行身份验证到这些仓库。

如果工作区中存在Dockerfile.torchx文件,则将使用该文件来构建容器。

docker build 提供了一些额外的构建参数,可以在 Dockerfile.torchx 中使用:

  • IMAGE: 来自AppDef中第一个Role的图像字符串

  • 工作区:完整的工作区路径

要从构建上下文中排除文件,您可以使用标准的.dockerignore文件。

查看更多:

build_workspace_and_update_role(role: 角色, workspace: str, cfg: Mapping[str, Optional[Union[str, int, float, bool, List[str], Dict[str, str]]]]) None[source]

使用role的镜像作为基础镜像构建一个新的docker镜像,并使用这个新构建的docker镜像ID更新role的镜像

Parameters:
  • role – 该角色的镜像(Docker 镜像)将用作基础镜像

  • workspace – 一个fsspec路径,指向一个包含要覆盖内容的目录

dryrun_push_images(app: AppDef, cfg: Mapping[str, Optional[Union[str, int, float, bool, List[str], Dict[str, str]]]]) Dict[str, Tuple[str, str]][source]

_update_app_images 将提供的 AppDef 中的本地 Docker 镜像(通过 sha256:... 标识)替换为它们将被上传到的远程路径,并返回本地名称到远程名称的映射。

push 必须在启动作业之前使用返回的映射调用。

Returns:

一个字典,包含[本地镜像名称, (远程仓库, 标签)]。

push_images(images_to_push: Dict[str, Tuple[str, str]]) None[source]

_push_images 将指定的镜像推送到带有指定标签的远程容器仓库。Docker 守护进程必须使用 docker login 进行身份验证才能访问远程仓库。

Parameters:

images_to_push – 一个包含[本地镜像名称, (远程仓库, 标签)]的字典。

workspace_opts() runopts[source]

返回工作区期望的运行配置选项。 基本上是一个--help用于run API。

torchx.workspace.dir_workspace

class torchx.workspace.dir_workspace.DirWorkspaceMixin(*args: object, **kwargs: object)[source]
build_workspace_and_update_role(role: 角色, workspace: str, cfg: Mapping[str, Optional[Union[str, int, float, bool, List[str], Dict[str, str]]]]) None[source]

从工作区创建一个由job_dir指定的新目录。角色图像字段将设置为job_dir

.torchxignore文件夹中列出的任何文件将被跳过。