【LLMs系列】90%chatgpt性能的小羊驼Vicuna模型学习与实战

一、前言

UC伯克利学者联手CMU、斯坦福等,再次推出一个全新模型70亿/130亿参数的Vicuna,俗称「小羊驼」(骆马)。小羊驼号称能达到GPT-4的90%性能

  • github 地址: GitHub - lm-sys/FastChat: An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and FastChat-T5.

本篇文章为博主自行学习vicuna推理部署实战教程,并记录相关坑点,话不多说,直接开干!

二、环境搭建

2.1创建conda的python环境

有大坑!!千万不要用低版本的python!!我最开始用的python3.7,各种bug一堆,建议直接上python=3.10版本,测试无毒,放心食用!

conda create -n vicuna python=3.10       # 创建新环境
source activate vicuna                  # 激活环境

2.2安装FastChat

2.2.1pip安装

pip install fschat

这里如果你的python版本是3.7或更低,就只能安装fschat==0.1,这会导致后续步骤包冲突。所以这也是为什么笔者建议大家直接用python3.10版本,别恶心自己了QAQ

另外就是transformsers版本要>=4.28.1,不然又报错,手动感谢奔腾大佬帮忙解决~

2.2.2git仓库安装

git clone https://github.com/lm-sys/FastChat.git
cd FastChat
pip install --upgrade pip  # enable PEP 660 support
pip install -e .

三、 Vinvua Weights生成

注:本项目使用的Vinvua Weights生成方式参考MiniGPT4

参考链接:https://github.com/Vision-CAIR/MiniGPT-4/blob/main/PrepareVicuna.md

整个流程概括一下就是:

  1. 下载vicuna权重
  2. 下载原始LLAMA 7B/13B权重
  3. 调用fastchat工具利用vicuna和LLAMA的权重来生成本项目真正的需要的working权重

这里要注意你的内存够不够,我下载的是LLAMA-7B的权重文件大约13G,对应的vicuna权重也是13G,同时你还要留够我们真正需要的working权重的空间, 也是13G,所以7B的模型总共需要39G~40G空间。13B的话,我听大佬说LLAMA13B好像要30+G,估算一下总共差不多要快100个G了。

3.1下载Vicuna Weight 

可以选择下载13B或7B版本的,下面两个链接选一个下就行了。

git lfs install
git clone https://huggingface.co/lmsys/vicuna-13b-delta-v1.1  # more powerful, need at least 24G gpu memory
git clone https://huggingface.co/lmsys/vicuna-7b-delta-v1.1  # smaller, need 12G gpu memory

我理解这个Vicuna Weight其实是一个“偏差权重”,注意这个“偏差权重”是我自己取的名字,最终我们需要的权重=原始LLAMA权重+偏差权重。他们之所以要这么麻烦的搞是因为LLAMA对自己的权重做了限制,别人无法直接改变LLAMA的权重,所以只能通过引入额外的偏差权重与原始LLAMA权重进行某种运算来得到最终的权重了。

3.2下载LLAMA权重

同样可选13B或7B版本的,且分别与Vicuna-13B、Vicuna-7B对应。

git lfs install
git clone https://huggingface.co/decapoda-research/llama-13b-hf  # more powerful, need at least 24G gpu memory
git clone https://huggingface.co/decapoda-research/llama-7b-hf  # smaller, need 12G gpu memory

3.3构建我们需要的真正的working weight

当这两个 weight 备好后,我们可以使用Vicuna团队的工具来创建真正的 working weight 。

执行如下命令创建最终 working weight

python -m fastchat.model.apply_delta --base ./llama-7b-hf/ --target ./vicuna/weight/ --delta ./vicuna-7b-delta-v1.1/

以上命令只需要改动--base 、--target--delta对应的路径,其中base代表原始LLAMA权重所在路径,delta代表vicuna偏差权重、target代表我们最终得到的权重所存放的路径。

注:低CPU内存需加入--low-cpu-mem,可以把大的权重文件分割成多个小份,并使用磁盘作为临时存储。可以使峰值内存保持在16GB以下。不然无法载入vicuna增量文件,CPU内存占满,程序直接被kill,代码参考看下面

python -m fastchat.model.apply_delta --base ./llama-7b-hf/ --target ./vicuna/weight/ --delta ./vicuna-7b-delta-v1.1/ --low-cpu-mem

这里也要注意只有fastchat版本>=0.2.0才支持--low-cpu-mem,总之跟着教程最开始就用python==3.10到这步应该没问题。

四、命令行推理

4.1单GPU推理

 下面的命令要求Vicuna-13B大约有28GB的GPU内存,Vicuna-7B大约有14GB的GPU存储器。如果内存不足,请参阅下面的“内存不足”部分。

python -m fastchat.serve.cli --model-path vicuna/weight

参数介绍

