大模型笔记

从零开始学习大模型

大模型笔记

一,模型的部署,微调和流式输出(千问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 转回成 自然语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值