4090显卡上部署 Baichuan-13B-Chat

4090显卡上部署 Baichuan-13B-Chat

  • 0. 背景
  • 1. huggingface 地址
  • 2. 量化部署使用 Baichuan-13B-Chat
  • 3. FastChat 部署使用 Baichuan-13B-Chat
    • 3-1. 创建虚拟环境
    • 3-2. 克隆代码
    • 3-3. 安装依赖库
    • 3-4. 使用命令行进行推理
    • 3-5. 使用 UI 进行推理
    • 3-6. 使用 OpenAI API 方式进行推理
    • 3-7. 量化部署

这篇文章记录了如何在4090显卡上部署 Baichuan-13B-Chat的操作笔记。

0. 背景

2023年7月11日,百川智能发布了Baichuan-13B-Chat。

Baichuan-13B-Chat为Baichuan-13B系列模型中对齐后的版本,预训练模型可见Baichuan-13B-Base。

Baichuan-13B 是由百川智能继 Baichuan-7B 之后开发的包含 130 亿参数的开源可商用的大规模语言模型,在权威的中文和英文 benchmark 上均取得同尺寸最好的效果。本次发布包含有预训练 (Baichuan-13B-Base) 和对齐 (Baichuan-13B-Chat) 两个版本。Baichuan-13B 有如下几个特点:

更大尺寸、更多数据:Baichuan-13B 在 Baichuan-7B 的基础上进一步扩大参数量到 130 亿,并且在高质量的语料上训练了 1.4 万亿 tokens,超过 LLaMA-13B 40%,是当前开源 13B 尺寸下训练数据量最多的模型。支持中英双语,使用 ALiBi 位置编码,上下文窗口长度为 4096。
同时开源预训练和对齐模型:预训练模型是适用开发者的“基座”,而广大普通用户对有对话功能的对齐模型具有更强的需求。因此本次开源我们同时发布了对齐模型(Baichuan-13B-Chat),具有很强的对话能力,开箱即用,几行代码即可简单的部署。
更高效的推理:为了支持更广大用户的使用,我们本次同时开源了 int8 和 int4 的量化版本,相对非量化版本在几乎没有效果损失的情况下大大降低了部署的机器资源门槛,可以部署在如 Nvidia 3090 这样的消费级显卡上。
开源免费可商用:Baichuan-13B 不仅对学术研究完全开放,开发者也仅需邮件申请并获得官方商用许可后,即可以免费商用。

商业用途(For commercial use): 请通过 Email(opensource@baichuan-inc.com) 联系申请书面授权。

1. huggingface 地址

https://huggingface.co/baichuan-inc/Baichuan-13B-Chat

2. 量化部署使用 Baichuan-13B-Chat

尝试了几次不使用量化部署,都失败了。

使用 int4 量化 和 使用 int8 量化 都可以成功。

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/Baichuan-13B-Chat", use_fast=False, trust_remote_code=True)
# model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-13B-Chat", device_map="auto", torch_dtype=torch.float16, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("baichuan-inc/Baichuan-13B-Chat", torch_dtype=torch.float16, trust_remote_code=True)
# model = model.quantize(4).cuda()
model = model.quantize(8).cuda() 
model.generation_config = GenerationConfig.from_pretrained("baichuan-inc/Baichuan-13B-Chat")
messages = []
messages.append({"role": "user", "content": "你是谁?"})
response = model.chat(tokenizer, messages)
print(response)

输出结果如下,

我的名字叫Baichuan-13B-Chat,是一个由百川智能省模型,擅长回答AI知识和人生哲学问题。你可随时向我提问。
【摘要】Baichuan-13B-Chat是由百川智能所开发的13B模型,专长为提供AI和哲学方面的问题解答。

3. FastChat 部署使用 Baichuan-13B-Chat

3-1. 创建虚拟环境

conda create -n fastchat python==3.10.6 -y
conda activate fastchat 

3-2. 克隆代码

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

3-3. 安装依赖库

pip install -e .
pip install transformers_stream_generator
pip install cpm_kernels

3-4. 使用命令行进行推理

python -m fastchat.serve.cli --model-path baichuan-inc/Baichuan-13B-Chat

问它几个问题,问题和答案截图如下,

在这里插入图片描述

3-5. 使用 UI 进行推理

启动 controller,

python3 -m fastchat.serve.controller

启动 model worker(s),

python3 -m fastchat.serve.model_worker --model-path baichuan-inc/Baichuan-13B-Chat

启动 Gradio web server,

python3 -m fastchat.serve.gradio_web_server

问它几个问题,问题和答案截图如下,

在这里插入图片描述

3-6. 使用 OpenAI API 方式进行推理

启动 controller,

python3 -m fastchat.serve.controller

启动 model worker(s),

