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

news2024/12/29 11:23:39

模型介绍

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 Tasks

os.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 = True
    result_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, AutoTokenizer

os.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 += 1

    try:
        # 接收 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 -= 1


if __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.coloradmin.cn/o/653779.html

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

相关文章

游戏革命2023:AIGC拯救游戏厂商

文明史即工具史,纵观人类社会的演化,每一次的加速迭代,都有赖于关键性的技术突破。 前有蒸汽机到电力普及的生产力大爆发,以及计算机、互联网的诞生打开新世界,如今AIGC将再次推动先进技术工具的变革。 随着ChatGPT的…

​​​​​​​微信怎么快捷回复?

怎么快速的回复客户一直问的问题,还在一个个回,我直接把常问问题的回复编辑好,直接一秒搞定回复,客户还以为我敲字速度杠杠的 #快捷回复 #微信怎么快速回复信息 #话术

深入理解Java虚拟机jvm-对象的内存布局

对象的内存布局 对象头(Header)实例数据(Instance Data)对齐填充(Padding) 在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头(Header)、…

简要介绍 | 计算机视觉中的开放词汇:挑战与未来

注1:本文系“简要介绍”系列之一,仅从概念上对计算机视觉中的开放词汇(open vocabulary)进行非常简要的介绍,不适合用于深入和详细的了解。 注2:"简要介绍"系列的所有创作均使用了AIGC工具辅助 计算机视觉中的开放词汇&…

ASP.NET Core MVC 从入门到精通之鉴权授权基础

随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生&#xff0c…

在 ZBrush、Substance 3D Painter 和 UE5 中创作警探角色(P2)

大家好,下篇分享咱们继续来说警探角色的重新拓扑、UV、材质贴图和渲染处理。 重新拓扑/UV 这是对我来说最不有趣的部分——重新拓扑。它显然是实时角色中非常重要的一部分,不容忽视,因为它会影响大量的 UV、绑定和后期渲染,这里…

从零开始 Spring Boot 42:异步执行

从零开始 Spring Boot 42:异步执行 图源:简书 (jianshu.com) 在之前的文章中,我多次介绍过在 Spring 中如何使用Async注解让方法调用变成“异步执行”: 在这篇文章中,介绍了如何让定时任务使用Async变成异步执行。在…

​达梦三种主备集群介绍

DM主备守护集群分为实时主备、读写分离集群、MPP主备集群。基于redo日志实现,不同的集群采用不同的redo日志归档类型。 实时主备: 实时主备系统由主库、实时备库、守护进程和监视器组成。通过部署实时主备系统,可以及时检测并处理各种硬件故…

GIS大数据处理框架sedona(塞多纳)编程入门指导

GIS大数据处理框架sedona(塞多纳)编程入门指导 简介 Apache Sedona™是一个用于处理大规模空间数据的集群计算系统。Sedona扩展了现有的集群计算系统,如Apache Spark和Apache Flink,使用一组开箱即用的分布式空间数据集和空间SQL,可以有效地…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 2023.05-B卷-华为OD机试 - AI面板识别

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200道互联网大厂模拟练习题&a…

【双曲几何学 02】什么是极点和极线?

一、说明 Pole and polar 对于几何学,是普遍的概念。可能高中就学过,问题是在双曲几何又用到这个概念,因此,这里再次强调理解这个概念 。为后边学习双曲几何扫清障碍。 二、基本概念 在几何学中,极点和极线分别是相对于…

NetSuite SuiteQlet 功能包

目录 1.前言 2.功能说明 2.1术语 2.2功能概述 2.3逻辑阐释 3.安装 4.权限配置 ​​​5.操作指南 5.1Query查询 5.2Chart图表 5.3Dashboard仪表板发布 6.注意事项 7.视频链接 1.前言 SuiteQL是NetSuite数据分析框架中进行数据查询的有力工具,使用得当则…

华为云CodeArtBuild减负!云端编译构建,让你的开发省时省力!

每一个剑客都需要一把趁手的利器,初学者如何利用编译软件?只需五分钟,带你体验软件开发的效率。 请注册华为云账号并完成实名认证,实验过程中请使用Chrome浏览器完成相关操作。 华为云账号注册步骤请参考: ​​http…

介质中的平面电磁波与色散效应

目录 理想介质中的平面电磁波 方程推导 解的讨论 ​​​​​​​瞬时形式 等相面 参数讨论 导电媒质中的均匀平面波 方程推导 解的讨论 波的特征分析 色散效应的讨论 理想介质中的平面电磁波 方程推导 已知两个方程 我们如果令 方程就可以化简为 这两个方程在数学…

《C++ Primer》--学习1

变量和基本类型 NULL是一个预处理变量,用NULL初始化指针和用0初始化指针是一样的(但是不可以直接用值为0的int变量来初始化),应该尽量用nullptr,避免使用NULL 指向指针的指针 声明符中修饰符的个数并没有限制&#…

redis中sort妙用,实现动态生成排行榜

在游戏中,有很多维度的排行榜,服务器在实现过程中,一般都要预先维护对应因子的zset,比如根据玩家等级来排序,那就需要对应有一个level作为score的zset,如果是以战斗力排序,那就用战力作为score维…

微服务基础介绍

Part1一、基本概念 微服务最主要的功能是根据业务拆分成一个一个的子服务,实现功能的去耦合,每一个微服务提供单个业务功能的服务,各司其职,从技术角度看就是一种灵活独立的单元,能够自行单独启动和关闭,一…

亚马逊云科技中国峰会:自主驾驶开发平台 Amazon DeepRacer

0.引言 自动驾驶技术的快速发展和应用前景已经引起了广泛的关注,毋庸讳言,无人驾驶已经成为当今及未来前沿科技公司的重点研究方向。在这个领域中,Amazon DeepRacer作为一款全面的自主驾驶开发平台备受瞩目。 1.了解Amazon DeepRacer 1.1 什…

什么是消息队列(MQ)

其实字面意思很清楚了,存放消息的队列。 由于它的应用场景在服务器方面被重新定义而名声大噪,它的价值也被由原先的通信而重新定义,成为高并发场景下,分布式系统解耦合,任务异步,流量削峰的利器。 其实消息…

【flink】SinkUpsertMaterializer

在flink cdc同步数据时,基于sql的实现方式中发现了作业DAG有个SinkMaterializer算子,而且检查checkpoint历史时发现该算子state越来越大, 有必要搞清楚为什么会多了这个算子,作用又是什么。 通过算子名称定位到了源码为类org.apa…