开源 AI 食谱文档
HF Spaces 中的交互式开发
并获得增强的文档体验
开始使用
HF Spaces 中的交互式开发
Google Colab 或 Kaggle Notebooks 等服务极大地简化了人们在浏览器中使用易于使用的 Jupyter 笔记本访问计算资源的方式。不幸的是,这些服务也有一些限制。
- GPU 不稳定,训练任务可能在完成前就被取消。
- GPU 的选择仅限于少数几个单 GPU。
- 没有原生支持通过您喜欢的本地 IDE(如 VS Code)连接到云 GPU。
HF JupyterLab Spaces 克服了这些限制。通过 HF JupyterLab Space,您可以:
- 在浏览器中的 JupyterLab 中完成所有开发工作。
- 在 CPU 和各种 GPU 之间动态切换,它们永不停止,除非您希望它们停止。
- 通过 SSH 连接到云计算资源,使用您喜欢的本地 IDE(如 VS Code)进行完全远程开发。
本教程将指导您设置自己的 JupyterLab Space。
HF JupyterLab Spaces 中的交互式开发
创建您的 JupyterLab Space
要创建您自己的 HF JupyterLab Space,请导航到 Space 创建页面,然后点击 `Docker` > `JupyterLab`。HF JupyterLab Space 本质上是一个 Docker 容器,其中预配置了 JupyterLab 副本,并在 Hugging Face 的云基础设施上运行。以下是一些关于配置您的 JupyterLab Space 的建议:
- 选择正确的拥有者:如果您正在将 JupyterLab Space 作为企业 Hub 组织工作的一部分,请在 `Owner` 下拉菜单中选择组织的名称(例如,下图中虚拟的“enterprise-explorers”)。所有计算费用将由该企业组织账户支付。
- 访问控制:如果您只想让您的团队中选定的成员访问 JupyterLab Space,您可以点击 `Access Control` 旁边的 `Everyone`,并将 JupyterLab Space 的访问权限限制为预定义的资源组。资源组是企业 Hub 的一个功能,它使您能够将对选定存储库(模型、数据集、Space)的访问权限限制到较小的团队成员组。请参阅有关如何创建第一个资源组的文档。

- 选择您的硬件:您可以选择从免费 CPU 到 A100 GPU 的各种硬件。在设置 Space 时,我们建议您选择免费的基本 CPU。一旦您需要,您可以切换到更好的付费硬件(此处查看可用的硬件和价格 here)。
- 持久存储:为 Space 附加持久存储非常重要,这样您创建的所有文件(代码、模型、数据)在 Space 暂停或重置时也会保存。如果需要,您可以随时在设置中增加磁盘空间。所有持久数据都存储在 `/data` 目录中(文档)。
- 设置您的密码:Space 创建后,登录 JupyterLab 需要密码。此密码通过 `JUPYTER_TOKEN` Space 密钥定义。如果您在此处未定义密码,默认密码为“huggingface”。我们建议设置一个强密码。
- 开发者模式:开发者模式是企业 Hub 订阅者的一项功能,它使您可以通过 SSH 连接到任何 HF Space。激活此功能,以连接您的本地 VS Code,以便在 Space 的云硬件上进行远程开发(此功能也可以稍后开启/关闭)。请参阅预览文档 here。
- 私有 Spaces:作为额外的安全层,我们建议将 Space 设置为私有,以便只有您的企业组织(以及特定资源组)的成员才能看到它。

配置好 JupyterLab Space 后,您可以点击 `Create Space`。Space 将开始构建,几秒钟后您将看到 JupyterLab 登录界面。现在,您可以使用之前定义的密码登录。

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

在 CPU 和 GPU 之间动态切换
类似于 Google Colab 等服务,您可以即时更改 Space 运行的硬件。我们建议在升级或免费 CPU 上进行初始设置工作,例如数据清理、设置端点或测试 API。一旦您的代码设置完成,您只需点击 Space 右上角的 `Settings`,即可更改为更广泛的硬件选择,这些硬件可能用于计算密集型推理或训练任务。当您更改硬件时,Space 将重新启动,所有环境变量都将丢失(与 Google Colab 类似),几秒钟后您将在新硬件上获得一个全新的干净环境。您存储和保存的文件(代码、数据等)当然也会在新硬件上可用。下图显示了撰写本文时(2024 年 6 月)可用的硬件,未来会更新。
在图片左下角,您还可以看到 `Sleep time settings`(休眠时间设置),您可以在其中定义在不活动情况下硬件运行的时长。这比 Google Colab 有很大的优势。如果您想省钱,可以在 15 分钟不活动后让 Space 休眠,但如果您需要硬件进行 48 小时或更长时间的训练运行,您只需阻止 Space 休眠,让它运行您想要的任意时长。您也可以手动 `Pause`(暂停)Space,这样就不会再为 Space 硬件付费。

如果您在设置中向下滚动,您会看到更多选项,例如扩展存储空间、重置 Space 等。如果您在 Space 创建期间没有设置密码,您也可以稍后在此处创建一个名为 `JUPYTER_TOKEN` 的秘密,它将替换默认的“huggingface”密码。
当您连续几天或几周积极使用 Space 时,文件可能会在存储缓存中累积。当您收到持久存储已满的警告,并且您认为存储配额不应该达到时,将 Space 恢复出厂设置以清空缓存可能会有所帮助。
定制您的 JupyterLab Space
请记住,您的 JupyterLab Space 只是一个预配置的 Docker 容器,因此如果您熟悉 Docker,也可以根据您的需求进行自定义。例如,您可以前往 Space 的 `Files` 部分,向 `requirements.txt` 文件添加新的依赖项,或者您可以更改 `Dockerfile` 中的默认容器镜像为其他镜像,例如,如果您需要预安装特定的 CUDA 和 PyTorch 版本。

开发者模式:通过本地 VS Code 在 HF Spaces 上进行开发
如果您不喜欢在浏览器中工作在 JupyterLab 中呢?请使用 `Dev Mode`。`Dev Mode` 允许您从本地 IDE(例如 VS Code)通过 SSH 连接到任何 Space 的硬件。HF Pro/Enterprise 订阅者可以在 Space 的设置中为任何 Space 激活 `Dev Mode`。
激活 `Dev Mode` 后,您将在 JupyterLab Space 窗口的左下角看到一个弹出窗口。要通过 SSH 连接到您的本地 VS Code,您首先需要本地安装 VS Code Remote - SSH 扩展,并将您的 SSH 密钥添加到您的 HF 个人资料。单击 `Connect with 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 中学习企业 Hub 食谱的所有其他食谱。
< > 在 GitHub 上更新