usage: cli.py [-h] [--model-path MODEL_PATH]                     Vicuna Weights 路径[--device {cpu,cuda,mps}]                     选择 使用 cpu or cuda 运行[--gpus GPUS]                                 选择 使用 gpu 型号[--num-gpus NUM_GPUS]                         选择 gpu 数量[--max-gpu-memory MAX_GPU_MEMORY] [--load-8bit]                                 8bit 量化,用于降低显存[--conv-template CONV_TEMPLATE][--temperature TEMPERATURE] [--max-new-tokens MAX_NEW_TOKENS] [--style {simple,rich}] [--debug]

4.2单卡多GPUs推理

python -m fastchat.serve.cli --model-path /path/to/vicuna/weights --num-gpus 2

4.3CPU推理

这只在CPU上运行,不需要GPU。Vicuna-13B需要大约60GB的CPU内存,Vicuna-7B需要大约30GB的CPU存储器。

python -m fastchat.serve.cli --model-path /path/to/vicuna/weights --device cpu

实测效果 

在中英文分别进行了测试,看起来还可以,具体实战能力咋样可能还是要拿业务数据测一下。另外7B的模型推理时显存占用稳定在14G左右。

 

但是测了几轮发现他也有一些问题,比如让他计算数学公式,他就一直卡住重复输出同一句话。

 算了给不出来就算了,那你直接给个答案吧,结果给了个6???咋算出来的?一问他还急眼了,直接报错:TypeError: not a string

 看来vicuna的数学推理能力还有待增长啊,中英文能力看起来还行。

再测测角色扮演能力,让他扮演《鬼灭之刃》中的炎柱大哥。

说实话,他完全没理解我说了什么,给我扯到火影了,多少有点呆。。。

可能是受限于模型规模,感觉测试效果不尽人意。。。

五、使用Web GUI服务

由于公司网络受限,我这里没有测试,感兴趣的朋友可以参照以下教程自行尝试。

要使用web UI提供服务,您需要三个主要组件:与用户接口的web服务器、托管一个或多个模型的模型工作者,以及协调web服务器和模型工作者的控制器。以下是您的终端中要遵循的命令:1.Launch the controller

python -m fastchat.serve.controller

此控制器管理分布式工作程序。

2.Launch the model worke

python -m fastchat.serve.model_worker --model-path /path/to/vicuna/weights

 等待流程完成加载模型,然后看到“Uvicorn running on ...”。

您可以启动多个模型工作程序来同时为多个模型提供服务。模型工人将自动连接到控制器。

要确保模型工作者正确连接到控制器,请使用以下命令发送测试消息:

python3 -m fastchat.serve.test_message --model-name vicuna-13b

 3.Launch the Gradio web server

python -m fastchat.serve.gradio_web_server

 这是用户将与之交互的用户界面。

通过以下步骤,您将能够使用web UI为您的模型提供服务。您现在可以打开浏览器并与模型聊天了!

参考:LLMsNineStoryDemonTower/Vicuna at f2a3301e146867ae57158a5f623c771b09a570a1 · km1994/LLMsNineStoryDemonTower · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7035.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何让chatgpt给我们实现一个桌面便签?

我: 用Java开发一款桌面便签软件。功能需求:1、便签可以钉在桌面任意角落;2、便签内容实时保存到本地;3、有新增按钮,点击新增时清除当前面板上的内容,新建一条新的便签内容,并保存到本地&#…

ChatGPT - 小试牛刀 - 试水排序算法

在网上找了几家国内的chagpt镜像,最后还是没忍住上车了,试了一下传说中的写代码能力,果然鸟得很。 不废话直接上图: 上面的测试地址是 唠嗑么ChatGPT国内镜像网站,从站点上也能看到ChatGPT的能力了,什么写…

九龙证券|通信巨头火了!地产板块异动拉升,龙头获主力资金追捧

今天,11个职业取得主力资金净流入。 今天沪深两市主力资金净流出106.7亿元,其中创业板净流出27.79亿元,沪深300成份股净流入18.55亿元。 申万一级职业中,今天有25个职业上涨,房地产职业涨幅居首,达3.69%&a…

火爆全网的chatGPT,究竟是什么东西?

ChatGPT似乎用一夜的时间,让人们记住了无所不能的它!它是谁,凭什么有如此魅力?甚至让拥有ChatGPT概念的股票,接连封板? 下面我们先来对它做个了解。 简单来说,ChatGPT就是由人工智能研究实验室&…

今天我们来浅谈一下ChatGPT到底是什么东西

这是一篇非学术专业性的文章,而我也是为了解chatGPT而学了两三天人工智能,所以哪里写的不好的不对的地方还希望海涵。 图灵测试 1950年,人工智能之父艾伦图灵提出乐“图灵测试”。就是说当你在不面对面的时候跟机器人进行文字聊天的时候&…

chatgpt赋能python:Python怎么考期末:优秀SEO建议

Python怎么考期末:优秀SEO建议 考试是每个学生都要经历的事情,无论是小学生还是大学生。 期末考试让我们感觉像是在面对一堵墙,需要克服无数困难。 如今,我们的目标是给大家提供一些关于如何考Python期末考试的SEO建议。 第一步…

chatgpt赋能python:如何高效地准备期末Python考试,轻松地过关!

