跳转到主要内容

数据科学家用的发展环境管理工具。

项目描述

envd cat wink envd cat wink

AI/ML的开发环境

discord invitation link trackgit-views Python Version all-contributors envd package downloads continuous integration Coverage Status

什么是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

贡献 😊

我们欢迎开源社区、个人和合作伙伴的各种贡献。

Open in Gitpod

贡献者 ✨

感谢以下这些优秀的人们 (表情符号键)

 Friends A.
朋友 A.

📖 🎨
Aaron Sun
Aaron Sun

📓 💻
Aka.Fido
Aka.Fido

📦 📖 💻
Alex Xi
Alex Xi

💻
Bingtan Lu
Bingtan Lu

💻
Bingyi Sun
Bingyi Sun

💻
Ce Gao
Ce Gao

💻 📖 🎨 📆
Frost Ming
Frost Ming

💻 📖
Guangyang Li
Guangyang Li

💻
Gui-Yue
Gui-Yue

💻
Haiker Sun
Haiker Sun

💻
Ikko Ashimine
Ikko Ashimine

💻
Isaac
Isaac

💻
JasonZhu
JasonZhu

💻
Jian Zeng
Jian Zeng

🎨 🤔 🔬
Jinjing Zhou
Jinjing Zhou

🐛 💻 🎨 📖
Jun
Jun

📦 💻
Kaiyang Chen
Kaiyang Chen

💻
Keming
Keming

💻 📖 🤔 🚇
Kevin Su
Kevin Su

💻
Ling Jin
Ling Jin

🐛 🚇
Manjusaka
Manjusaka

💻
Nino
Nino

🎨 💻
Pengyu Wang
Pengyu Wang

📖
Sepush
Sepush

📖
Shao Wang
Shao Wang

💻
Siyuan Wang
Siyuan Wang

💻 🚇 🚧
Suyan
苏岩

📖
To My
致我的

📖
Tumushimire Yves
图穆希米耶·伊夫

💻
Wei Zhang
张伟

💻
Weixiao Huang
黄伟晓

💻
Weizhen Wang
王伟珍

💻
XRW
XRW

💻
Xu Jin
金旭

💻
Xuanwo
玄沃

💬 🎨 🤔 👀
Yijiang Liu
刘毅江

💻
Yilong Li
李一龙

📖 🐛 💻
Yuan Tang
唐远

💻 🎨 📖 🤔
Yuchen Cheng
程宇晨

🐛 🚇 🚧 🔧
Yuedong Wu
吴越东

💻
Yunchuan Zheng
郑云川

💻
Zheming Li
李哲铭

💻
Zhenguo.Li
李正果

💻 📖
Zhenzhen Zhao
赵振振

🚇 📓 💻
Zhizhen He
何志珍

💻 📖
cutecutecat
cutecutecat

💻
dqhl76
dqhl76

📖 💻
heyjude
heyjude

💻
jimoosciuc
jimoosciuc

📓
kenwoodjw
kenwoodjw

💻
li mengyang
李梦阳

💻
nullday
nullday

🤔 💻
rrain7
rrain7

💻
tison
tison

💻
wangxiaolei
王晓雷

💻
wyq
wyq

🐛 🎨 💻
x0oo0x
x0oo0x

💻
xiangtianyu
向天宇

📖
xieydd
谢一丁

💻
xing0821
邢0821

🤔 📓 💻
xxchan
xxchan

📖
zhyon404
zhyon404

💻
杨成锴
杨成锴

💻

本项目遵循all-contributors规范。欢迎任何形式的贡献!

许可证 📋

Apache 2.0

trackgit-views

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分发

envd-0.3.45.tar.gz (333.8 kB 查看哈希值)

上传时间

构建分发

envd-0.3.45-py2.py3-none-musllinux_1_1_x86_64.whl (14.1 MB 查看哈希值)

上传时间 Python 2 Python 3 musllinux: musl 1.1+ x86-64

envd-0.3.45-py2.py3-none-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.1 MB 查看哈希值)

上传时间 Python 2 Python 3 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

envd-0.3.45-py2.py3-none-macosx_11_0_arm64.whl (28.6 MB 查看哈希值)

上传时间 Python 2 Python 3 macOS 11.0+ ARM64

envd-0.3.45-py2.py3-none-macosx_10_9_x86_64.whl (28.6 MB 查看哈希值)

上传时间 Python 2 Python 3 macOS 10.9+ x86-64

由以下机构支持