首页 > 其他分享 >大语言模型学习笔记

大语言模型学习笔记

时间:2024-08-08 20:24:01浏览次数:13  
标签:语言 模型 ids 笔记 token LLM input

基础知识简介

一、大语言模型(LLM)的概念
LLM定义与特点:处理海量文本,多者可具备数百亿参数,理解语言深度,展现涌现能力。

LLM国内外代表:i.国外有GPT系列、LLaMA等 ii.国内有文心一言、通义千问等。

模型大小与性能能关系:与小模型构架相似,但参数量级提升带来解决复杂任务的显著优势。

LLM应用实例:Chat GPT是LLM的对话应用典范,展示出与人类流畅自然的交互能力。

在这里插入图片描述

计算机并不能直接理解字符,例如:“我喜欢你”可以拆解为“我”,“喜欢”,“你”,可以进行排序。所以 大语言模型并不是一个一个字输出,而是一个一个token输出

二、LLM的发展历程
早期语言模型:采用统计学习预测词汇,受限于理解复杂语言规则。
深度学习的引入:Bengio在2003年将深度学习应用于语言模型,增强理解语言的能力。
Transformer架构优势:2018年左右,Transformer模型出现,通过大量文本训练理解语言规则。 大型语言模型时代:随着模型规模扩大,LLM展现出惊人能力,开启新纪元。

三、LLM的特点
在这里插入图片描述

在趋动云部署一个自己的大模型

https://eumgrqwyfu.feishu.cn/docx/LfNpdTGmXo79EuxPtyPckOJ9nYd#XJpbdkRZyovZPhxYOnbcnMvQn6e
在上述链接中看到启动环境,接下来:
打开test.py文件

from transformers import AutoModelForCausalLM, AutoTokenizer

导入transformers库中的 加载模型 和 加载 AutoTokenizer的包

model = AutoModelForCausalLM.from_pretrained(
    "/gemini/pretrain/Qwen2-0.5B-Instruct",        #这一行是大语言模型的路径
    torch_dtype="auto",
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("/gemini/pretrain/Qwen2-0.5B-Instruct")

表示用后面的/gemini/pretrain/Qwen2-0.5B-Instruct"的AutoTokenizer作tokenizer
ps:1个汉字通常会被分为2/2.5个token

prompt = "你是谁?"

messages = [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": prompt},
    {"role": "asistant", "content": "我是助教."}
]

prompt提示词就是输入给大模型的东西,提示身份或问题的核心
role角色:
①system(说明给大模型的前提条件)
②user(我们)
③assistant(助手,代表大语言模型)作用是明确大语言模型的回答规范
深层解释:前提是你(大模型)是一个助手 我问你是谁 大语言模型回我是助手

generated_ids = model.generate(
    model_inputs.input_ids,
    max_new_tokens=512
)

generate里max_new_tokens=XXX表示允许的最大/多token或字

generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]

提取最后生成的token时需要把前面的input截断,否则可能出现前面的message之后随机出现的情况

response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

print(response)

即实现把token转成字
接下来在环境准备文件中运行实现安装 ,在如下界面中点击terminal
在这里插入图片描述
输人python test.py实现在这里插入图片描述

流式输出

作流式输出需要使用工具 streamer,在流式输出文件中多一行代码

streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)

同时,该文件中实现多轮对话需要代码

 thread = Thread(target=model.generate, kwargs=generate_params)
    thread.start()

在对话框中输入exit即可退出对话
流式输出特点:不同在于它是一个字一个字生成的

交互式页面

运行流式输出文件,在该ipynb文件下即可实现对话,但引入streamlit即可美化为交互式界面
在终端进行以下操作

streamlit run one_chat.py

其中 one_chat.py文件中引入import streamlit as st
实现在这里插入图片描述
出现两个IP,在右侧端口中选择添加端口,内部端口输入IP最后4字,用途随便输,添加后复制生成的外部访问,打开该链接,实现交互页面下多轮问答

标签:语言,模型,ids,笔记,token,LLM,input
From: https://blog.csdn.net/2301_80259885/article/details/141034803

