LLM - 基于 Vicuna-13B 参数计算搭建私有 ChatGPT 在线聊天

news2024/10/7 2:19:46

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://blog.csdn.net/caroline_wendy/article/details/131312366

LLaMA

LLaMA 和 Vicuna 都是大语言模型(LLM),两者的差异如下:

  • LLaMA (Large Language Model Meta AI):开放和高效的基础语言模型,这是一系列从7B到65B参数的语言模型,使用公开可用的数据集进行训练,没有使用专有和无法获取的数据集。LLaMA-13B在大多数基准测试中超越了GPT-3 (175B),LLaMA-65B 与最好的模型 Chinchilla-70B 和 PaLM-540B 相当。预训练数据集是多个来源的混合,包括CommonCrawl、C4、Github、Wikipedia、Gutenberg、Books3、ArXiv和Stack Exchange等,总共包含约1.4T个标记。论文:LLaMA: Open and Efficient Foundation Language Models

  • Vicuna: 由 UC伯克利、CMU、斯坦福等机构的学者,在 2022 年发布的一种改进版的 LLaMA,使用了用户共享的对话数据(约70K samples)来进行全量微调,并且降低了训练成本。通过在来自 ShareGPT 的用户共享对话上微调 LLaMA 而训练的,使用 GPT-4 作为评判标准的初步评估显示,Vicuna-13B 在 OpenAI ChatGPT 和 Google Bard 的质量上达到了 90% 以上,同时在 90% 的情况下超过了其他模型,如 LLaMA 和 Stanford Alpaca。

这两种算法都在一些对话任务上表现出了优异的效果,但是也存在着一些局限性,比如编程、推理、数学以及事实准确性等方面的不足。目前,很多大语言模型算法都是基于 Vicuna 进行对齐,例如 DrugChat 等。因此,需要配置 Vicuna 的模型参数。

1. 配置工程

需要配置的工程有2个,都来源于 Hugging Face:

  1. Vicuna-13B:https://huggingface.co/lmsys/vicuna-13b-delta-v0
  2. LLaMA-13B-hf:https://huggingface.co/decapoda-research/llama-13b-hf

下载方式,可以参考 Server - 使用网盘快速下载 Hugging Face 大模型,使用网盘下载速度要快于Git LFS

普通方式:

git lfs install
git clone https://huggingface.co/lmsys/vicuna-7b-delta-v0.git
cd vicuna-7b-delta-v0
git lfs pull

git lfs install
git clone https://huggingface.co/decapoda-research/llama-13b-hf.git
cd llama-13b-hf
git lfs pull

其中,bin 文件 和 model 文件较大,可以离线下载之后,再覆盖。

git clone 如果遇到 Bug,TCP connection reset by peer,建议使用 ssh 的方式下载,需要简单配置一下,参考 Server - 使用网盘快速下载 Hugging Face 大模型。

2. 组合权重

不同版本的 Vicuna,使用不同的 FastChat 版本,例如v0,使用 FastChat 版本是v0.1.10。

具体配置参考:GitHub - vicuna_weights_version.md

Vicuna

配置环境:

conda create -n vicuna python=3.8
source activate vicuna
pip install fschat==0.1.10  # 注意版本

下载工程,注意切换版本:

git clone https://github.com/lm-sys/FastChat.git
cd FastChat
git checkout v0.1.10  # 注意版本

更新 transformers 库,因为 transformers 库,随着版本不同,包括的 Tokenizer 和 Model 的函数不同:

pip install --upgrade transformers

查看 fschat 和 transformers 的版本,如下:

pip show fschat transformers
Name: fschat
Version: 0.1.10
---
Name: transformers
Version: 4.28.1

修改 FastChat 工程的 fastchat/model/apply_delta.py 文件,版本不同,函数不同:

AutoTokenizer 全部替换为 LlamaTokenizer
AutoModelForCausalLM 全部替换为 LlamaForCausalLM

即:

...
from transformers import LlamaTokenizer, LlamaForCausalLM

def apply_delta(base_model_path, target_model_path, delta_path):
    print(f"Loading the base model from {base_model_path}")
    base = LlamaForCausalLM.from_pretrained(
        base_model_path, torch_dtype=torch.float16, low_cpu_mem_usage=True)

    print(f"Loading the delta from {delta_path}")
    delta = LlamaForCausalLM.from_pretrained(delta_path, torch_dtype=torch.float16, low_cpu_mem_usage=True)
    delta_tokenizer = LlamaTokenizer.from_pretrained(delta_path, use_fast=False)

    DEFAULT_PAD_TOKEN = "[PAD]"
    base_tokenizer = LlamaTokenizer.from_pretrained(base_model_path, use_fast=False)
    num_new_tokens = base_tokenizer.add_special_tokens(dict(pad_token=DEFAULT_PAD_TOKEN))
