LLMs-入门三:基于JupyterLab部署Llama 2
上篇地址: https://blog.csdn.net/Josong/article/details/133637382
说明
使用JupyterLab的前提是需要安装Anaconda3。可参考如下文档
- https://blog.csdn.net/cc10182436/article/details/131592560
注:在jupyterLab上通过pip install安装工具时,如果报权限不够,可以在末尾加上“–user”,如下图所示
注:上面安装的是Jupyter 在其环境中添加了基于 LLM 的聊天机器人
1、配置环境变量
“我的电脑”→【右键】→选择“属性”进入到设置页面→选择“关于”,在该页面选择“高级系统设置”→进入到“系统属性”页面→选择【高级】页签→选择【环境变量】→在“系统变量”中配置Anaconda3,如下图所示
注:在新版的Anaconda3安装时并不会自动添加环境变量
2、启动JupyterLab
“开始菜单”→搜索“cmd” →选择【以管理员身份运行】→进入到命令窗口页面,在该页面输入如下命令并回车
jupyter lab
回车后当显示如下信息表示已经成功启动
3、进入命令窗口页面
启动完成后,会弹出如下页面
在该页面上可以选择不同的应用程序:
- Jupyter Notebook
- Jupyter Console
- Other
注:本文档使用“Jupyter Notebook”,也可以直接点击桌面上已经安装好的进行使用
4、基于JupyterLab部署Llama 2
1)使用 huggingface_hub Python库
在jupyter notebook上运行代码,可以使用如下两行代码进行登录。
from huggingface_hub import notebook_login
notebook_login()
点击https://huggingface.co/settings/tokens 获取tokens地址获取tokens。将tonkens填写到文本框中点击【Login】完成登录
2)安装transformers和sentencepiece套件
transformers库是基于pytorch或tensorflow深度学习库的(现在也支持JAX),因此需要安装这两个软件包之一。下面的命令同时安装sentencepiece分词器,如果没有安装pytroch,也会自动安装对应的pytorch版本。
pip install transformers sentencepiece
3)验证torch是否安装
import torch
4)基于Transformers库载入如下模型
模型解释:
- AutoModelForCausalLM:用于加载模型(初始化模型)
- AutoTokenizer:自动分词器
- TextStreamer:处理文本的生成过程
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer
model_path = "daryl149/llama-2-7b-chat-hf"
model = AutoModelForCausalLM.from_pretrained(model_path).cuda()
下载该模型需要一些时间,如下图所示
说明:如果在下载模型过程中无法正常完成下载,我们可以在HuggingFace上手动将相关内容下载下来,并且复制到本机执行过程中生成的默认的目录中
- HuggingFace上下载的内容:
- 本机执行过程中生成的默认目录:
复制完成后,重新执行Transformers库载入模型命令
这样就会自动的从本地缓存文件中读取。
注:当我们重新执行时,要确保自己本机的内存要大于16GB,最好是32GB,否则会报没有足够的内存的错误(基于无GPU,只有CPU的场景)
5)加载分词器
tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast = False)
6)文本处理
- “skip_prompt = True”文本处理过程中遇到提示词将跳过提示词
- “skip_special_tokens = True”文本片过程中,在开头或结尾遇到特殊标记时,将自动去调这些特殊标记
streamer = TextStreamer(tokenizer, skip_prompt = True, skip_special_tokens = True)
7)向llama提问题
prompt = "How to make money on the internet?"
generated_ids = model.generate(tokenizer(prompty, return_tensors = 'pt').input_ids.cuda(), max_new_tokens = 1000, streamer = streamer)
提问后的回复如下
- max_new_tokens:我们可以通过调整该数的大小,修改输出结果的文字量
以上就是基于Colab部署开源模型Llama 2的全过程
下一篇提前预告:LLMs-入门四:基于LLaMA-Efficient-Tuning对LLMs做微调