试一试 Hugging Face

  |   0 评论   |   0 浏览

大家好,今天我想写一点关于 Hugging Face 的内容。特别是对于那些对 Hugging Face 还不太了解的工程师来说,希望在读完这篇文章后,大家能够很轻松地使用 Hugging Face 来完成一些工作。

简介

那么 Hugging Face 是什么?

简单地说,它有一个开源的 transformer 库,库的名字就叫做 transformers(当然还有一些其他lib),一个集成了许多训练好的模型的 ModelHub 和一个 inference API。

通过上述这些工具,我们可以快速部署 NLP 模型,如 bert,roberta, gpt2 或者 distillbert,并使用它们处理文本来完成一些任务。e.g. 文本分类、信息提取、自动QA、文本总结、文本生成等(而并不需要自己去训练这些模型)。最近 Hugging Face 也开始支持一部分计算机视觉和音频相关的任务,但这里我只介绍他最著名的NLP相关的部分。

使用 Hugging Face 有这些好处:科研成果发布到统一的模型库中,方便重现实验结果。迅速将最新的研究成果应用到工业界。对于 Kagglers 来说,在 NLP 比赛里 transformers 这个库几乎是必须要用的。它能帮助我们快速建立 baseline 模型,并加快我们的模型迭代。

在我写这篇文章的时候,transformers 库在 github 上有 67k stars 和以及 15k forks。如果你们对github开源社区稍有了解,就会知道这是多么牛逼。

接下来我将用一个小例子展示如何使用 Hugging Face,最后我们能获得一个 inference api。可以从任何地方调用这个api,来完成我们接下来的工作。

查看NLP任务

首先我们需要知道 Hugging Face 的 Inference API 支持哪些 NLP 任务,所以我们先打开 HuggingFace 的模型页面:

https://huggingface.co/models

在左侧我们能看到 Inference API 支持的所有任务类型,在这里我们只关注 NLP 的任务。

Hugging Face Inference API 所支持的 NLP 任务列表

可以看到目前一共支持 12 种任务类型,比如翻译,文本分类,对话,文本总结等等。

当然并不是说 Hugging Face 的 ModelHub 里只有这些类型的模型,而是说如果我们想使用 Hugging Face 的 Inference API 来 serve 模型的话,目前只能支持这些任务。实际上 Hugging Face 里 NLP 模型的任务类型要更加丰富。

那么接下来假设我们想完成这么一个 project,比如说想使用一个文本的情感分析模型,通过分析推特用户发的推,来预测股票的走势。那么关于模型的部分我们就可以通过使用 Hugging Face 来完成。

查找模型

现在我们需要找一个能预测 Twitter 文本情感的模型。这非常的简单。

我们只需要在 Hugging Face 的搜索栏里输入 twitter,马上就会出现很多和 twitter 相关的模型。可以看到第一个搜索结果就是和 sentiment 相关的,于是我们点击它,进入这个模型的页面。

搜索模型

页面的左边显示的是 README.md,一般来说发布模型的作者会在这里说明模型应该如何在本地使用。但这次我们不需要在本地直接调用这个模型,所以无视这里就好。

页面的右边有一个文本框,在这里我们可以直接尝试使用这个模型。

比如说我们尝试输入 I love you 以及 I fxxk you,然后点击 compute,观察模型的输出。要注意的是,第一次运行模型需要的时间比较久,因为 Hugging Face 后台需要初始化这个模型。

可以看到 I love you 预测的结果是 Positive 概率接近80%,而 I fxxk you 预测的结果是 Negative 的概率为65%

可见这个模型是可靠的,那么接下来我们尝试从 Hugging Face 的 Inference API 里调用这个模型。

使用 Inference API

使用 Hugging Face 的 inference API,意味着我们可以把模型托管在 Hugging Face 的服务器上,这样我们就能避开 model serving 相关的大部分问题。

尤其是使用 Hugging Face 的 Model Hub 里的模型时,Inference API 是极其方便的。

接下来我们点击 Deploy 按钮,然后点击 Accelerated Inference。如下图

之后我们会看到下面这个界面

首先看左上角,有 Python,Javascript,cURL 三个按钮,分别是三种不同语言下调用 Inference API 示例代码块。在我的截图中展示的是 Python 的示例。

然后再看右上角,这里我们需要一个 Token 才能使用 Inference API。这需要我们注册一个 Hugging Face 的账号,并且生成一个 Token。

当我们生成好 Token 之后,在上图中右上角 Token 处选择我们的 Token(在这里我选择了 My token),然后点击 Show API token。示例代码块里的 token 部分就会被填入我们自己的 token。

接下来只要复制这个代码块就能直接从任何能联网的地方调用 Inference API 并且获得模型的返回了。

最后

虽然 Hugging Face 有这样那样的好处,但不得不说的是,在我使用 Inference API 时发现目前 Hugging Face 的服务器还不太稳定。时不时会返回 503 错误等等。希望他们在接下来能不断改善吧。

转自 https://zhuanlan.zhihu.com/p/545540321


标题:试一试 Hugging Face
作者:michael
地址:https://blog.junxworks.cn/articles/2023/05/17/1684294034824.html