python3 -m fastchat.serve.model_worker --model-names "gpt-3.5-turbo,text-davinci-003,text-embedding-ada-002" --model-path baichuan-inc/Baichuan-13B-Chat
# If you do not have enough memory, you can enable 8-bit compression by adding --load-8bit to commands above.
# In addition to that, you can add --cpu-offloading to commands above to offload weights that don't fit on your GPU onto the CPU memory.
# python3 -m fastchat.serve.model_worker --model-names "gpt-3.5-turbo,text-davinci-003,text-embedding-ada-002" --load-8bit --cpu-offload --model-path baichuan-inc/Baichuan-13B-Chat

启动 RESTful API server,

python3 -m fastchat.serve.openai_api_server --host localhost --port 8000

设置 OpenAI base url,

export OPENAI_API_BASE=http://localhost:8000/v1

设置 OpenAI API key,

export OPENAI_API_KEY=EMPTY

问它几个问题,代码和答案截图如下,

import os
import openaifrom dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
os.environ['OPENAI_API_KEY'] = 'EMPTY'
os.environ['OPENAI_API_BASE'] = 'http://localhost:8000/v1'
openai.api_key = 'none'
openai.api_base = 'http://localhost:8000/v1'
def get_completion(prompt, model="gpt-3.5-turbo"):messages = [{"role": "user", "content": prompt}]response = openai.ChatCompletion.create(model=model,messages=messages,temperature=0,)return response.choices[0].message["content"]
get_completion("你是谁?")

在这里插入图片描述

get_completion("世界上第二高的山峰是哪座")

在这里插入图片描述

get_completion("鲁迅和周树人是什么关系?")

在这里插入图片描述

(可选)如果在创建嵌入时遇到 OOM 错误,请使用环境变量设置较小的 BATCH_SIZE,

export FASTCHAT_WORKER_API_EMBEDDING_BATCH_SIZE=1

(可选)如果遇到超时错误,

export FASTCHAT_WORKER_API_TIMEOUT=1200

refer1: https://github.com/lm-sys/FastChat/blob/main/docs/langchain_integration.md

refer2:https://github.com/lm-sys/FastChat

3-7. 量化部署

修改 model/model_adapter.pyclass BaichuanAdapter 的内容如下,实现量化部署。

class BaichuanAdapter(BaseModelAdapter):"""The model adapter for baichuan-inc/baichuan-7B"""def match(self, model_path: str):return "baichuan" in model_pathdef load_model(self, model_path: str, from_pretrained_kwargs: dict):revision = from_pretrained_kwargs.get("revision", "main")tokenizer = AutoTokenizer.from_pretrained(model_path,use_fast=False,trust_remote_code=True,revision=revision)model = AutoModelForCausalLM.from_pretrained(model_path,trust_remote_code=True,**from_pretrained_kwargs,)model = model.quantize(8).cuda()model.generation_config = GenerationConfig.from_pretrained(model_path)return model, tokenizer

完结!

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

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

相关文章

清华ChatGLM2-6B开源!第二代性能大幅提升,推理提速42%,最高支持32K上下文

清华ChatGLM2-6B开源!第二代性能大幅提升,推理提速42%,最高支持32K上下文 3月份,清华系大模型 ChatGLM-6B 惊喜亮相。 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构…

Baichuan-13B 介绍及微调

文章目录 Baichuan-13B介绍Baichuan-13B特点Baichuan-13B效果Baichuan-13B模型参数 推理和部署模型下载模型推理 微调和部署下载仓库配置环境微调数据微调过程 Baichuan-13B介绍 2023年7月11日,百川智能发布Baichuan-13B! github地址:https:…

【大模型】更强的 LLaMA2 来了,开源可商用、与 ChatGPT 齐平

【大模型】可商用且更强的 LLaMA2 来了 LLaMA2 简介论文GitHubhuggingface模型列表训练数据训练信息模型信息 许可证参考 LLaMA2 简介 2023年7月19日:Meta 发布开源可商用模型 Llama 2。 Llama 2是一个预训练和微调的生成文本模型的集合,其规模从70亿到…

[Unity3D] 协程

目录 前言 学习来源: 一、什么是协程 二、协程的应用举例 三、协程的使用方式 3.1 启动 3.2 结束 3.3 嵌套 3.4 注意 四、Unity脚本的生命周期 五、yield速查表 前言 学习笔记,仅供学习,不做商用,如有侵权&#…

“AIGC早报”已内测2个月了,来看看她长什么样子

今天,是咱们社群“AI产品经理大本营”六周年活动的第二天,正式给大家介绍下,已内测2个月的重要会员权益——AIGC日报。 会分三个部分:效果口碑、我们如何做到的、今日的AIGC早报展示‍‍‍‍‍‍‍‍ ps,文末会发福利星…

何以驾驭AIGC领域的关键进程?得深邃技术得天下

“大海和火车成为那个世纪新兴经济的象征:强大、危险、难以驾驭和预测,但令人着迷和兴奋。” 这是诺贝尔经济学奖得主埃德蒙•费尔普斯曾在《大繁荣》一书中对19世纪有过这样的描述。 穿越回当下的21世纪,又有哪项发明具备这些特质&#xff…