...

否则报错:

ValueError: Tokenizer class LLaMATokenizer does not exist or is not currently imported.

接着,组合模型权重:

  • 脚本:apply_delta.py
  • llama权重:llama-13b-hf/
  • vicuna权重:vicuna-13b-delta-v0/
  • 输出权重:vicuna-13b-weight/
CUDA_VISIBLE_DEVICES=1 python FastChat/fastchat/model/apply_delta.py --base-model-path llama-13b-hf/  --delta-path vicuna-13b-delta-v0/ --target-model-path vicuna-13b-weight/

3. 测试权重

执行脚本,即可命令行,使用:

CUDA_VISIBLE_DEVICES=3,4 python -m fastchat.serve.cli --model-path ./vicuna-13b-weight --style rich  --num-gpus 2

运行如下:

  • 问题1:let’s talk something about biological pharmacy ?
  • 问题2:What are the big pharmaceutical companies in the world ?

日志如下:

Log

测试成功。

参考:

  • CSDN - Vicuna 模型学习与实战
  • GitHub - lm-sys/FastChat
  • GitHub - vicuna_weights_version.md
  • 知乎 -【LLMs 入门实战 —— 八 】MiniGPT-4 模型学习与实战
  • GitHub - Vision-CAIR/MiniGPT-4
  • Server - 使用网盘快速下载 Hugging Face 大模型

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

英飞凌MCU芯片选型推荐参考

前言: 英飞凌Infineon作为一家芯片大厂,有众多芯片产品可供选型,这里重点推荐下庞大的MCU系列如何选项。首先,对于英飞凌产品构成要有深刻的认识,需要熟悉一个半导体产业并购的历程。2013年5月,Spansion 1.1亿美元并购了对富士通(Fujitsu)半导体微控制器和模拟业务部门…

聚类Clustering方法定位船舶站点

背景 现有船舶的航线中采样的数据库,采样的总时长为3个月,仅采样航速静止(小于1节)的数据,关键有效数据主要有经纬度/实时吃水量。 思路 基于站点附近轮船有停靠且航行速度慢,故取样点多的基础认识&…

正确的认识泥石流以及做好泥石流的防范

泥石流是山区沟谷中由暴雨、冰雪融水或地下含水层的渗入所形成的携带大量泥沙、石块等固体物质的特殊洪流,具有流量大、历时短、破坏力强等特征,泥石流携带的泥沙、石块等可高达数十米,并从山坡上倾泻而下,往往会形成一个“堰塞湖…

Python自动化测试利器selenium详解

Selenium是一种常用的Web自动化测试工具,支持多种编程语言和多种浏览器,可以模拟用户的交互行为,自动化地执行测试用例和生成测试报告。Selenium基于浏览器驱动实现,结合多种定位元素的方法,可以实现各种复杂的Web应用…

二进制搭建Kubernetes集群(一)——部署etcd集群和单master

单master集群架构图: 实验环境(二进制搭建 Kubernetes v1.20) 注意:生产环境中,etcd集群和master、node节点都应该部署在不同的机器上,此处为了实验方便,将三台etcd节点分别部署在了master和no…

探究Vue源码:mustache模板引擎(3) 通过编写简单正则了解mustache转换思路

我们会基本使用显然不够啊 我们要去了解mustache的原理 乃至自己去写一个mustache 首先 mustache 不是不能用简单的正则表达式来实现 但是 这里为了让大家理解 为什么不能 我们还是用简单正则写一下 我们创建一个 html文件 然后 编写代码如下 <!DOCTYPE html> <htm…

API性能监控 【ApiHelp】-- 组件Monitor 核心功能实现

上篇文章介绍了组件Monitor主要设计和功能Monitor组件设计&#xff0c;现在来具体看看Monitor组件的实现。 1、Java Agent实现AgentMain 前面已经介绍了Java Agent相关知识&#xff0c;现在来具体实现下。 实现AgentMain类&#xff1a; AgentMain为agent的入口类&#xff0c;程…

【C语言】项目实战——快速0基础上手五子棋游戏(内附源码)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 如果你是从现在关注的老粉的话&#xff0c;你可能会有点疑惑“how old are you&#xff1f;”(怎么老是你&#xff1f;) 唉&#xff0c;没办法我也不想的&#xff0c;但是月末了参加新星计划和2023年博客之星的评选只能更…

职业生涯规划书600字范文

