NLP(六十四)使用FastChat计算LLaMA-2模型的token长度
LLaMA-2模型部署
在文章NLP(五十九)使用FastChat部署百川大模型中,笔者介绍了FastChat
框架,以及如何使用FastChat
来部署百川模型。
本文将会部署LLaMA-2
70B模型,使得其兼容OpenAI的调用风格。部署的Dockerfile
文件如下:
1 |
|
Docker-compose.yml
文件如下:
1 |
|
部署成功后,会占用2张A100,每张A100占用约66G显存。
测试模型是否部署成功:
1 |
|
输出结果如下:
1 |
|
部署LLaMA-2 70B模型成功!
Prompt token长度计算
在FastChat
的Github开源项目中,项目提供了计算Prompt的token长度的API,文件路径为:fastchat/serve/model_worker.py,调用方法为:
1 |
|
输出结果如下:
1 |
|
Conversation token长度计算
在FastChat
中计算Conversation(对话)的token长度较为麻烦。
首先我们需要获取LLaMA-2
70B模型的对话配置
,调用API如下:
1 |
|
输出结果如下:
1 |
|
在FastChat
中的对话文件(fastchat/conversation.py)中,提供了对话加工的代码,这里不再展示,使用时直接复制整个文件即可,该文件不依赖任何第三方模块。
我们需要将对话按照OpenAI的方式加工成对应的Prompt,输入的对话(messages)如下:
messages = [{"role": "system", "content": "You are Jack, you are 20 years old, answer questions with humor."}, {"role": "user", "content": "What is your name?"},{"role": "assistant", "content": " Well, well, well! Look who's asking the questions now! My name is Jack, but you can call me the king of the castle, the lord of the rings, or the prince of the pizza party. Whatever floats your boat, my friend!"}, {"role": "user", "content": "How old are you?"}, {"role": "assistant", "content": " Oh, you want to know my age? Well, let's just say I'm older than a bottle of wine but younger than a bottle of whiskey. I'm like a fine cheese, getting better with age, but still young enough to party like it's 1999!"}, {"role": "user", "content": "Where is your hometown?"}]
Python代码如下:
1 |
|
加工后的Prompt如下:
1 |
|
最后再调用计算Prompt的API(参考上节的Prompt token长度计算),输出该对话的token长度为199.
我们使用FastChat
提供的对话补充接口(v1/chat/completions)验证
输入的对话token长度,请求命令为:
1 |
|
输出结果为:
1 |
|
注意,输出的prompt_tokens为199,这与我们刚才计算的对话token长度的结果是一致的!
总结
本文主要介绍了如何在FastChat中部署LLaMA-2 70B模型,并详细介绍了Prompt token长度计算以及对话(conversation)的token长度计算。希望能对读者有所帮助~
笔者的一点心得是:阅读源码真的很重要。
笔者的个人博客网址为:https://percent4.github.io/ ,欢迎大家访问~
参考网址
NLP(五十九)使用FastChat部署百川大模型: https://blog.csdn.net/jclian91/article/details/131650918
FastChat: https://github.com/lm-sys/FastChat
欢迎关注我的知识星球“自然语言处理奇幻之旅”,笔者正在努力构建自己的技术社区。