【腾讯云 Cloud Studio 实战训练营】Cloud Studio实现健康上报小程序(代码开源)

目录 🍳前言🍳实验介绍🍳产品介绍🍳注册Cloud Stdio🍳后端Spring服务🍳创建项目上传项目数据库连接与导入 🍳Vue后台管理创建项目编辑模板信息选择环境镜像上传资源文件 🍳小程序⭐总…

【OpenMMLab AI实战营二期笔记】第七天 MMDetection代码课

0. 环境检测和安装 # 安装 mmengine 和 mmcv 依赖 # 为了防止后续版本变更导致的代码无法运行,暂时锁死版本 pip install -U "openmim0.3.7" mim install "mmengine0.7.1" mim install "mmcv2.0.0"# Install mmdetection rm -rf mmd…

AI实战营第二期 第六节 《MMDetection代码课》——笔记7

文章目录 什么是MMDetection?环境检测和安装1 数据集准备和可视化2 自定义配置文件3 训练前可视化验证4 模型训练5 模型测试和推理6 可视化分析MMYOLO 环境和依赖安装特征图可视化1. 可视化 backbone 输出的 3 个通道2. 可视化 neck 输出的 3 个通道 Grad-Based CAM…

最新!2023软科中国大学排名发布!

Datawhale高校 方向:软科中国大学排名,来源:软科 2023年3月30日,高等教育专业评价机构软科今日正式发布2023“软科中国大学专业排名”。 上榜高校共有590所,清华大学、北京大学、浙江大学连续9年蝉联全国三甲&#xf…

ChatGPT 和对话式 AI 的未来:2023 年的进展和应用

人工智能(Artificial Intelligence)在过去一段时间以来以前所未有的速度快速发展。从自动化日常任务到重要提醒的设定,AI以各种方式渗透到我们的生活中。然而,在这个领域中迈出的最重要一步是ChatGPT。 ChatGPT被瑞银(UBS)评为“有史以来增长最快的消费者应用程序”,于…

月薪13K!从零开始,小白转行程序员,三个月实现人生逆转~

思绪运转之间,上班也已经有一周了,我有想过给的所有老师都写一封感谢信的,但发现工作量太大了,只能用这一封信来表达对所有老师们的感谢。 软件测试,一个陌生的领域,对于一个毫无经验的小白来说&#xff0…

ChatGPT生成一篇文章:关于Docker

如今AI智能如火如荼,如果不会点ChatGPT总感觉有点落后了。最近刚好重新复习了一遍Docker,这里尝试通过ChatGPT来生成一篇关于Docker文章。来看效果。 1、什么是Docker Docker是一种容器化技术,可以将应用程序和它们的依赖项封装在一个虚拟的…

自主安装IPA文件到iPhone上

1.电脑下载iTunes,手机使用数据线连接在电脑上,一定要选择信任电脑 2.打开iTunes,点击手机图标 3.拖拽已下载的IPA文件到我的设备,蓝色高亮处,可以看到顶部的进度条,进度条完了可以查看手机,已…

iPhone 直接安装 .ipa包

有些App因为各种原因,不能直接通过App Store下载到,以前是可以在网上找到.ipa文件通过iTunes直接安装的。但是现在的版本已经不支持了。 官方的工具不好用,只好用民间的了。我们在电脑上下载一个爱思助手,然后将手机连接到电脑上…

实现 ipad 上看来自 v4l2 上的摄像头视频

配合 http://blog.csdn.net/sunkwei/archive/2011/06/07/6530343.aspx 实现在 ipad 上观看来自 v4l2 的摄像头视频. 先上ipad 抓屏图 这个做的很粗糙, 而且有些 opengl es 的概念也没有搞明白, 慢慢再补充吧.

【iOS开发】ipa安装到手机上的三种方式

转载地址:ipa安装到手机上的三种方式 ipa包 安装三种方式,优先推荐第一种方法(通过iTunes安装)。 1、通过iTunes安装 数据线连接手机之后,会自动连接iTunes,(第一次连接的时候会提示是否信任…

iphone或者ipad上安装自己打包的ipa文件

对于非ios开发者来说,这确实是一个问题,但我懂的也不多,也是抱着试试的态度安装了下,之前我以为安装ipa和在安卓手机上安装apk一样,qq或者微信传文件下载点击就可以安装了,但这个ipa如果在iphone上这样做&a…

苹果如何安装ipa(亲测有用,无需越狱)

方法一 懒省事使用爱思助手即可(需要签名) 方法二 1.下载cydiaimpactor(无需签名) 官方地址 百度云下载:https://pan.baidu.com/s/1rYIG4go-fOEHarSjziA1eg 提取码:3b48 2.连上苹果手机,启动cy…

ios 程序发布成ipa 文件 通过 web 下载和安装。install App via OTA

转自: http://blog.csdn.net/totogogo/article/details/7391531 iOS 7.1正式版发布了,之前使用itms-services://URL方式在线安装ipa文件的方法却失效了,点击的时候报错为:“无法安装应用程序,因xxx.com的证书无效”&a…