大语言模型学习笔记

基础知识简介

一、大语言模型(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字,用途随便输,添加后复制生成的外部访问,打开该链接,实现交互页面下多轮问答

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值