如何利用抱抱脸(HuggingFace)进行人工智能模型训练

释放双眼,带上耳机,听听看~!
本教程将介绍如何使用抱抱脸(HuggingFace)进行人工智能模型训练,通过Python语言编写程序来实现。同时,需要确保安装了transformers库,并在动手之前处于python环境。

首先,恭喜你!能看到这篇文章,说明你已经可以开发AI程序了。

“啊?我吗?我……我会了吗?可是人工智能真的好难,听说得博士生才能搞!”

咳咳……我们研究的方向不一样。在我这里,小学生就可以搞

一、理由是什么?

一项事物,它会有好多个层级。

就拿做面条来说:

  • 你可以从小麦的种植开始,经历播种、收割,然后晾晒、磨粉……
  • 你也可以从买袋面粉开始,经历和面、揉面、拉面……
  • 你甚至可以从买份鲜面条开始,经历下锅,打鸡蛋,切火腿肠……

如何利用抱抱脸(HuggingFace)进行人工智能模型训练

不管什么样的背景,想做面条都不是件难事(你得有锅)。

你顶多说,我不如你做得高级,但你不能说我不配做面条。

博士们从小麦的DNA开始研究,我则从菜市场买鲜面条开始操作。等学会之后,你虽然成不了大厨,但可以不受限于外卖,随做随吃,搞不好还可以开个小店

现在,我将带领大家,一步一步,一层一层,从菜市场追溯到农田去。

看你的情况,你觉得吃饱了,随时可以离队,不用向我打招呼。

废话不多说,下面开始正文。

二、更人性化的学习思路

做人工智能的应用,就像是做菜。框架就是菜系,数据就是菜谱,电脑就是煤气灶。

人工智能分为很多菜系,比如Jax,PyTorch以及TensorFlow等等。

第一天做菜,我不建议大家去关心菜系。

我是填鸭教育的产物,因此痛恨说教式的教程。比方说一开课,你这边连锅把儿还没摸到,他那边先告诉你“同学,我们首先来背诵八大菜系,鲁菜、川菜、粤菜、苏菜……”。

先让我做一道菜好不好?

等我愿意考厨师证了,我自然会去研究他们的区别。

所以啊,在我这儿,我们先炒菜。

三、从抱抱脸开始起步

“抱抱脸”这个词很萌,不知道谁给翻译的,反正国内都这么叫。

如何利用抱抱脸(HuggingFace)进行人工智能模型训练

抱抱脸(hugging face)的网址是 huggingface.co/ 。看上面的图就知道,它很厉害。它在GitHub上的星星已经超过10w+了。而且,很多AI巨头,比如Meta、Google、Microsoft、Intel也都会在它上面,发布一些新的成果,供大家学习和使用。

一开始,它只是发布了一个叫“Transformers”的开源库。但是,后来这个库太好用了。它做了这样一件事情:连接了AI科学家和企业小白

他可以让一个AI小白,不用了解关于构建、训练和部署的知识,就能使用科学家的成果。这些事情,虽然也是谷歌、微软他们想做的。但是,谷歌只能让自己变得简洁,他管不了微软。抱抱脸的出现,让各家都能接入到它。它成为了一个全球AI的标准化使用平台。

很多NLP工程师招聘的要求上,也会写着熟悉huggingface transformer库的使用。这说明……它有用,你学它,不会亏。

说了这么多,我们开始来实际操作一下。

四、走进HuggingFace

抱抱脸上有大量的成品模型,这是可以直接下载用的(连注册都不用)。

如何利用抱抱脸(HuggingFace)进行人工智能模型训练

为什么会这么多?哪里来的?

这都是全球各路的壮士,他们自己上传的。他们上传后,别人就可以使用。别人又站在他们的肩膀上,进行更深的研究,研究完了再上传。这就是“开源精神”。

我翻译并整理了一下,具体类型和数量如下。

如何利用抱抱脸(HuggingFace)进行人工智能模型训练

好了,就说这么多。再多说,我会抽自己的“又开始给人家说教了”。

下面,我就用python语言来编写程序。

在动手之前,确保你处于python环境,并且安装了抱抱脸它们家的transformers库。

安装方法就是在命令执行:pip install transformers

小提示:安装transformers前,你需要先安装 Flax 、 PyTorch 或 TensorFlow 其中之一。

建议安装TensorFlow,命令为 pip install tensorflow

五、挖呀挖:敲一个情绪分析

我们先做一个情绪分析的应用。

所谓情绪分析,是指对一段文字进行好与坏的评判。其实,就是让它能听出来好赖话。

这一点,我们人类是可以轻松做到的。

  • “你真是太棒了,我为你感到骄傲!”这是夸人的,属于正面,英文叫POSITIVE。
  • “太不让人省心了,别让我见到你!”这是骂人的,属于负面,英文叫NEGATIVE。

“你不要以为我不会拒绝你的这种消极行为,这不等同于痴心妄想”

