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 的系统上的安全数据管理更容易、更有效。