1. 简介
注意:该项目需要在GPU环境下执行,如16G V100
随着大型语言模型(LLM)技术日渐成熟,提示工程(Prompt Engineering)变得越来越重要。一些研究机构如微软、OpenAI等都发布了 LLM 提示工程指南。最近,Llama 系列开源模型的提出者 Meta 也针对 Llama 2 发布了一份交互式提示工程指南,涵盖了 Llama 2 的快速工程和最佳实践。不过都是英文的,受此启发,我针对中文开源模型的调用写了一个Prompt指南。使用的模式是ChatGLM3-6B。
本来还想写一个商业模型的指南,后来发现这些优化内容很多都已经内置在商业模型中了,例如让文心一言做数学题:
所以就只写了开源模型的指南。
Meta的关于LLama 2的Prompt的优化建议:https://github.com/facebookresearch/llama-recipes/blob/main/examples/Prompt_Engineering_with_Llama_2.ipynb
2. 环境安装
安装官方文档首先需要仓库:
git clone https://github.com/THUDM/ChatGLM3 cd ChatGLM3
然后使用 pip 安装依赖:
pip install -r requirements.txt
考虑到方便大家使用,本项目已经下载ChatGLM仓库,直接解压即可。
In [1]
# 解压ChatGLMS3项目, 也可以直接从Github上clone
!unzip /home/aistudio/ChatGLM3-main.zip
!mv ChatGLM3-main ChatGLM3
Archive: /home/aistudio/ChatGLM3-main.zip 40c6dc126e50311c86cc33d4adf0102a2cad72d3 creating: ChatGLM3-main/ inflating: ChatGLM3-main/DEPLOYMENT.md inflating: ChatGLM3-main/MODEL_LICENSE inflating: ChatGLM3-main/PROMPT.md inflating: ChatGLM3-main/README.md inflating: ChatGLM3-main/cli_demo.py inflating: ChatGLM3-main/requirements.txt creating: ChatGLM3-main/resources/ inflating: ChatGLM3-main/resources/WECHAT.md inflating: ChatGLM3-main/resources/cli-demo.png inflating: ChatGLM3-main/resources/web-demo.gif inflating: ChatGLM3-main/resources/web-demo2.gif inflating: ChatGLM3-main/resources/web-demo2.png inflating: ChatGLM3-main/resources/wechat.jpg creating: ChatGLM3-main/tool_using/ inflating: ChatGLM3-main/tool_using/README.md inflating: ChatGLM3-main/tool_using/cli_demo_tool.py inflating: ChatGLM3-main/utils.py inflating: ChatGLM3-main/web_demo.py inflating: ChatGLM3-main/web_demo2.py
在安装需要的包的时候,因为模块比较多,所以进行持久化安装, 使用持久化路径, 方便下次使用。在使用的时候只需要增加如下代码即可:
import sys
sys.path.append('/home/aistudio/external-libraries')
In [1]
# 添加如下代码, 这样每次环境(kernel)启动的时候
import sys
sys.path.append('/home/aistudio/external-libraries')
In [ ]
# 因为模块比较多,所以进行持久化安装, 使用持久化路径, 方便下次使用
!mkdir /home/aistudio/external-libraries
%cd ChatGLM3
!pip install -r requirements.txt -t /home/aistudio/external-libraries
调用代码的时候,官方给的例子是:
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')
model = model.eval()
在执行的时候自动下载模型文件,因为文件很大,所以本项目已经下载完毕。大家只要解压即可。
3. Prompt演示
首先是获取模型,在本项目中,直接使用本地模型。然后就可以与模型对话了。
In [1]
%cd /home/aistudio/data/data245452
!unzip chatglm3-6b.zip
/home/aistudio/data/data245452
/opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages/IPython/core/magics/osm.py:417: UserWarning: using dhist requires you to install the `pickleshare` library. self.shell.db['dhist'] = compress_dhist(dhist)[-100:]
Archive: chatglm3-6b.zip inflating: configuration_chatglm.py inflating: config.json inflating: README.md inflating: MODEL_LICENSE.txt inflating: gitattributes.txt inflating: tokenization_chatglm.py inflating: tokenizer_config.json inflating: tokenizer.model inflating: quantization.py inflating: pytorch_model.bin.index.json inflating: modeling_chatglm.py
In [2]
# 添加如下代码, 这样每次环境(kernel)启动的时候
import sys
sys.path.append('/home/aistudio/external-libraries')
# 获取model
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("/home/aistudio/data/data245452", trust_remote_code=True)
model = AutoModel.from_pretrained("/home/aistudio/data/data245452", trust_remote_code=True, device='cuda')
model = model.eval()
/opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html from .autonotebook import tqdm as notebook_tqdm Loading checkpoint shards: 100%|██████████| 7/7 [00:47<00:00, 6.79s/it