重庆网站建设百度推广,网站优化描述设置,厦门百度推广公司,西安短视频培训班哪个好前言
一文了解NLP#xff0c;并搭建一个简单的Transformers模型#xff08;含环境配置#xff09;
一、HuggingFace 与NLP
自从ChatGPT3 问世以来的普及性使用#xff0c;大家或许才真正觉察AI离我们已经越来越近了#xff0c;自那之后大家也渐渐的开始接触stable diff…前言
一文了解NLP并搭建一个简单的Transformers模型含环境配置
一、HuggingFace 与NLP
自从ChatGPT3 问世以来的普及性使用大家或许才真正觉察AI离我们已经越来越近了自那之后大家也渐渐的开始接触stable diffusion、midjourney和vits …等等各类AI大模型它覆盖了图、音、文、像各个网络领域。曾经出现在科幻片里的镜头正在逐步成为现实。公司的前线开发人员、学校上学的学生、各行各业的人们都在这个时代尝试着学习AI各类网站关于AI的知识也比比皆是毋庸置疑大家都在积极的拥抱其带给我们的变化。那身为一线开发人员的我们更要去了解它使用它才能紧跟时代步伐。但要学好一门新事物我们就要知其然然后才能知其所以然。
不同类型的人工智能采用了各种不同的技术和方法目前比较火的GPT则涉及了自然语言处理NLP顾名思义是用来处理自然语言的模型自然语言人类日常所说的话它可以用来摘要、翻译、情感分析…但我们也要明确NLP它是一种”能力“而不是一种”方案“。这两者听起来相似但其实是完全不同的。“能力”注重的是过程“方案”注重的是结果。既然它是一种能力也就是说我们要训练它以达到能够进行类比分析的境界而不是只为了解决当下的某一问题。举个例子或许你就会明白了就像我们上学时学数学我们学习了一个公式通过发散思维我们就可以利用它解决N问题但如果只是单纯背会了一道题的解题步骤下次题稍微一变形就不会做了。这就是“能力——过程”与“方案——结果”的差别读到这里我相信你对于抽象的NLP已经有了一个初步的认知。
继续拿人类举例就像是学生时代的我们可能会背公式的人有 10 个但是真正能发散思维解决各类问题的人也就 5 个。NLP也一样有能力强差之分的。那在NLP的世界里什么决定了它的能力水平呢想一想我们会通过背大量的公式去提分吗不会大家一般都会在学习一个公式之后通过做大量能用此公式解题的类型题培养出相应的思维。诶想到这那就简单了NLP也是同样的道理决定NLP能力的关键点其实就是数据量和参数量。所以对于开发人员来说独自训练一个优秀的模型简直是难于上青天因为我们根本没有那么大量的数据集去供我们使用那么我们自己能玩点什么呢我们可以去用其他人训练好的模型在应用层下手这就好比我们可以不用将一个婴儿培养到高中然后去让他做高中的题而是我们直接去找一个高中生去做高中题一切都显得简单起来了不是吗
那我们应该怎么开始入手 NLP呢有了上文的铺垫其实可以推理出对于开发者个体来说想要快速取得一定成就可以不去学习海量的传统算法当然万事无绝对功底深厚大佬除外 业界已经有很多开箱即用的模型像我这种小白…只要在这个基础上继续发挥站在巨人的肩膀上才是理智的。
铺垫到此结束有了上文相信你一定已经很清楚的知道NLP是什么并且也知道如何去学它了接下来就请出我们的主角——HuggingFace。它就是我刚才所说的“巨人”——一个开箱即用的包含了NLP所有核心模型的仓库我们甚至只要使用一行代码就可以调用一个很强的模型喂一点我们的数据就可以达到我们的想要的效果怎么样听到这我相信你一定很动心了即便你的数学知识不好传统算法里有很多数学概念即使你的代码水平也一般般甚至说是非 T族对于代码只是略知一二也是可以上手训练出一个属于你的模型
二、来聊聊HuggingFace的诞生历程
大家绝对不会想到成立于 2016 年的HuggingFace最初的开发者仅仅只有 30 位左右而且还是兼职。那他们是怎么做到短短几年就创建了一个市值几十亿的公司呢早几年的时候对于NLP领域的研究还没有什么统一的标准或者规范。拿两个大厂举例比如说Chrome在当时使用的是TensorFlow而 Facebook 使用的是PyTorch还有一些中小厂也在使用各式各样的框架大家若想要使用TensorFlow就必须去应用Chrome的源码使用PyTorch就必须去应用Facebook的源码复杂得很。也正是这种各自为政的现象导致了整体行业发展受阻。于是HuggingFace就提出来统一的思想将个大中小厂的框架封装起来无论你想用哪一个直接调用HuggingFace提供的接口就可以获取到想要的资源了。后来随着AI发展的火热HuggingFace作为其元老级别的开源社区也就理所当然的成为了业界唯一。
三、HuggingFace初体验
3.1环境安装 从上图中可以看到几大仓库的语言都是 Python所以我们要配置Python 环境这里直接用了 Miniconda它比起Anaconda更轻便。以 mac 为例
Miniconda安装
安装地址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
大家可以根据自己的芯片以及习惯的安装方式下载对应包(X86_64:Inter芯片;arm64Apple 芯片 ;.pkg:可视化安装.sh:命令行安装)
本文用命令行继续进行安装安装的版本是 py39。 安装好后打开终端进入.sh文件所在的路径下 输入一下命令 代码如下示例 // 其中sh后填sh文件名-b表示将环境变量自动写入到/.bash文件-p后面填安装路径
sh Miniconda3-py39_22.11.1-1-MacOSX-x86_64.sh -b -p ~/WorkSpace/SoftWare/miniconda将miniconda路径写入shell配置。
source ~/WorkSpace/SoftWare/miniconda/bin/activate此时若配置成功则在命令行中看到有一个base前缀如下图 初始化shell类型可以在终端键入echo $SHELL 进行查看
conda init zsh
//这里根据 shell 类型自行选择
conda init bash最后重新打开终端就安装完毕了。(这里一定要重新启动一下否则可能不好使然后输入 conda 若出现一下界面则安装成功 conda环境创建 命令行输入指定版本为py 3.9版本过高可能会出错
conda create -n transformers python3.9执行命令后会询问是否安装一些包键入y 即可。
// 查看有哪些虚拟环境
conda env list可以看到刚才创建的 transforms 已经存在于环境列表中了。至此虚拟环境就已经创建成功了。然后进入该环境下
conda activate transformers可以看到此时已经成功进入新建的transformers 环境。
为了提速日后安装包的速度可以将 pypi 配置清华的国内源网址如下 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
这里我直接设置为默认了。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplepytorch环境安装
PyTorch是一个基于Torch的Python开源机器学习库用于自然语言处理等应用程序。官网为 https://pytorch.org/ 这里我们最好选择 pip 安装30xx 40xx显卡注意要安装cu11的版本
按照机器配置选择自己需要安装
pip install torch1.13.1 torchvision0.14.1 torchaudio0.13.1依赖包安装 直接在终端中 pip install这里安装了一些NLP训练中常用的可以自己取舍下文的 demo 只用到了transformers pip install transformers evaluate peft datasets accelerate gradio optimum sentencepiece看到 sucessfully就证明安装成功了 ps:一点插曲这里或许是因为我的电脑问题在输入安装transformers命令后一直报错如下图
我尝试着按照提示 update 了 pip仍是没有什么用…后来通过安装rus t解决了此问题
curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh其他要用到的包安装
pip install jupyterlab scikit-learn pandas matplotlib tensorboard nltk rouge安装成功也是会提示 successfuly。 配置 hosts文件 为了后期下载模型方便在这里做一下 host 映射
终端输入
sudo vi /etc/hosts添加一下代码
185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com
2606:50c0:8000::154 raw.githubusercontent.com
2606:50c0:8001::154 raw.githubusercontent.com
2606:50c0:8002::154 raw.githubusercontent.com
2606:50c0:8003::154 raw.githubusercontent.com然后 wq 保存一下即可。
3.2Transformers初体验(图生文)
经过上述的一系列操作我们已经可以成功在自己的电脑上简单的训练模型了这里的编译器使用的是 Vscode在应用商店下载Python 、Remote-SSH和Jupyter 三个插件即可
登录HuggingFace官方网址 https://huggingface.co/models 下可以查看到目前所有的 transformers 的模型如下图所示选择一个图像转文本的功能可以看到共有 223 个模型供我们使用。 假设我们选择Salesforce/blip-image-captioning-base 然后打开 Vscode 传入一张图片输入以下代码
from transformers import pipelinedef imgToText(url):image_to_text pipeline(image-to-text, modelSalesforce/blip-image-captioning-base)text image_to_text(url)[0][generated_text]print(text)return textimgToText(./test.jpeg)test.jpeg:
运行代码在终端输出的结果
ps调试过程中产生的坑点运行 py 文件的时候一定要选择安装了对应 pip 包的环境因为我电脑上有好几种 py 版本而我的 pip 包安装在了 conda transformers 虚拟环境中vscode 默认运行的时候加载了我的全局 py就会导致找不到想要 import 的包这里推荐一个vscode插件。 可以清楚的看到自己的 py 版本输入 pip list 就可以查看当前 py 环境下的 pip 有哪些然后 ctrlp 打开设置搜索设置python 解释器为有所需要的 pip 包的 py 环境即可解决安装成功但是找不到包的情况啦