AI 时代前端进阶:10分钟入门基于 HuggingFace Transformers 库开源模型私有化部署

846 阅读6分钟

大家好,我是祯民。LLM 热潮下,AI 应用对整个互联网生态都有不小的影响,每个互联网从业者都或多或少开始卷或者了解一些 AI 的内容。最近和很多同学聊了聊,发现他们都还没接触过模型私有化部署,应这些同学的需要,本文我们就来用10分钟带大家入门模型私有化部署。

全文不涉及复杂的算法知识,可以轻松食用。通过本文的学习,大家就可以部署使用任意开源模型了。

HuggingFace & Transformers

Hugging Face是一家专注于自然语言处理(NLP)领域的开源公司,以其在NLP技术、工具和社区建设方面的创新而闻名。它提供了一个社区站点,用于开源模型和数据集的共享和交流。开发者可以在社区里使用各种类别的开源模型和数据集,并能站在巨人的肩膀上,利用已有的开源模型进行训练,从而探索新的可能性。

image.jpg

简单来说,HuggingFace 是类似模型领域的 NPM 社区,我们可以基于 HuggingFace 社区部署或者微调开源模型,以扩展应用的产品能力。而 Transformers 则是 HuggingFace 社区提供的最重要的机器学习库,通过 HuggingFace 库,开发者可以快速部署微调 HuggingFace 社区的模型。

私有化部署的模型包含但不限于文本交流、多模态、情绪分析、文本向量化等类别,这些不同类别的模型可以为应用增强更大幅度的想象力。这样即使在没有专业算法同学的介入下,我们也可以做出一些更有意思的东西了~

一个图片识别模型的示例

不同类别的模型使用过程不尽相同,因此Transformers针对不同任务类别的开源模型定制了不同的工作流,也就是pipeline功能,以此来简化模型的使用流程。通过使用pipeline工作流功能,即使是非专业人员也能轻松调用一些特定任务类型的开源模型。

下面我们来一起做一个简单的图片识别模型的示例,使用的模型是Salesforce/blip-image-captioning-large

通常我们会使用 Anaconda 来维护模型部署的 python 空间,避免 python 空间之间的依赖彼此冲突。通过使用Anaconda,可以高效低成本地管理项目中的Python环境,维护多套Python环境。同时,Anaconda自带的Conda是一个强大的包管理系统,允许用户轻松安装、更新、卸载成千上万的数据科学相关软件包,对机器学习场景非常友好。

Anaconda 具体的安装大家可以自行搜寻资料完成,下面我们直接开始图片识别模型的示例,首先我们先使用 Conda 创建一个独立的Python环境。

conda create -n hugging-face-transformers python=3.11
conda activate hugging-face-transformers 

下面我们来安装 Transformers 库。Transformers 的安装需要配套的机器学习框架,这里选择Torch,它是一个拥有大量机器学习算法支持的科学计算框架,在机器学习领域应用广泛,Hugging Face中的许多模型都可以基于Torch运行,执行以下命令可以完成Transformers和Torch的安装。

pip install 'transformers[torch]'

接下来,我们来创建一个 python 脚本,使用 Transformers 库 pipeline 运行指定的图片识别模型,其中 image_path 参数替换成需要识别的图片 URL。

from transformers import pipeline
pipe = pipeline("image-to-text", model="Salesforce/blip-image-captioning-large")
image_path = "https://your_image_url" // 换成你的图片的URL
output = pipe(image_path)
print(output)

这里我用的图片是个咖啡猫的表情包,如下:

image.jpg

值得一提的是,不同的工作流可能会有不同的依赖要求,这个大家可以根据脚本提示补充安装,该场景需要补充一个 python 图像库的依赖 pillow,安装依赖如下:

pip install pillow

安装完成后,执行脚本,稍等片刻后,就能得到图片内容的自然语言描述,结果是“araffe cat looking at itself in a mirror while sitting on a bed”(阿拉菲猫坐在床上看着镜子里的自己)

image.jpg

同样的方式也适用于 HuggingFace 的其他支持 pipline 的模型,这部分在 HuggingFace 的占比很高,支持 pipeline 的模型会在 HuggingFace 中显示。

image.jpg

对于不支持 pipline 的模型,就需要通过加载指定模型分词器的方式调用了,这个我后面再找机会写篇文章和大家分享。

小结

本文我们学习了 HuggingFace Transformers 库的入门知识,了解了它的作用和如何通过支持的 pipeline 调用对应的模型,除此之外,HuggingFace Transformers 库提供了分词器、数据集等模型推理、微调相关的能力。

掌握好 Transformers 库,我们就可以为应用添加各种更有意思的能力,是 AI 时代前端进阶必不可少的能力之一。更多有意思的内容后续我也会找时间写文和大家做更多的交流分享。

这里打个广告,我前年开始写的《生成式 AI 应用开发:基于 OpenAI API 开发》实体书上架了,HuggingFace 是本书的重点章节之一,除此之外还介绍了常见的 AI 应用形态、RAG、PE、微调等知识模块,是 AI 时代进阶的入门书籍~

image.jpg

同时因为 AI 迭代迅速,对应实体书的实效性也不如其他的书籍,所以后续我会以修订电子版、社区文等方式更新更多变化,包含但不限于MCP、蒸馏、智能体 Agent等模块内容,感兴趣的同学可以支持一下~