当前位置: 首页 > article >正文

大模型笔记

从零开始学习大模型

大模型笔记

一,模型的部署,微调和流式输出(千问14B)

第一部分,大模型的一些部署和微调相关的知识,以及微调的实战,在这个实际企业应用过程中,如何通过微调,去解决企业所面临的一些问题。部署和微调都是基于开源模型,千问14B去做的。
第二部分,会讲大模型的一些落地应用,主要是包括 prompt engine,然后包括RAG,包括Agent;RAG和Agent的话,其实是大模型目前最前沿的两个创业赛道,RAG会讲LangChan 搭建知识库,以及RAG的一些优化,通过一些优化策略,使RAG的回答能够更好,那么Agent的话,会讲一下基于Agent做的一些简单的demo,以及Agent的升级。大模型的落地应用,主要是调用厂商的一些API服务,这里厂商主要是 GLM
适用人群:
1)大模型领域的创业者,可以快速了解大模型别人是怎么玩的,通过大模型去实现自己业务场景的一些方式。
2)大模型的产品经理,要了解掌握大模型的基础原理,和基础玩法,才能够去给这个算法,给开发提需求。
3)大模型的学生或者小白用户是一个入门的教程。
4)大模型的一些开发人员
1.1,千问14B的开源模型部署
第一节,千问14B的一个开源模型部署,千问14B已经在 huggingface上开源了自己的模型文件,model12345678就是它的模型文件。
# AutoDUL 官网:https://www.autodUl.com/home
一,无卡开机,点击JupyterLab进入
二,克隆模型仓库到数据盘
1,进入到数据盘(autodl-tmp文件夹)下。新建一个终端

新建虚拟环境

conda create -n tf python=3.8           # 构建一个虚拟环境,名为:tf
conda init bash && source /root/.bashrc # 更新bashrc中的环境变量
conda activate tf                       # 切换到创建的虚拟环境:tf

先设置学术加速 (翻墙)

学术资源加速
以下为可以加速访问的学术资源地址:

    github.com
    githubusercontent.com
    githubassets.com
    huggingface.co

编辑 /etc/network_turbo
vim /etc/network_turbo
内容格式参考如下: 

    export no_proxy=localhost,127.0.0.1
    export http_proxy=http://127.0.0.1:12333 && export https_proxy=http://127.0.0.1:12333
    #export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
    #export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
    echo 设置成功

使用方法¶

设置学术加速,不再区分不同地区

source /etc/network_turbo

取消学术加速,如果不再需要建议关闭学术加速,因为该加速可能对正常网络造成一定影响

unset http_proxy && unset https_proxy

速度对比

注意:每新开一个终端,都需要设置一下学术加速才可以

source /etc/network_turbo
安装 transformers 和 accelerate
pip install -U transformers==4.38.1 accelerate==0.27.2

2,安装 git-lfs,使用下面两个命令进行安装

curl -s -O https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash Detected operating system as ubuntu/focal
sudo apt-get install git-lfs

如果报错,就需要手动下载安装 git-lfs,手动下载 见这个教程

https://blog.csdn.net/anlian523/article/details/100520039
3,克隆仓库到本地
git clone https://huggingface.co/Qwen/Qwen1.5-14B-Chat

这个仓库里,有8个模型文件,名称格式为:model-0000N-of-00008.safetensors,另外还有9个工程文件。正常来说,执行上面的git clone 命令,等待30秒,发现9个工程文件下载卡顿。这个时候,就需要我们手动下载这8个模型文件

# 9个工程文件
config.json
generation_config.json
LICENSE
merges.txt
model.safetensors.index.json
README.md
tokenizer_config.json
tokenizer.json
vocab.json
# 8个模型文件
model-00001-of-00008.safetensors
model-00002-of-00008.safetensors
model-00003-of-00008.safetensors
model-00004-of-00008.safetensors
model-00005-of-00008.safetensors
model-00006-of-00008.safetensors
model-00007-of-00008.safetensors
model-00008-of-00008.safetensors

4,Ctrl+C 停止上一步的克隆,手动下载模型文件

# 先进入到 Qwen1.5-14B-Chat 目录:
cd Qwen1.5-14B-Chat

# 
source /etc/network_turbo

