Hugging Face简介
对于非机器学习或深度学习领域的人士来说,Hugging Face这个名字可能并不耳熟。然而,随着近年来大规模模型的迅速崛起,相信大家或多或少都有所接触。如果你对这一领域感兴趣,并在GitHub上查阅过一些开源资料,那么你一定会频繁地看到Hugging Face的身影。例如,在DeepSeek-V3的GitHub项目中,下载的栏目就出现了Hugging Face链接。
正如Hugging Face的名字所寓意的那样(意为“拥抱的脸”),其标志设计同样别具一格,极具辨识度。🤗
那么,Hugging Face Hub 究竟是何方神圣呢?
Hugging Face Hub 是一个庞大的平台,汇聚了超过 90 万个模型、20 万个数据集以及 30 万个演示应用程序(Spaces)。这些资源全部开源,并在在线平台上公开共享,使人们能够轻松协作,共同推动机器学习的发展。Hub 作为一个核心枢纽,为所有人提供了一个探索、实验、协作并利用机器学习技术构建创新的空间。
简而言之,Hugging Face 堪称 AI 领域的 GitHub,是一个开源的机器学习社区与平台。你可以将其想象成一个巨大的 AI 模型商店,里面陈列着琳琅满目的现成 AI 模型,从翻译助手到图像生成器,无所不包!
打开Hugging Face的官网,非常简洁,右侧列举的几个比较热门的模型。
Hugging Face平台上主要包含以下类型的资源:
- 模型 (Models):Hugging Face托管了大量的开源机器学习模型,这些模型适用于各种任务,包括自然语言处理 (NLP)、计算机视觉和音频。这些模型不仅包括预训练的模型,也包括经过微调的模型。用户可以浏览、下载并使用这些模型,并且可以直接在浏览器中使用模型进行推理。
- 数据集 (Datasets):该平台托管了超过 20 万个数据集,涵盖了各种领域和模式。这些数据集可用于各种任务,包括 NLP、计算机视觉和音频。用户可以轻松地查找、下载和上传数据集,并且可以直接在浏览器中浏览数据集的内容。
- Spaces (应用程序演示):Spaces 提供了一种简单的方式来托管机器学习演示应用程序。用户可以使用 Gradio 和 Streamlit 等 Python SDK 构建交互式应用程序,并将其托管在 Spaces 上。
- 用户可以创建自己的 ML 作品集,展示项目并与其他人协作。
- Spaces 还支持用户创建静态 Spaces,使用简单的 HTML/CSS/JavaScript 页面。
尝试一下热度榜一的Kokoro TTS,选择中文,输入一段文字,点击生成按钮,读音非常清晰,推荐大家尝试一下。
audio.wav,需要登录语雀试听
代码体验Flux文生图模型
模型界面也提供了在线体验的代码,以当下非常火的文生图模型Flux为例,进入模型主页,点击“View Code”
需要关注的就是“Copy”按钮和“Manage tokens”,将代码复制下来,另外需要创建一个Token替换掉其中的xxxx才能使用。
from huggingface_hub import InferenceClient
client = InferenceClient("black-forest-labs/FLUX.1-dev", token="hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")# output is a PIL.Image object
image = client.text_to_image("Astronaut riding a horse")
点击“Manage tokens”后需要登录,点击“Create new Token”
点击“Write”,写一个名称,最好使用英文名称,中文我没有尝试,并不保证一定可行。
复制你创建的Token,然后点击“Done”即可。(此Token作为演示使用,发布文章时已删除,请自行创建Token)
为了更直观地使用,我使用Gradio封装了一层,有一个web ui启动界面,代码如下。(程序中的Token作为演示使用,发布文章时已删除,请自行创建Token并替换)
from huggingface_hub import InferenceClient
import gradio as gr# 创建全局的client实例,避免重复创建
client = InferenceClient("black-forest-labs/FLUX.1-dev", token="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"
)def generate_image(prompt, width, height, progress=gr.Progress()):"""使用Flux生成图像的函数"""try:# 检查提示词是否为空if not prompt.strip():raise ValueError("提示词不能为空!")progress(0.3, desc="正在连接服务器...")progress(0.6, desc="正在生成图像...")image = client.text_to_image(prompt, width=width, height=height)progress(1.0, desc="生成完成!")return imageexcept Exception as e:# 返回错误信息raise gr.Error(f"生成图像时出错:{str(e)}")# 创建Gradio界面
demo = gr.Interface(fn=generate_image,inputs=[gr.Textbox(label="输入你的提示词", placeholder="例如:a beautiful girl"),gr.Slider(minimum=256, maximum=1024, value=512, step=64, label="图像宽度"),gr.Slider(minimum=256, maximum=1024, value=512, step=64, label="图像高度"),],outputs=gr.Image(label="生成的图像"),title="Flux AI 文生图",description="使用Flux AI模型生成图像",examples=[["A cute cat", 512, 512],["Beach view at sunset", 768, 512],["Futuristic city streets", 512, 768]]
)if __name__ == "__main__":demo.launch()
界面和测试效果如下,可以更改图像长度、宽度,提示词方面我提供了三组示例。(因为此项目太过火热,能不能生成成功还要看脸)
下期我将写一篇文章讲讲如何本地部署Flux(已经测试成功了,感叹该模型的精细程度,尤其AI绘图经常翻车的手部,目前未整理文章),感兴趣的朋友们点个赞鼓励一下吧。