ChuanhuChatGPT集成百川大模型

2024-04-27 08:28

本文主要是介绍ChuanhuChatGPT集成百川大模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

搭建步骤:

  1. 拷贝本地模型,把下载好的Baichuan2-7B-Chat拷贝到models目录下
  2. 修改modules\models\base_model.py文件,class ModelType增加Baichuan

    Baichuan = 16

    elif "baichuan" in model_name_lower:

       model_type = ModelType.Baichuan

  3. 修改modules\models\models.py文件,get_model方法增加ModelType.Baichuan

    elif model_type == ModelType.Baichuan:

        from .Baichuan import Baichuan_Client

        model = Baichuan_Client(model_name, user_name=user_name)

  4. 增加modules\models\Baichuan.py文件

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    from modelscope import snapshot_download, AutoModelForCausalLM, AutoTokenizer,GenerationConfig

    from transformers import AutoModelForCausalLM, AutoTokenizer

    from transformers.generation import GenerationConfig

    import logging

    import colorama

    from ..index_func import *

    from ..presets import *

    from ..utils import *

    from .base_model import BaseLLMModel

    from ..presets import MODEL_METADATA

    from datetime import datetime

    class Baichuan_Client(BaseLLMModel):

        def __init__(self, model_name, user_name="") -None:

            super().__init__(model_name=model_name, user=user_name)

            import torch

            from transformers import AutoModel, AutoTokenizer

            global CHATGLM_TOKENIZER, CHATGLM_MODEL

            print("__init__ Baichuan_Client")

            if CHATGLM_TOKENIZER is None or CHATGLM_MODEL is None:

                model_path = None

                if os.path.exists("models"):

                    model_dirs = os.listdir("models")

                    if model_name in model_dirs:

                        model_path = f"models/{model_name}"

                if model_path is not None:

                    model_source = model_path

                else:

                    model_source = snapshot_download(f"baichuan-inc/{model_name}", revision='v1.0.4')

                CHATGLM_TOKENIZER = AutoTokenizer.from_pretrained(

                    model_source, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16

                )

                quantified = False

                if "int4" in model_name:

                    quantified = True

                model = AutoModelForCausalLM.from_pretrained(

                    model_source, device_map="auto", trust_remote_code=True, torch_dtype=torch.float16

                )

                model.generation_config = GenerationConfig.from_pretrained(model_source)

                model = model.eval()

                CHATGLM_MODEL = model

        def _get_glm_style_input(self):

            print("_get_glm_style_input")

            print(f"the history is: {self.history}")

            history = [x["content"for in self.history]

            query = history.pop()

            print(f"the message is: {query}")

            return history, query

        def get_answer_at_once(self):

            print("get_answer_at_once")

            history,query = self._get_glm_style_input()

            messages = []

            messages.append({'role''user''content': query})

            now = datetime.now()

            print("get_answer_at_once start"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

            response = CHATGLM_MODEL.chat(

                CHATGLM_TOKENIZER, messages)

            now = datetime.now()

            print("get_answer_at_once end"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

            print(f"the response is: {response}")

            return response, len(response)

        def get_answer_stream_iter(self):

            history,query = self._get_glm_style_input()

            messages = []

            messages.append({'role''user''content': query})

            result = ""

            now = datetime.now()

            print("get_answer_stream_iter start"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

            for response in CHATGLM_MODEL.chat(

                CHATGLM_TOKENIZER,

                messages

            ):

                print(f"the response is: {response}")

                result += response

                yield result

            now = datetime.now()

            print("get_answer_stream_iter end"+"++++++++"+ now.strftime("%Y-%m-%d %H:%M:%S"))

  5. 答案回调开关控制get_answer_at_once、get_answer_stream_iter方法调用选择
  6. 执行效果

这篇关于ChuanhuChatGPT集成百川大模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939991

相关文章

适配器模型-c++实现

目前写的最简单的一个设计模式代码 // adapterpattern.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;//接口class Target{public:virtual void Request(){}};//源classclass Adaptee{

模型推导:BG/NBD(预测用户生命周期(CLV)模型)

CLV(Customer Lifetime Value)指的是客户生命周期价值,用以衡量客户在一段时间内对企业有多大的价值。企业对每个用户的流失与否、在未来时间是否会再次购买,还会再购买多少次才会流失等问题感兴趣,本文中的BG/NBD模型就是用来解决这样一系列问题的。 本文的模型数学推理均参考自: https://www.brucehardie.com/notes/039/bgnbd_deriv

避坑指南!RK3588香橙派yolov5生成RKNN模型!

地址1,转换模型 地址2,转换模型 地址3,解决ppa 下载k2 本文目录 一、将.pt模型转为onnx模型文件。(Windows)二、将.onnx模型转为.rknn模型文件。(Linux)三、将.rknn模型部署到开发板RK3588中。(ARM)    一、将.pt模型转为onnx模型文件。(Windows) 前提:下载源码。源码下载地址~ 将models/yol

多媒体视频开发_(28)使用ffmpeg进行深度学习模型计算

1.FFmpeg中基于深度学习模型的图像处理filter:dnn_processing介绍(1) https://blog.csdn.net/yjguo2004/article/details/104983436 2.FFmpeg中基于深度学习模型的图像处理filter:dnn_processing介绍(2) https://blog.csdn.net/yjguo2004/article/deta

AI预测福彩3D采取887定位策略+杀断组+杀和尾+杀和值012缩水测试5月12日预测第1弹

前段时间工作太忙,手头上各种事情较多,没有静下心来对我的AI模型预测结果进行进一步分析筛选,导致最近连续几期与实际开奖结果相差较大。当然,客观来说,搞6码定位的确难度比较大,昨天跟几个常年研究3D的彩友进行了深入交流,大家都说6码定位的难度极大,相当于每位杀4码,目前能做到每位杀2码就已经算是高手了,因此,大家让我转变下策略,可以杀2-3码,如果2-3码稳定的话,可以再结合几个条件

经典多模态大模型

“浅对齐”模型 经典多模态结构BLIP2 Motivation 端到端的进行vision-language预训练成本太大了,之前存在很多预训练好的模型,这篇文章希望能够使用这些训练好的参数,节约成本。 如果直接冻结预训练好的参数,去做下游任务,效果不佳。这是因为图像表征和文本表征是在两个不同的语料利用不同的模型训练出来的,不好对齐。 因此这篇论文提出了一个Query Transfor

ROS2进阶第三章 -- 机器人语音交互之ros集成科大讯飞中文语音库,实现语音控制机器人小车

概述: 上一篇博客:ROS2进阶第二章 – 使用Gazebo构建机器人仿真平台 – 控制差速轮式机器人移动,我们使用gazebo仿真环境创建一个世界,并将上一节制作的机器人加载到仿真环境中,在通过键盘控制节点来控制小车移动,并通过rviz实时察看 camera,kinect和lidar三种传感器的仿真效果。 本文我们将在ros上集成科大讯飞的中文语音库,实现语音控制机器人小车前进后退,左转右转等

AI + Web3 如何打造全新创作者经济模型?

可编程 IP 的兴起,借助人工智能极大提高创作效率和效能,让 Web3 用户体会到了自主创作和产品制作的乐趣。然而,你知道 AI 时代来临的背景下,创作者经济模型又该如何在 Web3 技术的加持下走向更成熟的运作轨道吗?第 43 期 TinTinWeekly 带你解锁技术答案,走向充满潜力和机遇的创作新阶段! 4 月 29 日 20:00 第 43 期 TinTinWeekly

GPT 大型语言模型可视化教程

网址: LLM Visualization 简介 欢迎来到 GPT 大型语言模型演练!在这里,我们将探索只有 85,000 个参数的 nano-gpt 模型。 它的目标很简单:取一个由六个字母组成的序列: C B A B B C 并按字母顺序排列,即 "ABBBCC"。 我们称这些字母为一个标记,模型的不同标记集合构成了它的词汇表: 标记 A B C 索引 0 1 2 在这个

Idea-集成eclipse开发的maven项目

1.新建一个目录存放需要统一管理的maven项目 2、分别进入每个目录,删除如下图文件 3、启动idea,将idea_admin作为workspace的目录(如果之前没有启动项目,那么点open即可) 4、可以看到这个目录已经变成了idea管理的目录了,但是其下的项目并没有当做项目对待。 5、将项目变为idea项目。点击屏幕右侧maven projects按钮 -->点