【tansformers库】LLM基本过程 模型加载

参考doc: https://transformers.run/c2/2021-12-08-transformers-note-1/

transformer库

是个啥:封装一些NLP的东西,快速开箱即用,现在也多应用在大模型。

NLP/ LLM 基本过程

整体过程:

  1. 预处理,将文本转换为模型能够接受的输入数据
  2. 模型推理
  3. 结果转换,将模型结果转换为文字等。

pipeline

Transformers 库将目前的 NLP 任务归纳为几下几类:

  • 文本分类:例如情感分析、句子对关系判断等;
  • 对文本中的词语进行分类:例如词性标注 (POS)、命名实体识别 (NER) 等;
  • 文本生成:例如填充预设的模板 (prompt)、预测文本中被遮掩掉 (masked) 的词语;
  • 从文本中抽取答案:例如根据给定的问题从一段文本中抽取出对应的答案;
  • 根据输入文本生成新的句子:例如文本翻译、自动摘要等。

可以利用pipeline直接丢进去自然语言,然后直接能够获得结果。(正常在没有指定模型的情况下,应该是去huggingface上面下载模型缓存)
pipeline 模型会自动完成以下三个步骤:

  1. 将文本预处理为模型可以理解的格式;
  2. 将预处理好的文本送入模型;
  3. 对模型的预测值进行后处理,输出人类可以理解的格式。

e.g. 使用pipeline完成情感分析

