Gradio 月活跃用户突破 100 万!
阅读更多Gradio 月活跃用户突破 100 万!
阅读更多Hugging Face Hub 是一个中心平台,拥有数十万个模型、数据集和演示(也称为 Spaces)。
Gradio 具有多种功能,可以极其轻松地利用 Hub 上现有的模型和 Spaces。本指南将介绍这些功能。
Hugging Face 拥有一项名为Serverless Inference Endpoints 的服务,允许你向 Hub 上的模型发送 HTTP 请求。该 API 包括慷慨的免费层级,当你希望在生产环境中使用它时,可以切换到专用 Inference Endpoints。Gradio 直接与 Serverless Inference Endpoints 集成,因此你只需指定模型的名称(例如 Helsinki-NLP/opus-mt-en-es
)即可创建演示,如下所示
import gradio as gr
demo = gr.load("Helsinki-NLP/opus-mt-en-es", src="models")
demo.launch()
对于 Inference Endpoints 中支持的任何 Hugging Face 模型,Gradio 都会自动推断预期的输入和输出并进行底层服务器调用,因此你无需担心定义预测函数。
请注意,我们只需指定模型名称并声明 src
应该是 models
(Hugging Face 的模型 Hub)。由于你没有在计算机上加载模型,因此无需安装任何依赖项(gradio
除外)。
你可能会注意到,第一次推理需要稍长的时间。这是因为 Inference Endpoints 正在服务器中加载模型。之后你将获得一些好处
Hugging Face Spaces 允许任何人免费托管他们的 Gradio 演示,上传你的 Gradio 演示只需几分钟。你可以前往 hf.co/new-space,选择 Gradio SDK,创建一个 app.py
文件,就完成了!你拥有一个可以与任何人分享的演示。要了解更多信息,请阅读本指南,了解如何使用网站在 Hugging Face Spaces 上托管。
或者,你可以通过编程方式创建 Space,利用 huggingface_hub 客户端库库。这是一个示例
from huggingface_hub import (
create_repo,
get_full_repo_name,
upload_file,
)
create_repo(name=target_space_name, token=hf_token, repo_type="space", space_sdk="gradio")
repo_name = get_full_repo_name(model_id=target_space_name, token=hf_token)
file_url = upload_file(
path_or_fileobj="file.txt",
path_in_repo="app.py",
repo_id=repo_name,
repo_type="space",
token=hf_token,
)
在这里,create_repo
使用该帐户的写入令牌在特定帐户下创建具有目标名称的 gradio 仓库。repo_name
获取相关仓库的完整仓库名称。最后,upload_file
将名为 app.py
的文件上传到仓库中。
你还可以使用和混搭 Hugging Face Spaces 上现有的 Gradio 演示。例如,你可以将 Spaces 上的两个现有 Gradio 演示作为单独的选项卡,并创建一个新的演示。你可以在本地运行这个新演示,或将其上传到 Spaces,从而实现无限的可能性来混搭和创建新的演示!
这是一个完全做到这一点的示例
import gradio as gr
with gr.Blocks() as demo:
with gr.Tab("Translate to Spanish"):
gr.load("gradio/en2es", src="spaces")
with gr.Tab("Translate to French"):
gr.load("abidlabs/en2fr", src="spaces")
demo.launch()
请注意,我们使用 gr.load()
,与我们使用 Inference Endpoints 加载模型的方法相同。但是,这里我们指定 src
是 spaces
(Hugging Face Spaces)。
注意:以这种方式加载 Space 可能会导致与原始 Space 略有差异。特别是,应用于整个 Blocks 的任何属性,例如主题或自定义 CSS/JS,都不会被加载。你可以将这些属性从你正在加载的 Space 复制到你自己的 Blocks
对象中。
transformers
中 Pipeline
的演示Hugging Face 流行的 transformers
库有一个非常易于使用的抽象,pipeline()
,它可以处理大多数复杂代码,为常见任务提供简单的 API。通过指定任务和(可选的)模型,你可以围绕现有模型构建演示,只需几行 Python 代码
import gradio as gr
from transformers import pipeline
pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
def predict(text):
return pipe(text)[0]["translation_text"]
demo = gr.Interface(
fn=predict,
inputs='text',
outputs='text',
)
demo.launch()
但是 gradio
实际上使将 pipeline
转换为演示变得更加容易,只需使用 gradio.Interface.from_pipeline
方法,即可跳过指定输入和输出组件的需求
from transformers import pipeline
import gradio as gr
pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
demo = gr.Interface.from_pipeline(pipe)
demo.launch()
之前的代码生成了以下界面,你可以在浏览器中直接尝试
就这样!让我们回顾 Gradio 和 Hugging Face 协同工作的几种方式
gr.load()
。gr.load()
。transformers
pipeline 转换为 Gradio 演示,通过使用 from_pipeline()
。🤗