使用自己的容器(BYOC)
Amazon Braket Hybrid Jobs 提供了三个预先构建的容器,用于在不同的环境中运行代码。如果其中一个容器支持您的使用案例,则只需在创建混合作业时提供算法脚本即可。可以使用 pip 从算法脚本或 requirements.txt 文件中添加少量缺失的依赖关系。
如果这些容器都不支持您的使用案例,或者您想对其进行扩展,Braket Hybrid Jobs 支持使用您自己的自定义 Docker 容器镜像运行混合作业,或者由您自带容器(BYOC)。请确保它是适合您使用案例的功能。
什么时候自带容器才是正确的决定?
将自己的容器(BYOC)带到 Braket Hybrid Jobs 中,通过将自己的软件安装在打包环境中,可以灵活地使用自己的软件。根据您的具体需求,一些方法可能能够实现同样的灵活性,而不必经历完整的 BYOC Docker 构建 - Amazon ECR 上传 - 自定义图像 URI 周期。
注意
如果您想添加少量公开发布的其他 Python 包(通常少于 10 个),BYOC 可能不是正确的选择。例如,如果您使用的是 PyPi。
在这种情况下,您可以使用其中一个预先构建的 Braket 镜像,然后在作业提交时在源目录中加入一个 requirements.txt 文件。该文件可被自动读取,pip 将照常安装具有指定版本的软件包。如果您要安装大量软件包,则作业的运行时可能会大大增加。检查您要用来测试软件能否运行的预构建容器的 Python 和 CUDA 版本(如适用)。
当您想在作业脚本中使用非 Python 语言(如 C++ 或 Rust),或者您想使用无法通过 Braket 预建容器提供的 Python 版本时,BYOC 是必需的。在以下情况下,这也是一个不错的选择:
-
您正在使用带有许可证密钥的软件,需要通过许可服务器对该密钥进行身份验证才能运行该软件。使用 BYOC,您可以将许可证密钥嵌入 Docker 映像中,并包含用于对其进行身份验证的代码。
-
您使用的软件不可公开访问。例如,该软件托管在私有 GitLab 或 GitHub 存储库上,您需要使用特定的 SSH 密钥才能访问该存储库。
-
您需要安装一套未打包在 Braket 提供的容器中的大型软件。BYOC 可消除由于安装软件而导致混合作业容器启动时间过长。
BYOC 还使用您的软件构建 Docker 容器并将其提供给用户,从而使您的自定义 SDK 或算法可供客户使用。您可以通过在 Amazon ECR 中设置适当的权限来实现此目的。
注意
您必须遵守所有适用的软件许可证。