如何高效地准备期末Python考试,轻松地过关! 作为一名有10年Python编程经验的工程师,我想与大家分享一下如何高效地准备期末Python考试,轻松地过关。 1. 复习基础语法知识 Python是一门高级语言,其语法特点简洁明了&…

期末复习【嵌入式系统】

期末复习【嵌入式系统】 前言推荐期末复习推荐题型押题复习总述问题与思考:教学内容介绍 问题与思考第1章 嵌入式系统基础问题与思考 1.1 引言1.2 嵌入式系统的概述1.2.1嵌入式系统的定义1.2.2嵌入式系统组成1.2.3嵌入式系统的特点1.2.4嵌入式系统应用 1.3 嵌入式处…

假如ChatGPT变得邪恶

提前预判一切可能性,是为了让它变得更好 人工智能的最高成果是自由和谎言——《机械姬》 *本文仅供大家学习。转载请按照相关规则,注明来源,且附上本文的所有参考文献链接 为什么StackOverflow禁止使用ChatGPT *本文3000字左右 一些思路&…

chatgpt赋能python:不挂科必看!10年Python编程经验工程师教你如何应对Python期末考试

不挂科必看!10年Python编程经验工程师教你如何应对Python期末考试 作为Python工程师,期末考试是每年必须面对的挑战之一,不仅关系到自己的成绩,还可能影响今后的职业发展。如何才能不挂科呢?下面是我从10年的编程经验…

ChatGPT参加国内大学期末考试得到90高分,某国内大模型仅7分

ChatGPT时代已经来了!未来5-10年,AI能够在大多数人类工作岗位上表现得比人类更好。就教育而言,如何应对技术迅猛发展带来的挑战?在AI时代,大学生如何比机器更有竞争力? 文汇报消息,近日&#x…

西安石油大学期末C语言重点题目总结

C语言重点知识点总结 ##例题4-7 (switch和字符的读入) 只需要记住读入的是字符,然后执行对应操作即可 例题4-10 (switch) 做好不同公里数的分段即可 求累加和,连乘 https://blog.csdn.net/weixin_35903223…

chatgpt赋能python:Python期末考试该如何应对?

Python期末考试该如何应对? 随着Python编程语言的日益流行,越来越多的人开始受到其影响并学习这门语言。然而,对于初学者,即使是有经验的工程师,Python期末考试仍然可能成为一道难题。为此,我们提供了以下…

广东外语外贸大学英语文学期末考试复习(解析+细节)2023

前言:本博客旨在以讲解的形式复习这门课程,非常详细,主要是个人复习用,也是给我比较喜欢的课一个好的结尾(虽然我不怎么去上课)。其中有不正确之处欢迎指正!翻译解读来自网易有道,文…

java程序设计基础题期末考试

四、 简答题 &#xff08;共6题&#xff0c;30分&#xff09; 1、写出下列程序的运行结果____01234_____ public class X3_3_1 { public static void main(String[] args) { for(int i0; i<10; i){ if(i5) break; System.out.print(i); } } } &#xff08;5.0&#…

《数据库原理》期末考试题

得分 四、应用题(本大题共1小题&#xff0c;共18分) 1、设某生产零件的工厂有若干车间&#xff0c;每个车间加工若干种零件&#xff0c;每种零件在某个车间进行加工&#xff1b;车间的属性有车间名&#xff08;唯一&#xff09;、电话&#xff1b;零件的属性有零件号、零件…

AI部署之路 | 模型选型、本地部署、服务器部署、模型转换全栈打通!

作者 | Oldpan 编辑 | 汽车人 点击下方卡片&#xff0c;关注“自动驾驶之心”公众号 ADAS巨卷干货&#xff0c;即可获取 点击进入→自动驾驶之心【模型部署】技术交流群 后台回复【模型部署工程】获取基于TensorRT的分类、检测任务的部署源码&#xff01; 好久没更文了&#x…

GPT-4论文竟有隐藏线索:GPT-5或完成训练、OpenAI两年内接近AGI

金磊 发自 凹非寺量子位 | 公众号 QbitAI GPT-4&#xff0c;火爆&#xff0c;非常火爆。 不过家人们&#xff0c;在铺天盖地的叫好声中&#xff0c;有件事可能你是“万万没想到”—— 在OpenAI公布的技术论文里&#xff0c;竟然藏着九大隐秘的线索&#xff01; 这些线索是由国外…

chatgpt赋能python:Python接口自动化—提高API测试效率的利器

Python接口自动化—提高API测试效率的利器 在现代软件开发中&#xff0c;API&#xff08;Application Programming Interface&#xff09;测试已经成为基本的任务之一。随着互联网技术逐渐成熟&#xff0c;越来越多的企业和组织开始转向云计算、微服务等基于API的架构&#xf…

利用ChatGPT自动生成测试用例思维导图

在写测试用例的时候&#xff0c;你是不是经常会遇到以下难题&#xff1a; 缺少边界测试用例&#xff1a;在编写测试用例时&#xff0c;有时候会忽略某些边界情况&#xff0c;这可能导致无法发现软件中的潜在问题。 无法覆盖所有的场景&#xff1a;测试用例的数量可能非常庞大&…