GPTQ量化vicuna-13b模型减低显存同时提升推理速度3.25倍

vicuna模型简介

基于 llama-13b 模型, 采集shareGPT提供7万个chatgpt产生的会话数据进行fine-tuning,现在可以达到93%的 chatgpt-3.5 的chat效果

与其他模型的横向对比

最近更新: 2023-05-08 16:55:45 PDT

Rank Model Elo Rating Description
1 :1st_place_medal: gpt-4 1274 ChatGPT-4 by OpenAI
2 :2nd_place_medal: claude-v1 1224 Claude by Anthropic
3 :3rd_place_medal: gpt-3.5-turbo 1155 ChatGPT-3.5 by OpenAI
4 vicuna-13b 1083 a chat assistant fine-tuned from LLaMA on user-shared conversations by LMSYS
5 koala-13b 1022 a dialogue model for academic research by BAIR
6 RWKV-4-Raven-14B 989 an RNN with transformer-level LLM performance
7 oasst-pythia-12b 928 an Open Assistant for everyone by LAION
8 chatglm-6b 918 an open bilingual dialogue language model by Tsinghua University
9 stablelm-tuned-alpha-7b 906 Stability AI language models
10 alpaca-13b 904 a model fine-tuned from LLaMA on instruction-following demonstrations by Stanford
11 fastchat-t5-3b 902 a chat assistant fine-tuned from FLAN-T5 by LMSYS
12 dolly-v2-12b 863 an instruction-tuned open large language model by Databricks
13 llama-13b 826 open and efficient foundation language models by Meta

简单介绍GPTQ量化,达到的效果

原版的vicuna(FastChat) 不支持GPTQ技术,我们需要做点修改使他支持GPTQ。 使用QPTQ量化版本的模型,单实例,显存最低要求28G → 减低到10G,推理速度提升 3.25倍。而精度损失几乎可以忽略不计。

困惑度

  • 1.困惑度越低,表示LLM的预测能力越强。
  • 2.论文: GPTQ量化技术

如何在colab跑起来

:point_right: 点我到 Colab 测试

实际体验一下

user: 你好

assistant: 你好!我是一个人工智能语言模型,可以回答各种问题。你可以问我任何你想知道的问题。

user: 用nodejs写一个服务器代码,输出一个helloword的html页面

assistant: 好的,这是一个简单的 Node.js 服务器代码,可以输出一个 “Hello World” 的 HTML 页面:

const http = require('http');
// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
 // 返回 "Hello World" 的 HTML 文档
 res.statusCode = 200;
 res.setHeader('Content-Type', 'text/html');
 res.end('<h1>Hello World</h1>');
});
// 启动服务器
server.listen(3000);

你可以运行以下命令来启动服务器:

node server.js

然后,你可以在浏览器中输入 http://localhost:3000 来查看服务器输出的 “Hello World” 页面。

user: 换成python实现

assistant: 好的,这是一个简单的 Python 服务器代码,可以输出一个 “Hello World” 的 HTML 页面:

import http.server
import socketserver

class MyHttpd(http.server.SimpleHTTPRequestHandler):
   def end_headers(self):
       self.send_response(200)
       self.send_header('Content-type', 'text/html')
       self.end_headers = self.send_header('Content-length', '13')
       self.wfile.write(b'<h1>Hello World</h1>')
       self.end_sent_output()

httpd = http.server.HTTPServer(('0.0.0.0', 8000), MyHttpd)
socketserver.TCPServer(("", 8000), httpd).serve_forever()

你可以运行以下命令来启动服务器:

python server.py

然后,你可以在浏览器中输入 http://localhost:8000 来查看服务器输出的 “Hello World” 页面。

注意,这只是一个简单的例子,实际上 Python 可以用 Flask 等框架来实现 web 应用程序。