职业生涯规划书600字范文篇1 记得高中时老师就告诉我们要认识自己&#xff0c;“认识自己”&#xff0c;仅仅四个字&#xff0c;实践起来是何等的艰难&#xff0c;古往今来那么多仁人志士为了能认识自己&#xff0c;不断实践&#xff0c;不断创新&#xff0c;可又有几个能在生命…

软件安全技术复习内容

软件安全技术 边复习边写的&#xff0c;有错误及时指正第一章 软件安全概述零日漏洞安全威胁分类CIA安全基本属性PDRR模型软件安全的主要方法和技术基本方法主要技术 第二章 软件漏洞概述概念软件漏洞成因分析软件漏洞分类基于漏洞成因的分类基于漏洞利用位置的分类基于威胁类型…

FPGA基础知识-编程语言接口

目录 学习目标&#xff1a; 学习内容&#xff1a; 1.PLI的使用 2.PLI任务的连接和调用 3.内部数据的获取 4.PLI库子程序 学习时间&#xff1a; 学习产出&#xff1a; 学习目标&#xff1a; 解释在Verilog仿真中如何使用PLI子程序。 描述PLI的用途。 定义用户自定义系…

DSIN(Deep Session Interest Network)详解

1. 提出动机 这个模型依然是研究如何更好地从用户的历史行为中捕捉到用户的动态兴趣演化规律。DIEN存在一个问题&#xff0c;就是只关注了如何去改进网络&#xff0c;而忽略了用户历史行为序列本身的特点&#xff0c;我们仔细去想&#xff0c;用户过去可能有很多历史点击行为&…

kafka硬件选择以及如何在生产中优化各个组件的参数

硬件选择&#xff1a; 1.求出一天kafka会产出大概多少的消息&#xff0c;然后平均到每一秒&#xff0c;要多少的消息&#xff0c;然后一条消息大概就是0.5-2k的大小&#xff0c;求出&#xff0c;每秒占用多少内存 2.求购买服务器数量(上边求出的效率 * 副本数/100)1 如果除不…

2022 开源社年度报告:打开新世界

2022 年被认为是充满挑战的一年&#xff0c;对于开源社而言也不例外。开源社同样面临着外部环境的不断变化&#xff0c;然而&#xff0c;正是开源的力量和开放协作的模式&#xff0c;让我们能够在这个极端情况下做出卓越的回应。 大家对于开源社的组织架构充满好奇&#xff0c;…

下载插件-4K Video Downloader

这款插件小编自己还是蛮喜欢的&#xff0c;有兴趣的小伙伴可以体验学习下。 一、简单介绍 提供视频下载服务&#xff0c;让您以高质量的方式获取所需内容。无论是视频、播放列表、频道还是字幕&#xff0c;您都可以轻松下载并保存为多种格式&#xff0c;如MP4、MKV、M4A、MP3、…

C++基础(8)——类和对象(多态)

前言 本文主要介绍了C中多态的基本知识 4.7.1&#xff1a;多态的基本概念和原理剖析 1&#xff1a;基本概念 静态多态&#xff1a;函数重载、运算符重载 动态多态&#xff1a;派生类和虚函数实现运行时多态 静态多态在编译阶段确定函数地址&#xff1b;动态多态在运行阶段…

RN 学习小记之使用 Expo 创建项目

本文Hexo博客链接&#x1f517; https://ysx.cosine.ren/react-native-note-1 xLog链接&#x1f517; https://x.cosine.ren/react-native-note-1 RSS订阅 &#x1f4e2; https://x.cosine.ren/feed/xml 由于业务需要&#xff0c;开始学习RN以备后面的需求&#xff0c;而虽然之…

《后端存储实战课》课程学习笔记(二)

创建和更新订单时&#xff0c;如何保证数据准确无误&#xff1f; 订单系统是整个电商系统中最重要的一个子系统&#xff0c;订单数据也就是电商企业最重要的数据资产。一个合格的订单系统&#xff0c;最基本的要求是什么&#xff1f;数据不能错。 首先&#xff0c;你的代码必须…

2023年度编程排行重磅发布,JS连续11年霸占榜一

编程语言千千万&#xff0c;你最喜欢用哪一个&#xff1f; 最近&#xff0c;在调研了全球超过9万名开发者之后&#xff0c;程序员社区 Stack overflow 重磅发布了《2023 Developer Survey》&#xff0c;从这份报告中&#xff0c;我们可以了解到当前最热门的工具、最主流的技术…

每日学术速递6.5

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Humans in 4D: Reconstructing and Tracking Humans with Transformers 标题&#xff1a;4D 中的人类&#xff1a;用变形金刚重建和跟踪人类 作者&#xff1a;Shubham Goel, Geor…