【AIGC】BaiChuan7B开源大模型介绍、部署以及创建接口服务

news/2024/11/15 0:47:45/

模型介绍

baichuan-7B是由百川智能开发的一个开源的大规模预训练模型。基于Transformer结构,在大约1.2万亿tokens上训练的70亿参数模型,支持中英双语,上下文窗口长度为4096。在标准的中文和英文权威benchmark(C-EVAL/MMLU)上均取得同尺寸最好的效果。

huggingface
github

部署环境

  • 系统:centos7.8.2003
  • GPU:2 * 3090 (24G)

代码下载

git clone https://github.com/baichuan-inc/baichuan-7B.git

模型下载

下载地址:https://huggingface.co/baichuan-inc/baichuan-7B/tree/main

huggingface模型下载有几种方式:

  • 使用git下载
git lfs install
git clone https://huggingface.co/baichuan-inc/baichuan-7B
  • 网页直接下载,一个个下载,然后放置到固定文件夹下即可。
    在这里插入图片描述
  • 使用代码自动加载huggingface模型
tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/baichuan-7B", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("baichuan-inc/baichuan-7B", device_map="auto", trust_remote_code=True)

环境安装

python == 3.8.16

pip install -r requirements.txt 

独立测试

GPU应该选择至少30G的显存。我这里一块24G卡,测试启动不稳定,显存容易溢出(可以通过修改max_new_tokens参数为64,勉强可以跑)。2块24G卡没问题。

# !/usr/bin/env python
# -*- coding:utf-8 -*-import os
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasksos.environ["CUDA_VISIBLE_DEVICES"] = '4, 5'if __name__ == '__main__':text_generation_zh = pipeline(task=Tasks.text_generation, model='baichuan-inc/baichuan-7B',model_revision='v1.0.2')text_generation_zh._model_prepare = Trueresult_zh = text_generation_zh('今天天气是真的')print(result_zh)

模型处填写保存模型的目录路径

在这里插入图片描述

服务接口