# 下载模型 
# 通过 huggingface 复制每个文件的下载链接,然后使用 wget下载:
wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00001-of-00008.safetensors

wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00002-of-00008.safetensors

wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00003-of-00008.safetensors

wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00004-of-00008.safetensors

wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00005-of-00008.safetensors

wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00006-of-00008.safetensors

wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00007-of-00008.safetensors

wget https://huggingface.co/Qwen/Qwen1.5-14B-Chat/resolve/main/model-00008-of-00008.safetensors
三,调用模型
1,准备
退出并关机
有卡开机,点击 JupyterLab 进入
进入到数据盘(autodl-tmp) 下,新建一个 NoteBook (随意命名)
可利用下面的命令查看 GPU 型号
!nvidia-smi
设置学术加速
!source /etc/network_turbo
2,引入必要的包,并设置 device
from transformers import AutoModelForCausaLLM,AutoTokenizer

import accelerate

# 在支持 CUDA 的 GPU 上执行所有计算

device = "cuda"  # the device to load the model onto
3,加载模型
# 加载大模型的模型
model = AutoModelCausaLLM,from_pretrained("Qwen1.5-14B-Chat",torch_dtype="autp",device_map="auto" # 设置为 auto,就可以同时使用多张卡;设置为0,1,2等,就可以指定使用特定卡)

# 加载 tokenizer 模型
tokenizer = AutoTokenizer.from_pretrained("Qwen1.5-14B-Chat")
4,设置 Prompt,为使用 tokenizer 模型,把自然语言 prompt 转为 token
# prompt和system prompt的设定
prompt = "用三句话,简单介绍一下上海"
messages = [
	{"role": "system","content": "你是一个有用的机器人"},
	{"role": "user","content": prompt}
]

# 设置转 token 参数
text = tokenizer.apply_chat_template(
	messages,
	tokenizer=False,
	add_generation_prompt=True
)

# 调用 tokenizer 模型,把 自然语言 prompt 转为 大模型可以理解的 token 
model_inputs = tokenizer([text],return_tensors="pt").to(device)

5,把 token 输给大模型,然后由大模型输出预测的 token

# 把 token 输入给大模型,并让大模型预测后面的token
generated_ids = model.generate(
	model_inputs.input_ids,
	max_new_tokens=512
)

# 我取模型输出部分的 token
generated_ids = [
	output_ids[len(input_ids):] for input_ids,output_ids in zip(model_inputs.input_ids,generated_ids)
]

print(generated_ids)
6,使用 tokenizer 模型。把大模型输出的 token,转化为自然语言
response = tokenizer.batch_decode(generated_ids,skip_special_tokens=True)[0]
print(response)

以上主要是部署了通义千问的开源模型 Qwen1.5-14B这个模型,然后了解了大模型的一个预测机制。先把自然语言转成 token,然后用输入的 token 去预测输出的 token 应该是啥,然后再把输出的 token 转回成 自然语言。


http://www.kler.cn/news/330952.html

相关文章:

  • 深度学习-19-深入理解并训练自己的Tokenizer分词器
  • Linux --入门学习笔记
  • Docker Compose 部署大模型GPU集群:高效分配与管理算力资源
  • redis从入门到精通
  • OpenCV threhold()函数
  • 鸿蒙ArkUI实战开发-主打自研语言及框架
  • 部分监督多器官医学图像分割中的标记与未标记分布对齐|文献速递--基于多模态-半监督深度学习的病理学诊断与病灶分割
  • scrapy爬取汽车、车评数据【上】
  • SpringBoot日常:链路追踪skyworking的接入
  • PostgreSQL的字段存储类型了解
  • 第五周做题总结_数据结构_队列与应用
  • 初识算法 · 双指针(3)
  • 【web安全】——文件包含漏洞
  • 【Text2SQL】当前在BIRD基准测试集上取得SOTA的论文
  • Rust SQLite 跨平台使用
  • YOLO11改进 | 检测头 | 融合渐进特征金字塔的检测头【AFPN4】
  • 【web安全】——文件上传漏洞
  • 大数据与人工智能:基础与应用的多维思考
  • 【Threejs进阶教程-着色器篇】8. Shadertoy如何使用到Threejs-基础版
  • 超详细Java泛型解析,由浅入深带你认识和使用泛型