相关文章

  • Objective-C学习笔记(Block用法)
    Blocks(块)block以插入字符(^)为标识。可以作为函数参数,返回值,或直接调用返回类型(^block命名)(参数类型1,参数类型2)NSString*(^stringBlock)(int,int)=^NSString*(inta,intb){return[NSStringstringWithFormat:@"%d%d",a,b];};当使用block作为函数的参......
  • 循环神经网络和自然语言处理二-文本情感分类
    一.案例介绍为了练习一下wordembedding,现在有一个经典的数据集IMDB数据集,其中包含了5完条流行电影的评价,训练集25000条,测试集25000条,根据这些数据,通过pytorch完成模型,实现对评论情感进行预测二.思路首先可以把上述问题定义为分类问题,情感评分分为1-10分。十个类别,那么怎样......
  • C语言入门零基础:5、进制数和进制转换
    前提:printf语句和scanf语句是源自与stdio.h这个头文件中的函数,它们的作用分别是输出和输入。应用:    printf("helloworld\n");  //用于输出(打印)hellowolrd这个语句。    inta;    scanf("%d",&a);   //用于向a空间输入一个整形数据......
  • 循环神经网络和自然语言处理一
    目录一.分词1.分词工具2.分词的方法3.N-gram表示方法二.向量化1.one-hot编码2.wordembedding3.wordembeddingAPI4.数据形状改变既然是自然语言,那么就有字,词,句了一.分词1.分词工具tokenization,jieba,清华大学的分词工具THULAC等等2.分词的方法对于中文我们可......
  • 2024年最新免费AI大模型API汇总及国内大模型使用教程(附代码)
    免费大模型API一览大模型免费版本免费限制控制台(api_key等)API文档讯飞星火大模型spark-litetokens:总量无限;QPS:2;(每秒发送的请求数)有效期:不限访问链接访问链接百度千帆大模型平台ERNIE-Speed-8KRPM=300,TPM=300000(RPM是每分钟请求数(RequestsPerMinute),TPM是指每分......
  • 学习 Python 语言,它能干什么?
    学习Python语言,它能干什么?为什么要学习编程语言?随着大数据,人工智能盒区块链技术的不断发展和应用,很多领域的创新需要借助一些前沿技术,而软件创建由需要借助编程语言,编程语言是创新与产品之间的桥桥梁,所以创新与编程语言是相辅相成的,人们借助编程语言完成产品的落地。为什......
  • Colder框架试用笔记
    我于2024.07.29新入职了一家公司,在开始的第一个星期里,试用了公司项目用的Colder框架(看作者叫寒剑飞空)。过程1.建表,代码生成,菜单配置,权限配置(改配置文件,用角色权限管理,代码修改)。2.弄了一些控件:下拉,导出,上传图片,导入,单选,文本框,列表排序。3.弄了一个统计报表。4.整个的浏览了......
  • c语言中输出字符指针相关问题
    原文链接:https://blog.csdn.net/littesss/article/details/71037908c语言中输出字符指针相关问题一、例如定义一个char*p="hello";的字符指针。首先搞清楚在c语言中没有字符串的类型,所以对字符串操作,有两种形式:可以用字符指针(为什么不叫字符串指针,我个人觉得,字符指针针对......
  • C语言实现猜数字小游戏
    前言与概述本文章讲述如何通过C语言开发一款猜数字的小游戏,开发这款小游戏会让你在学习编程道路上获得更多成就感和快乐。程序功能①:文字从两端向中间汇聚的欢迎界面②:输入密码登录游戏③:简约美观的游戏主界面④:深挖猜数字游戏背后运行逻辑⑤:丰富多样的程序功能⑥:无限......
  • Springboot整合Flowable入门-学习笔记
    目录1、定义流程(画图)2、Springboot部署流程3、Springboot删除所有流程4、Springboot根据流程部署ID查询流程定义ID5、Springboot启动(发起)流程6、Springboot查询任务6.1全部任务6.2我的任务(代办任务)7、springboot审批任务1、审批通过2、驳回8、Springboot流程......