# !/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask, request, jsonify
import threading
from flask_cors import CORS
import os
from transformers import AutoModelForCausalLM, AutoTokenizeros.environ["CUDA_VISIBLE_DEVICES"] = '4, 5'app = Flask(__name__)
CORS(app)# 加载模型
tokenizer = AutoTokenizer.from_pretrained("baichuan-inc/baichuan-7B", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("baichuan-inc/baichuan-7B", device_map="auto", trust_remote_code=True)# 创建线程锁和计数器
lock = threading.Lock()
counter = 0
MAX_CONCURRENT_REQUESTS = 5  # 最大并发请求数@app.route('/baichuan/conversation', methods=['POST'])
def conversation():global counter# 请求过载,返回提示信息if counter >= MAX_CONCURRENT_REQUESTS:return jsonify({'message': '请稍等再试'})# 获取线程锁with lock:counter += 1try:# 接收 POST 请求的数据question = request.json['question']question += '->'inputs = tokenizer(question, return_tensors='pt')inputs = inputs.to('cuda:0')pred = model.generate(**inputs, max_new_tokens=1024, repetition_penalty=1.1)text = tokenizer.decode(pred.cpu()[0], skip_special_tokens=True)print("result:", text)# 返回结果response = {'result': text[len(question):]}return jsonify(response)finally:# 释放线程锁并减少计数器with lock:counter -= 1if __name__ == '__main__':print("Flask 服务器已启动")app.run(host='0.0.0.0', port=30908)

接口调用

在这里插入图片描述

测试小结

  • 该模型是一个文本生成模型,对话式效果较差,但是如果prompt为问答式,还是有一些效果的。如果需要对话式满足自己的需求,还是需要进行后续的fintune微调。

官方也说了:

chatgpt 等模型专门针对对话进行了微调,目前 baichuan-7B 暂时还没针对对话微调,所以不支持对话。
但目前模型是有推理能力的。
模型介绍页面已经举例用法了,如“登鹳雀楼->王之涣\n夜雨寄北->”,给定示例“登鹳雀楼->王之涣”,也就是根据诗歌名称推理作者名称,那么给定问题“夜雨寄北->”,就能够正确推理出来,作者是“李商隐”。 如果你想实现对话能力,你可以找 gpt 的公开对话数据集,自己对 baichuan-7B 进行微调。

  • 看社区也有大佬已经微调了对话模型 https://huggingface.co/hiyouga/baichuan-7b-sft ,有时间可以试试。

希望

  • 希望有更多的大佬微调出更出色的AIGC能力。

http://www.ppmy.cn/news/632617.html

相关文章

足够惊艳,使用Alpaca-Lora基于LLaMA(7B)二十分钟完成微调,效果比肩斯坦福羊驼

之前尝试了从0到1复现斯坦福羊驼(Stanford Alpaca 7B),Stanford Alpaca 是在 LLaMA 整个模型上微调,即对预训练模型中的所有参数都进行微调(full fine-tuning)。但该方法对于硬件成本要求仍然偏高且训练低效…

LLaMA:7B参数量的Baby版ChatGPT窥探

最近metaAI“不小心”泄露了自身的大语言模型LLaMA,本着好奇的心火速下载了LLaMA的权重,来试玩一下这个baby版的ChatGPT,为什么称作是baby版,是因为该权重还没有像ChatGPT那般Finetune过。 LLaMA各参数版本与GPT-3的性能对比如下…

win10,win11 下部署Vicuna-7B,Vicuna-13B模型,gpu cpu运行

运行Vicuna-7B需要RAM>30GB或者14GB的显存 运行Vicuna-13B需要RAM>60GB或者28GB的显存 如果没有上面的硬件配置请绕行了,我笔记本有64G内存,两个都跑跑看,使用python3.9,当时转换13b时一直崩溃后来发现是没有设定虚拟内存&…

电脑连上wifi不能连接内网的其他设备的解决方法

场景: 电脑有两个网卡,一个以太网,一个WIFI网卡 以太网设置的地址是172.16.0.101(默认网关是172.16.0.254).正常情况下可以ping通服务器(172.16.9.251)和连接服务器。 当电脑连接手机热点(wifi&#xff09…

理解GPT-4:人工智能的全新里程碑及其国内使用

在人工智能领域,每一代的进步都是突破性的。近年来,这个领域的发展尤为引人注目,尤其是在语言处理和生成方面。OpenAI的GPT系列模型就是最好的例证。在GPT-3取得巨大成功后,我们迎来了更强大的GPT-4。 GPT-4: AI的新里程碑 GPT-4…

pvf词典

1 代码 2.稀有/品级[rarity] 3.佩戴登记 [minimum level] 4.diaoluo [grade] 5.分类代码 10武器 鬼剑1 02短剑 03太刀 04钝器 05巨剑 06光剑 格斗2 02手套 03臂铠 04爪子 05拳套 06东方棍 神枪3 02左轮 03自动手枪 04步枪 05手炮 06手弩 魔法4 02矛 03棍棒 04魔杖 05法杖 06扫…

贵族机要第二次半修改装备简单分配

import json def distribution(list):A[]B[]C[]D[]for i in range(len(list)):#头肩if list[i]望穿尽头的视线or list[i]wcjt:B.append(list[i])#武器elif list[i]胜负之役太刀-狂战士 or list[i]sfzy:B.append(list[i])#上衣elif list[i]暗影流光战袍 or list[i]aylg:B.append…

互联网开发搞手游创作5-策略性设计

这篇主要设计技能点,首先思考一个问题,有了基本属性后,为何要有技能,没有行不行,就这么硬抗,比如CS中纯打枪技艺。那玩家PK靠的是只能群殴,偷袭,走位。 但楚汉争霸里既然要体现策略…