from transformers import pipelineclassifier = pipeline("sentiment-analysis")
result = classifier("I've been waiting for a HuggingFace course my whole life.")
print(result)
results = classifier(["I've been waiting for a HuggingFace course my whole life.", "I hate this so much!"]
)
print(results)
No model was supplied, defaulted to distilbert-base-uncased-finetuned-sst-2-english (https://huggingface.co/distilbert-base-uncased-finetuned-sst-2-english)[{'label': 'POSITIVE', 'score': 0.9598048329353333}]
[{'label': 'POSITIVE', 'score': 0.9598048329353333}, {'label': 'NEGATIVE', 'score': 0.9994558691978455}]

模型与分词器(tokenizer)

啥是模型:
上层理解:NLP之中,本质上需要输入一段自然语言,完成一定的工作,返回一个人类想要的结果。那么模型就是能够完成这个一定的工作的东西。
中层理解:这个一定的工作实际上就是一堆堆的计算。
底层理解:需要进行一堆堆计算,这些模型实际上就是矩阵中的参数。通过这一堆堆已经保存下来的参数,与输入的东西进行计算。

啥是分词器:
在NLP之中,需要输入的是自然语言,但是在底层之中,实际上需要完成矩阵计算。再计算机里面,自然语言一般使用各种二进制编码方式进行保存,这显然不能直接进行矩阵计算,所以需要进行转换,也就是利用分词器将自然语言转换成可以计算的向量。

模型操作

模型加载:
文章提及两种方式:

  1. autoModel加载
  2. model类加载

autoModel加载:

  1. 使用checkpoint进行加载
  2. 这个checkpoint名称应该就是Huggingface上面的名称。
  3. 配置好之后就会去huggingface上面下载模型下来。
from transformers import AutoModelcheckpoint = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModel.from_pretrained(checkpoint)

model类加载:

  1. transformers里面应该是预制一堆现在热门模型的model
  2. 直接用热门模型的model.from_pretrained()就行
  3. 里面参数可以是checkpoint,也可以是本地的
from transformers import BertModelmodel = BertModel.from_pretrained("bert-base-cased")

结论:如果使用checkpoint进行加载一般就使用automodel。如果进行本地加载一般就是用model.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/20327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Metasploit编程语言:深入剖析其神秘面纱

Metasploit编程语言:深入剖析其神秘面纱 在浩瀚的编程世界中,Metasploit编程语言无疑是一个充满神秘色彩的存在。它以其独特的魅力和强大的功能,吸引着众多编程爱好者和专业人士的目光。然而,对于大多数人来说,Metasp…

【WEEK14】 【DAY4】Swagger Part 2【English Version】

2024.5.30 Thursday Following up on 【WEEK14】 【DAY3】Swagger Part 1【English Version】 Contents 16.4. Configure Scanned Interfaces16.4.1. Modify SwaggerConfig.java16.4.1.1. Use the .basePackage() Method to Specify the Package Path for Scanning16.4.1.2. Ot…

MT一面记录

算法:92 反转链表2 后端 社招 流程: 2. 自我介绍 3. 项目有关问题 4. 基础java八股文 5. 算法 反转链表|| 八股文问题记录 Redis为啥快 Redis如果提前锁被释放了怎么办 JMM 线程池的核心参数,自己怎么用,最大线程数什么时候生效…

【案例实战】 基于OpenCV实现鹿茸面积计算

学习《人工智能应用软件开发》,学会所有OpenCV技能就这么简单! 做真正的OpenCV开发者,从入门到入职,一步到位! 有人在我得B站答疑群里发了下面的图: 问:如何计算鹿茸最外圈蜡皮面积占整个鹿茸…

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与TM1638芯片连接的按键的按键值应用

基于STC12C5A60S2系列1T 8051单片机的TM1638键盘数码管模块的数码管显示与TM1638芯片连接的按键的按键值应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍TM1638键盘…

缓冲字符流

BufferedReader/BufferedWriter增加了缓存机制,大大提高了读写文本文件的效率。 字符输入缓冲流 BufferedReader是针对字符输入流的缓冲流对象,提供了更方便的按行读取的方法:readLine();在使用字符流读取文本文件时,我们可以使…

word多级列表与上一级不匹配

问题:三级列表显示1.1.1,而实际情况应该是2.1.1,如何设置? 方法:鼠标在word原文停留在二级列表上,然后进入多级列表中设置三级列表

ChatGPT在工作中的使用案例

知识点提示 开发过程中,遇到某个知识点,忘记或者不清楚怎么使用了,通过ChatGPT快速生成使用提示和案例。代码库“字典” 比如C 11 判断数组所有元素为false 在 C11 中,可以使用标准库中的 all_of 算法来判断数组中的所有元素是…

【Python-Numpy】降低Numpy版本

1.卸载当前Numpy pip uninstall numpy2.查看当前Numpy可用的版本号 pip index versions numpy3.安装特定版本号的Numpy pip install -U numpy自己想要的版本号

根据TVbox修改而来的盒子双播软件-电视盒子内置源版-点播+直播双播盒子软件-供大家学习研究参考

是一款根据TVbox修改而来的盒子双播软件,经过无数次的更改适配了手机、平板、智能电视和TV盒子,并且支持安卓4.x,所以对很多旧的智能电视和盒子支持是相当友好的,也越来越好用,且对软件部分做出修改优化。内置超多优质资源,汇集了众多影视媒体资源,画质也非常的感人,并…

p2p文件传输小工具

使用webRTC的相关技术栈可以很轻松的开发一个p2p文件传输工具,这里主要讲下使用datachannel开发的一个文件传输工具client程序的使用 客户端A:需要可以访问公网,运行client的主机 客户端B:可以访问公网,可以和客户端…

云数融合与大数据技术在日常生活中的创新应用探索

前言 移动云模型服务产品在中国移动旗下主要包括云计算、大数据、人工智能等服务,它依托广泛的算力资源(4N31X)、丰富的网络接入资源和高品质云专网,实现算网端资源一站式开通,构建企业级一体化解决方案。 文章目录 前言云计算的日常应用智…

C++入门3——类与对象2(类的6个默认成员函数)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 构造函数的概念 2.2 构造函数的特性 3. 析构函数 3.1 析构函数的概念 3.2 析构函数的特性 4.拷贝构造函数 4.1 拷贝构造函数的概念 4.2 拷贝构造函数的特性 5.赋值运算符重载函数 5.1运算符重载函数 5.2 赋值运算符重…

面试题:CSS 怎样实现动画?

面试题:CSS 怎样实现动画? (有哪些)CSS 主要通过**过渡(transitions)和关键帧(keyframes)**实现动画。 (过渡是什么)过渡指的是元素**从一种状态&#xff08…

ROS2 自定义话题接口

ROS2 自定义话题接口 ros2 pkg create village_interface在src/village_interface 下构建msg文件夹 src/village_interface/msg 下新建一个Novel.msg Novel.msg 开头第一个字母一定要大写 写入 Novel.msg #原始数据类型 string content# 调用sensor_msgs/Image sensor_msgs/I…

每日一题——Python实现PAT乙级1020 月饼(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 专业点评: 时间复杂度分析: 空间复杂度分析&#…

【一步一步了解Java系列】:子类继承以及代码块的初始化

看到这句话的时候证明:此刻你我都在努力 加油陌生人 个人主页:Gu Gu Study专栏:一步一步了解Java 喜欢的一句话: 常常会回顾努力的自己,所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者:小闭 …

分享一个在linux中运行通义千问的方法

分享一个在linux中和通义千问交互的方法 效果展示: 整体步骤 分享一个在linux中和通义千问交互的方法效果展示:一、在阿里云appflow控制台创建连接流1、通过以下地址,在灵积平台创建个API-KEY,用于通义千问的连接凭证2、点击连接流-创建连接流3、第一步选择webhook4.第二步…

nginx和proxy_protocol协议

目录 1. 引言2. HTTP server的配置3. Stream server的配置3.1 作为proxy_protocol的前端服务器3.2 作为proxy_protocol的后端服务器1. 引言 proxy_protocol 是haproxy开发的一种用于在代理服务器和后端服务器之间传递客户端连接信息的协议。使用 proxy_protocol 的主要优势是能…

Linux上安装和使用Docker容器的指南

🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主 📌 擅长领域:全栈工程师、爬虫、ACM算法,大数据,深度学习 💒 公众号…