开源 AI 食谱文档

HF 空间中的交互式开发

Hugging Face's logo
加入 Hugging Face 社区

并获取增强型文档体验

开始使用

HF 空间中的交互式开发

作者:Moritz Laurer

像 Google Colab 或 Kaggle Notebooks 这样的服务极大地简化了人们在浏览器中使用易于使用的 Jupyter Notebook 访问计算的方式。不幸的是,这些服务也存在一些局限性。

  • GPU 不稳定,训练作业可能在完成前被取消。
  • GPU 选择仅限于少数几个单一 GPU。
  • 不支持通过您首选的本地 IDE(如 VS Code)连接到云 GPU。

HF JupyterLab 空间克服了这些局限性。使用 HF JupyterLab 空间,您可以

  • 在浏览器中的 JupyterLab 中完成所有开发工作。
  • 在 CPU 和各种 GPU 之间动态切换,除非您想要,否则它们永远不会停止。
  • 通过 SSH 将本地 IDE(如 VS Code)连接到云计算资源,以进行完整的远程开发。

本食谱指导您设置自己的 JupyterLab 空间。

HF JupyterLab 空间中的交互式开发

创建您的 JupyterLab 空间

要创建您自己的 HF JupyterLab 空间,请导航到空间创建页面,然后单击Docker > JupyterLab。HF JupyterLab 空间本质上是一个 Docker 容器,其中包含预先配置的 JupyterLab 副本,运行在 Hugging Face 的云基础设施上。以下是一些有关配置 JupyterLab 空间的建议。

  • 选择正确的拥有者:如果您将 JupyterLab 空间用作企业中心组织工作的部分,请在拥有者下拉菜单中选择组织的名称(例如,下图中的虚拟“enterprise-explorers”。然后,任何计算成本将计入该企业组织的帐户。
  • 访问控制:如果您希望团队中仅选定的成员可以访问 JupyterLab 空间,您可以单击访问控制旁边 的所有人,并将对 JupyterLab 空间的访问权限限制为预定义的资源组。资源组是企业中心功能,允许您将对选定存储库(模型、数据集、空间)的访问权限限制为更小的团队成员组。请参阅文档,了解如何创建您的第一个资源组。
  • 选择硬件:您可以从免费的 CPU 到 A100 GPU 的各种硬件中进行选择。在设置空间时,我们建议您选择免费的基本 CPU。一旦需要,您可以切换到更高级的付费硬件(请参阅此处提供的硬件和价格此处)。
  • 持久存储:将持久存储附加到空间非常重要,以便当空间暂停或重置时,您创建的所有文件(代码、模型、数据)也会被保存。您始终可以在需要时在设置中增加磁盘空间。所有持久数据都存储在/data目录中(文档)。
  • 设置密码:空间创建后,登录 JupyterLab 需要密码。此密码通过JUPYTER_TOKEN空间机密进行定义。如果您没有在此处定义密码,则默认密码为“huggingface”。我们建议您设置一个强密码。
  • 开发模式:开发模式是企业中心订阅者的一个功能,它允许您 SSH 进入任何 HF 空间。激活此功能以连接您的本地 VS Code 进行空间云硬件的远程开发(也可以在以后打开或关闭此功能)。请在此处查看预览文档此处
  • 私有空间:作为额外的安全层,我们建议您将空间设置为私有,以便只有您的企业组织(和特定资源组)的成员可以看到它。

配置完 JupyterLab 空间后,您可以单击创建空间。空间将被构建,几秒钟后您将看到 JupyterLab 登录屏幕。您现在可以使用之前定义的密码登录。

使用您的 JupyterLab 空间

您现在可以在浏览器中使用您自己的 JupyterLab 空间!您可以在左侧的文件浏览器中使用 .ipynb 笔记本或任何其他文件和数据集创建您自己的目录结构。如果您已激活持久存储,所有文件都将永久存储在空间的默认/data目录中。

在 CPU 和 GPU 之间动态切换

与 Google Colab 这样的服务类似,您可以动态更改空间运行的硬件。我们建议您在升级或免费的 CPU 上进行初始设置工作,例如数据清理、设置端点或测试 API。设置好代码后,您只需单击空间右上角的设置,然后切换到各种硬件,这些硬件可能需要用于更计算密集型的推理或训练作业。更改硬件时,空间将重新启动,所有环境变量将丢失(与 Google Colab 相同),您将在几秒钟后获得新的硬件上的干净环境。您存储和保存的文件(代码、数据等)当然也会在新的硬件上可用。下图显示了撰写本文时提供的硬件(2024 年 6 月),将来会进行更新。

在图片左下角,您还可以看到 `睡眠时间设置`,您可以在其中定义在没有活动的情况下您希望硬件运行多长时间。这是相对于 Google Colab 的一大优势。如果您想省钱,可以将 Space 在 15 分钟无活动后设为休眠状态,但如果您需要硬件持续 48 小时或更长时间的训练运行,则可以阻止 Space 休眠,让它根据您的需要运行。您也可以手动 `暂停` Space,并且您将不再需要为 Space 硬件付费。

如果您向下滚动设置,您将看到其他选项,例如扩展存储、重置 Space 等。如果您在创建 Space 时没有设置密码,您也可以稍后在此处创建一个名为 `JUPYTER_TOKEN` 的秘密,它将替换默认的 "huggingface" 密码。

当您在几天或几周内积极使用 Space 时,文件可能会在存储缓存中累积。当您收到有关持久存储已满的警告,并且您认为存储配额不应该达到时,重置 Space 以清空缓存可能会有所帮助。

自定义您的 JupyterLab Space

请记住,您的 JupyterLab Space 只是一个预先配置的 Docker 容器,因此,如果您熟悉 Docker,您也可以根据需要对其进行自定义。例如,您可以转到 Space 的 `文件` 部分,并在 `requirements.txt` 文件中添加新需求,或者您可以从默认容器镜像更改为另一个镜像(例如,如果您需要预安装特定的 CUDA 和 PyTorch 版本)在 `Dockerfile` 中。

开发模式:从本地 VS Code 开发 HF Spaces

如果您不喜欢在浏览器中使用 JupyterLab 工作怎么办?进入 `开发模式`。`开发模式` 使您能够从本地 IDE(如 VS Code)SSH 到任何 Space 的硬件。HF Pro/Enterprise 订阅者可以在 Space 设置中为任何 Space 激活 `开发模式`。

激活 `开发模式` 后,您将在 JupyterLab Space 窗口的左下角看到一个弹出窗口。要 SSH 到您的本地 VS Code,您首先需要在本地安装 VS Code Remote - SSH 扩展 并在 HF 个人资料 中添加您的 SSH 密钥。单击 `使用 VS Code 连接` 应该会打开您的本地 VS Code 窗口并建立到您的 Space 的远程连接。类似的过程应该适用于任何支持使用 SSH 进行远程开发的 IDE。

当您使用 SSH 连接到 Space 时,您的默认目录将是一个空的 `/app` 目录。然后,您需要更改到 `/data` 目录,其中存储了所有持久文件(代码、数据、模型等)。`/data` 目录是唯一保证跨会话文件持久化的目录。如果您想修改底层 Docker 容器,可以在 `HOME/user/app` 目录中找到 Docker 容器的文件。

目前,`/data` 目录中的持久文件不会自动备份。因此,我们建议定期备份最重要的文件,以避免意外数据丢失。

现在编写一些代码!

就是这样,您现在可以在浏览器中运行 JupyterLab Space,在多个强大的 GPU 之间动态切换,并从本地 IDE 连接到硬件。

整个食谱都是在一个免费 CPU 的 JupyterLab Space 中编写的,我们邀请您在您自己的 JupyterLab Space 中遵循企业中心食谱中的所有其他食谱。

< > 更新 在 GitHub 上