全民AI计划:快来尝试你的第一个AI程序

首要,恭喜你!能看到这篇文章,阐明你现已能够开发AI程序了。

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

咳咳……我们研讨的方向不一样。在我这里,小学生就能够搞

一、理由是什么?

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

就拿做面条来说:

  • 你能够从小麦的栽培开端,阅历播种、收割,然后晾晒、磨粉……
  • 你也能够从买袋面粉开端,阅历和面、揉面、拉面……
  • 你乃至能够从买份鲜面条开端,阅历下锅,打鸡蛋,切火腿肠……

全民AI计划:快来尝试你的第一个AI程序

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

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

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

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

看你的情况,你觉得吃饱了,随时能够归队,不必向我打招呼。

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

二、更人性化的学习思路

做人工智能的使用,就像是做菜。结构便是菜系,数据便是菜谱,电脑便是煤气灶。

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

第一天做菜,我不主张我们去关心菜系。

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

先让我做一道菜好不好?

等我乐意考厨师证了,我自然会去研讨他们的差异。

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

三、从抱抱脸开端起步

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

全民AI计划:快来尝试你的第一个AI程序

抱抱脸(hugging face)的网址是 huggingface.co/ 。看上面的图就知道,它很厉害。它在GitHub上的星星现已超过10w+了。并且,许多AI巨子,比方Meta、Google、Microsoft、Intel也都会在它上面,发布一些新的效果,供我们学习和运用。

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

他能够让一个AI小白,不必了解关于构建、训练和部署的常识,就能运用科学家的效果。这些事情,尽管也是谷歌、微软他们想做的。可是,谷歌只能让自己变得简洁,他管不了微软。抱抱脸的呈现,让各家都能接入到它。它成为了一个全球AI的标准化运用渠道。

许多NLP工程师招聘的要求上,也会写着了解huggingface transformer库的运用。这阐明……它有用,你学它,不会亏。

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

四、走进HuggingFace

抱抱脸上有许多的制品模型,这是能够直接下载用的(连注册都不必)。

全民AI计划:快来尝试你的第一个AI程序

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

这都是全球各路的壮士,他们自己上传的。他们上传后,他人就能够运用。他人又站在他们的肩膀上,进行更深的研讨,研讨完了再上传。这便是“开源精力”。

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

全民AI计划:快来尝试你的第一个AI程序

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

下面,我就用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自带的接口文档页面。

全民AI计划:快来尝试你的第一个AI程序

八、再会

我们能碰头,便是一场缘分。下一次未必还会相逢。

因而,我想给你一个完好的小回想

你我素昧平生。我不搞系列,没有星球,每一篇文章都是独立的。你能够从任意节点过来,并随时脱离。我们没有历史包袱。愿你每次都轻松而来,满载而归。

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