MLCube 和 Podman

MLCube 是一种新的基于开源容器的基础设施规范,用于在基于 Python 的机器学习工作流中实现可重复性。 它可以利用诸如 波德曼, 奇点码头工人. 还支持在远程平台上执行。 正在开发 MLCube 的 MLCommons 最佳实践工作组的主席之一是 黛安·费德玛 来自红帽。 这篇介绍性文章解释了如何运行 你好世界MLCube example 使用 Podman Fedora Linux。

Yazan Monshed 写了一篇对 Podman 很有帮助的介绍 Fedora 其中提供了有关此处使用的一些步骤的更多详细信息。

首先安装必要的依赖项。

sudo dnf -y update
sudo dnf -y install podman git virtualenv 
                    policycoreutils-python-utils

然后,按照文档,设置虚拟环境并获取 example 代码。 为确保可重复性,请在项目正在积极改进时使用特定的提交。

virtualenv -p python3 ./env_mlcube 
source ./env_mlcube/bin/activate
git clone https://github.com/mlcommons/mlcube_examples.git 
cd ./mlcube_examples/hello_world
git checkout 5fe69bd
pip install mlcube mlcube-docker
mlcube describe

现在通过编辑文件 $HOME/mlcube.yaml 将运行器命令从 docker 更改为 podman,以便该行

docker: docker

变成

docker: podman

如果您使用的是 x86_64 架构的计算机,则可以使用以下方式获取容器

mlcube configure --mlcube=. --platform=docker

您将看到许多选项

? Please select an image: 
  ▸ registry.fedoraproject.org/mlcommons/hello_world:0.0.1
    registry.access.redhat.com/mlcommons/hello_world:0.0.1
    docker.io/mlcommons/hello_world:0.0.1
    quay.io/mlcommons/hello_world:0.0.1

选择 docker.io/mlcommons/hello_world:0.0.1 获取容器。

如果您不在 x86_64 架构的计算机上,则需要构建容器。 更改文件 $HOME/mlcube.yaml 以使该行

build_strategy: pull

变成

build_strategy: auto

然后使用构建容器

mlcube configure --mlcube=. --platform=docker

要运行测试,您可能需要在目录中适当地设置 SELinux 权限。 您可以通过键入检查 SELinux 是否已启用

sudo sestatus

这应该给你类似的输出

SELinux status:                 enabled
...

约斯法特·穆泰, 克里斯托弗·斯马特丹尼尔·沃尔什 说明在为容器使用的文件设置适当的 SELinux 策略时需要小心。 在这里,您将允许容器读取和写入工作区目录。

sudo semanage fcontext -a -t container_file_t "$PWD/workspace(/.*)?"
sudo restorecon -Rv $PWD/workspace

现在通过检查来检查目录策略

ls -Z

给出类似于

unconfined_u:object_r:user_home_t:s0 Dockerfile
unconfined_u:object_r:user_home_t:s0 README.md
unconfined_u:object_r:user_home_t:s0 mlcube.yaml
unconfined_u:object_r:user_home_t:s0 requirements.txt
unconfined_u:object_r:container_file_t:s0 workspace

现在运行 example

mlcube run --mlcube=. --task=hello --platform=docker
mlcube run --mlcube=. --task=bye --platform=docker

最后,检查输出

cat workspace/chats/chat_with_alice.txt

有类似的文字

Hi, Alice! Nice to meet you.
Bye, Alice! It was great talking to you.

您可以按照说明创建自己的 MLCube 这里. 的贡献 MLCube 示例存储库 受欢迎的。 乌迪卡 是一个新项目,它承诺对容器进行更细粒度的 SELinux 策略控制,以便系统管理员轻松应用。 这些项目的积极开发正在进行中。 对它们进行测试和提供反馈将有助于使使用 SELinux 的系统上的安全数据管理更容易、更有效。