使用 PowerShell 列出所有 ZeroGPU Spaces
在 Hugging Face 中,您可以免费上传使用 GPU 的应用程序,使用名为 ZeroGPU 的资源(针对拥有 PRO 帐户的用户)。这允许您创建可以访问强大 GPU 的应用程序。
然而,这仅限于 10 个空间。最近,在尝试使用 ZeroGPU 创建新空间时,我遇到了限制错误。但是,通过界面,我发现查找使用 ZeroGPU 的空间非常耗时,所以我记得 Hugging Face API 有很多信息,并且在 PowershAI 中,使用 API 非常简单。
通过界面,我发现最接近的方法是进入 Spaces 菜单,在那里您可以访问热门 Spaces 屏幕,然后进行筛选
- 进入 Spaces 顶部菜单
- 然后,点击筛选图标
- 选择 ZeroGPU
- 在搜索字段中,输入您的用户名
虽然这种方法在许多情况下可能效果很好,但它也有一些缺点
- 请注意,在上面的示例中,它只列出了 6 个空间。我需要找到 10 个(因为 Hugging Face 由于达到限制而不允许我创建另一个使用 ZeroGPU 的 Space)。私有空间和包含错误的空间未被列出。
- 您在字段中使用的过滤器并不完全是按作者筛选,因此如果另一个空间具有与您的用户名同名的内容,它可能会被列出。
这就是 PowershAI 的用武之地。使用 PowershAI,我可以通过几个简单的命令列出所有使用 ZeroGPU 的空间。
如果您从未安装过 powershell,请按照以下步骤安装并配置它以使用 Hugging Face。您只需要执行一次。如果您已经完成,可以跳过以下说明。
首次安装 Powershell 并配置 Hugging Face
要安装 powershell,打开 powershell 并运行以下命令
Install-Module -Scope CurrentUser powershai
如果您收到执行策略错误,请运行此命令
Set-ExecutionPolicy -Scope Process Bypass
现在,您需要一个 hugging face 令牌。生成它非常简单
- 在 Hugging Face 中登录您的帐户
- 在右上角,点击您的头像(一个圆圈),会弹出一个菜单,然后进入“访问令牌”
- 然后,查找一个
+ 创建令牌
按钮 - 在令牌类型中,选择
读取
,给它一个名称(例如 powershai)并点击创建 - 然后,点击“创建令牌”按钮
- 保留生成的令牌,您将在下一步中使用它
现在您有了 hugging face 令牌,只需将其添加到 powershell 中。下面的脚本可以完成此操作。它会要求您输入令牌
# Import the module
import-module powershai
# Activate the Hugging Face provider
Set-AiProvider HuggingFace
# Enter your hugging face token
Set-AiCredential
# Test the token
Get-HfMe # this command returns your user information
如果您遇到错误,那很可能是权限问题、步骤不正确,甚至是 powershell 的 bug。如果您检查过并且错误仍然存在,请在评论中与我联系,我可以帮助您(不泄露个人信息或令牌)
最后,为了不必再次执行整个过程,您可以导出设置并用密码保护它们。此密码用于生成密钥以加密令牌并将其保存到运行它的计算机上。请使用一个安全且易于记忆的密码
# powershai never transmit this password over the internet or save it
Export-PowershellSettings
# When you want to import again, just use
Import-PowershellSettings # and enter the password used
获取 ZeroGPU 信息
一旦您的 powershell 准备好与 Hugging Face 交互,我们就可以开始使用命令了
Get-HfSpace -My | %{ Get-HfSpace $_.id -NoGradioSession } | ?{ $_.runtime.hardware.requested -like 'zero-*' } | select id,private
让我们解释一下用管道符分隔的每个命令,从左边开始
Get-HfSpace -My
此命令返回您的所有空间。但是,它只返回一些基本信息,例如空间 ID。%{ Get-HfSpace $_.id -NoGradioSession }
在 powershell 中,%
是foreach-object
命令的别名,它只是重复括号中的命令,对前一个命令的每个结果执行一次,并允许使用变量$_
访问该结果。换句话说,我们再次运行 Get-HfSpace,但传递每个空间的 ID。这样,该命令会返回更多详细信息。我 开了一个 Issue 来改进这一点,以便只通过一次Get-HfSpace -My
调用就能获取此信息
参数-NoGradioSession
防止 powershell 尝试打开与 Gradio 的连接,这会减慢执行速度。这不是必需的,因为我们不想与 Space 交互,而只是获取其元数据。?{ $_.runtime.hardware.requested -like ‘zero-*’ }
?
是 Where-Object 的别名,这是一个过滤结果的命令。
在这种情况下,我们正在访问每个空间的 runtime.hardware 属性。
在这个对象中,我们将有另一个名为 requested 的属性,它表示请求的硬件。根据观察,我注意到 ZeroGPU 总是以zero-
开头select id,private
最后,使用 select 命令(Select-Object 的别名)只获取 id 和 private 属性,指示空间是否为私有。
使用我的用户运行上述命令,它 返回了以下内容
如果您愿意,可以将完整结果保存到变量中,稍后进一步探索
$spaces = Get-HfSpace -My | %{ Get-HfSpace $_.id -NoGradioSession } | ?{ $_.runtime.hardware.requested -like 'zero-*' }
PowershAI 是一个令人难以置信的模块,与 Hugging Face 的集成对于那些需要获取信息并与 Hugging Face 交互的人来说,具有许多令人惊叹的功能! 此链接包含有关如何使用 PowerShell 与 Hugging Face 交互的基本文档
如果您想了解更多关于该项目的信息,建议功能、修正等,请在 git 上查看:rrg92/powershai: PowerShell + AI