数据科学家用的发展环境管理工具。
项目描述
AI/ML的开发环境
什么是envd?
envd (ɪnˈvdɪ
) 是一个命令行工具,可以帮助您创建基于容器的AI/ML开发环境。
创建开发环境并不容易,尤其是在当今复杂的系统和依赖关系下。从Python到CUDA、BASH脚本和Dockerfile,一切都在不断崩溃,这感觉像是一场噩梦——直到现在!
只需简单声明在build.envd中所需的软件包,然后执行一个命令:envd up
,即可立即启动您所需的环境!
为什么使用envd
?
使用envd
构建的环境提供以下功能,无需额外设置
简单的CLI和语言
envd
允许您快速无缝地将强大的 CLI 工具集成到现有的 Python 工作流程中,以配置编程环境,而无需学习新的语言或 DSL。
def build():
install.python_packages(name = [
"numpy",
])
shell("zsh")
config.jupyter()
隔离,兼容 OCI 镜像
使用 envd
,用户可以创建一个隔离的空间进行训练、微调或服务。通过利用先进的虚拟化技术以及其他功能,如 buildkit,它是一个理想的配置环境解决方案。
envd
环境镜像兼容 OCI 镜像规范。通过利用 OCI 镜像的力量,您可以使环境对任何人开放!使用像 Harbor 或 Docker Hub 这样的容器注册中心来实现这一点。
本地和云
envd
现在可以用于混合平台,从本地机器到由 Kubernetes 托管的集群。这些选项中的任何一种都为开发人员提供了创建项目的高效且灵活的方式!
$ envd context use local
# Run envd environments locally
$ envd up
...
$ envd context use cluster
# Run envd environments in the cluster with the same experience
$ envd up
有关更多详细信息,请参阅 文档。
快速构建任何地方
envd
提供了许多优势,如远程构建和软件缓存功能,例如 pip 索引缓存或 apt 缓存,借助 buildkit 实现 - 所有这些都是为了使您的生活更加轻松,而无需进入代码本身!
从 PyPI/APT 缓存中重用先前下载的包可以节省时间和精力,使构建更高效。无需重新下载之前已获得的资源 - 单次下载就足以用于重复使用!
使用 Dockerfile v1,用户无法利用 PyPI 缓存来提高安装速度 - 但 envd
提供了这项支持以及更多功能!
此外,envd
还支持远程构建,这意味着您可以在远程机器上(例如云服务器)构建环境,然后将其推送到注册中心。当您在资源有限的机器上工作时,或者当您预期构建机器具有更高的性能时,这尤其有用。
团队知识复用
忘记复制粘贴 Dockerfile 指令 - 使用 envd 通过导入任何 Git 仓库的 include
函数轻松构建函数并复用它们!快速构建强大的自定义解决方案。
envdlib = include("https://github.com/tensorchord/envdlib")
def build():
base(os="ubuntu20.04", language="python")
envdlib.tensorboard(host_port=8888)
envdlib.tensorboard
定义在 github.com/tensorchord/envdlib
def tensorboard(
envd_port=6006,
envd_dir="/home/envd/logs",
host_port=0,
host_dir="/tmp",
):
"""Configure TensorBoard.
Make sure you have permission for `host_dir`
Args:
envd_port (Optional[int]): port used by envd container
envd_dir (Optional[str]): log storage mount path in the envd container
host_port (Optional[int]): port used by the host, if not specified or equals to 0,
envd will randomly choose a free port
host_dir (Optional[str]): log storage mount path in the host
"""
install.python_packages(["tensorboard"])
runtime.mount(host_path=host_dir, envd_path=envd_dir)
runtime.daemon(
commands=[
[
"tensorboard",
"--logdir",
envd_dir,
"--port",
str(envd_port),
"--host",
"0.0.0.0",
],
]
)
runtime.expose(envd_port=envd_port, host_port=host_port, service="tensorboard")
入门 🚀
要求
- Docker (20.10.0 或更高版本)
安装和初始化 envd
envd
可以使用 pip
安装,或者您可以直接下载二进制 发布版。安装后,请运行 envd bootstrap
进行初始化。
pip install --upgrade envd
安装后,请运行 envd bootstrap
进行初始化
envd bootstrap
有关更多替代安装方法,请参阅 文档。
当运行
envd bootstrap
时,您可以使用--dockerhub-mirror
或-m
标志配置 docker.io 注册中心的镜像。envd bootstrap --dockerhub-mirror https://docker.mirrors.sjtug.sjtu.edu.cn
创建 envd
环境
请克隆 envd-quick-start
git clone https://github.com/tensorchord/envd-quick-start.git
构建清单 build.envd
看起来像
def build():
base(os="ubuntu20.04", language="python3")
# Configure the pip index if needed.
# config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple")
install.python_packages(name = [
"numpy",
])
shell("zsh")
请注意,这里我们以 Python 为例,但请查看其他语言(如 R 和 Julia)的示例 这里。
然后请运行以下命令来设置新环境
cd envd-quick-start && envd up
$ cd envd-quick-start && envd up
[+] ⌚ parse build.envd and download/cache dependencies 2.8s ✅ (finished)
=> download oh-my-zsh 2.8s
[+] 🐋 build envd environment 18.3s (25/25) ✅ (finished)
=> create apt source dir 0.0s
=> local://cache-dir 0.1s
=> => transferring cache-dir: 5.12MB 0.1s
...
=> pip install numpy 13.0s
=> copy /oh-my-zsh /home/envd/.oh-my-zsh 0.1s
=> mkfile /home/envd/install.sh 0.0s
=> install oh-my-zsh 0.1s
=> mkfile /home/envd/.zshrc 0.0s
=> install shell 0.0s
=> install PyPI packages 0.0s
=> merging all components into one 0.3s
=> => merging 0.3s
=> mkfile /home/envd/.gitconfig 0.0s
=> exporting to oci image format 2.4s
=> => exporting layers 2.0s
=> => exporting manifest sha256:7dbe9494d2a7a39af16d514b997a5a8f08b637f 0.0s
=> => exporting config sha256:1da06b907d53cf8a7312c138c3221e590dedc2717 0.0s
=> => sending tarball 0.4s
envd-quick-start via Py v3.9.13 via 🅒 envd
⬢ [envd]❯ # You are in the container-based environment!
设置 Jupyter notebook
请编辑 build.envd
以启用 jupyter notebook
def build():
base(os="ubuntu20.04", language="python3")
# Configure the pip index if needed.
# config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple")
install.python_packages(name = [
"numpy",
])
shell("zsh")
config.jupyter()
您可以通过 envd envs ls
获取正在运行的 Jupyter notebook 的端点。
$ envd up --detach
$ envd envs ls
NAME JUPYTER SSH TARGET CONTEXT IMAGE GPU CUDA CUDNN STATUS CONTAINER ID
envd-quick-start http://localhost:42779 envd-quick-start.envd /home/gaocegege/code/envd-quick-start envd-quick-start:dev false <none> <none> Up 54 seconds bd3f6a729e94
v0 和 v1 的区别
注意 要使用
v1
配置文件,请将# syntax=v1
添加到您的build.envd
文件的第 一行。
功能 | v0 | v1 |
---|---|---|
是 envd<v1.0 的默认选项 |
✅ | ❌ |
支持开发 | ✅ | ✅ |
支持 CUDA | ✅ | ✅ |
支持服务 | ⚠️ | ✅ |
支持自定义基础镜像 | ⚠️ | ✅ |
支持安装多种语言 | ⚠️ | ✅ |
支持 moby 构建器 |
❌ | ✅ (a) |
注意 (a) 要使用
moby
构建器,您需要使用以下命令创建一个新的环境:envd context create --name moby-test --builder moby-worker --use
。有关moby
构建器的更多信息,请参阅 issue-1693。
重要 更多详细信息,请参阅 升级到 v1 文档。
更多关于文档 📝
请参阅 envd 文档。
路线图 🗂️
请查看 ROADMAP。
贡献 😊
我们欢迎开源社区、个人和合作伙伴的各种贡献。
- 加入我们的 discord 社区!
- 要从源代码构建,请阅读我们的 贡献文档 和 开发教程。
贡献者 ✨
感谢以下这些优秀的人们 (表情符号键)
本项目遵循all-contributors规范。欢迎任何形式的贡献!
许可证 📋
项目详情
envd-0.3.45.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d475cc0fec647127bb0d765a9be0c69ac31d7beee1f83ebf6253893320f2ae0b |
|
MD5 | 1d4d2a6c932bf8bd4a57985098a553c0 |
|
BLAKE2b-256 | d94f018cbb69d814d579f54516a844f00ecf3f845a842cca48593f22298ca80d |
哈希值 用于 envd-0.3.45-py2.py3-none-musllinux_1_1_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 278218a7c269dbc2e75b46cf4e810c5e3ac2ae560730b2f1e66edcb62729d553 |
|
MD5 | df45260c987035d799840752f974f9ff |
|
BLAKE2b-256 | 1811a9064be4d647441f6b6a0b826eba6906000cb199c433ec34f0735fb2727e |
哈希值 用于 envd-0.3.45-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4b3b1a196bfbf889d7d793c23896fe8c58efb14923790d787a7fe1ebed7a644f |
|
MD5 | f7435036fc77ac17abc242555df72c12 |
|
BLAKE2b-256 | 4afb86a21bd6494850e905b8d02b6c3da9a8998487179c7edacd8e2504f822de |
哈希值 用于 envd-0.3.45-py2.py3-none-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a8032bc2374f15f0fc7b9230b9cb771e6b220ffb58990d3ea97699e34bc853b0 |
|
MD5 | b748c3f1dbd68a1e6af2264348c70240 |
|
BLAKE2b-256 | bb9bb0fe119c6623b96015aa63427c678b8832a61a2b708adbd7e77c498a89cf |
哈希值 用于 envd-0.3.45-py2.py3-none-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1e8fecf69293a3cd42f7ab544323f355831b0a5ee02827c25f4d142f49783799 |
|
MD5 | d2502ecc5aa72440da48e85015395e88 |
|
BLAKE2b-256 | 588b1c55b3d7552f046179159e7a0a2010165e2aa89b66ea07eb4cce13541e81 |