这……我的CPU烧干了。

如果让AI来评判一句话的性质,该如何写代码呢?

下面是代码:

from transformers import pipeline
classifier = pipeline('sentiment-analysis')
classifier('I like you very much!')

没错,就是3行。要不怎么说,它连接了小白!

第1行,从transformers中导入pipelinetransformers就已经很简化了,但是pipeline(流水线)更简化。

第2行,通过pipeline,可以轻松加载模型。比如,此处加载的是sentiment-analysis(情绪分析)这个模型。它会自动从网站去下载需要的所有数据。加载完毕,会把能力赋值给一个叫classifier的变量。

执行这一句,控制台会出现如下的输出:

Downloading lve/main/config.json: 100%|██████████| 629/629
Downloading    pytorch_model.bin: 100%|██████████| 268M/268M 
Downloading okenizer_config.json: 100%|██████████| 48.0/48.0 
Downloading solve/main/vocab.txt: 100%|██████████| 232k/232k

第3行,将一句话传输给classifier,让它判断属于什么情绪。那么,它会打印出结果。

[{'label': 'POSITIVE', 'score': 0.9998810291290283}]

I like you very much!(我非常喜欢你!)这句话,99.98是夸人的。

再来试验几个。

Can you stay away from me?(你能离我远点吗?)98.89%是消极的。
Don’t think I don’t dislike you.(不要以为我不是不讨厌你)93.61%是积极的。

这项能力能做什么?

有很多应用场景。比如,归类商品的好评与差评。或者,通过大量的微信对话,统计你女朋友对你到底持有怎样的态度

自己想去吧,反正技术有了。

六、随堂练:基于文本的问答

再来一个问答的例子。

这类问答,就是先给一段文本作为依据,然后再问问题。

就比如,我先说“ITF男孩,写的文章很有意思,但他这个人很无趣”。然后,我再问你“ITF男孩,他写的文章怎么样?”。其实就类似于阅读理解。

上代码:

from transformers import pipeline
qa = pipeline('question-answering')
qa({
    # 正文:我是一个程序员,我从2022年开始写博客。
    'context': 'I am a programmer and have been writing blogs since 2022.',
    # 问题:我哪年开始写博客?
    'question': 'When do I start writing a blog?'
    })

也是3行。和上面的例子一样。只是加载的模型不同。

它的最终输入如下:

{'score': 0.9318629503250122, 'answer': '2022'}

答案:93.18%的可能是2022年。

这个,挺有意思!能干的也有很多。

比如,你把你的课本录进去,让它成为课本知识小达人,随时问,不用再去翻书查找了。

七、小小的成果,大大的骄傲

上面的代码,是可以本地运行的。也就是说,在你的电脑跑起来之后,拔了网线一样可以用

你可能会很兴奋,去拿来研究或者解决问题,也可能你想分享给其他人使用。因此,那就做成API吧!

我们需要先安装两个库。

pip install fastapi
pip install uvicorn

刚刚安装的是FastAPI,是个Web框架,写接口很方便。它的好处能说上三天三夜。因为我今晚得睡觉,所以不说了。

uvicorn是运行应用程序的服务器,它能让接口一直跑着。

建立一个mian.py文件,全部代码如下:

from fastapi import FastAPI
import uvicorn
from transformers import pipeline

app = FastAPI(title="超级模型开发能力平台")

question_answerer = pipeline('question-answering')
classifier = pipeline('sentiment-analysis')

@app.get("/sentiment", summary='情绪分析', tags=['NLP方向'])
def qa(text: str = None):
    result = classifier(text)
    result = result[0]['label'] # 解析结果,只要需要的
    return {"code": 200, "result": result}

@app.get("/qa", summary='文本问答', tags=['NLP方向'])
def qa(text: str = None, q_text: str = None):
    result = question_answerer({'question': q_text, 'context': text})
    result = result['answer'] # 解析结果,只要需要的
    return {"code": 200, "result": result}

if __name__ == '__main__':
    uvicorn.run("main:app", host='0.0.0.0', port=8000)

上面的代码,作用就是把人工智能的例子,封装了接口。此时,可以访问 http://127.0.0.1:8000/docs ,可以进入FastAPI自带的接口文档页面。

如何利用抱抱脸(HuggingFace)进行人工智能模型训练

八、再见

我们能见面,就是一场缘分。下一次未必还会相逢。

因此,我想给你一个完整的小回忆

你我萍水相逢。我不搞系列,没有星球,每一篇文章都是独立的。你可以从任意节点过来,并随时离开。咱们没有历史包袱。愿你每次都轻松而来,满载而归。

我是ITF男孩,开始进行全民AI的普及计划。

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

申请OpenAI API Key及部署私人ChatGPT教程

2023-11-21 20:09:14

AI教程

呼叫中心搭建方案及优缺点分析

2023-11-21 20:12:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索