计算百川大模型的输出token

2024-01-03 20:04

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

代码比较简单,记录一下免得以后要再copy一次。

首先需要在modeling_baichuan.py的BaichuanForCausalLM类中添加get_outputs函数

    def get_outputs(self, tokenizer, messages: List[dict], stream=False,generation_config: Optional[GenerationConfig]=None):generation_config = generation_config or self.generation_configinput_ids = build_chat_input(self, tokenizer, messages, generation_config.max_new_tokens)outputs = self.generate(input_ids, generation_config=generation_config)return outputs

然后运行下面的代码计算,注意,因为我显卡空间不够,所以是半精度运行。

import os
import torch
import platform
from colorama import Fore, Style
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation.utils import GenerationConfig
import timeprint("init model ...")
model = AutoModelForCausalLM.from_pretrained("/home/Datasets/large_models/all_pt_model/baichuan2_13b_20240102",torch_dtype=torch.float16,device_map="auto",trust_remote_code=True
)model.generation_config = GenerationConfig.from_pretrained("/home/Datasets/large_models/all_pt_model/baichuan2_13b_20240102"
)
tokenizer = AutoTokenizer.from_pretrained("/home/Datasets/large_models/all_pt_model/baichuan2_13b_20240102",use_fast=False,trust_remote_code=True
)messages = []
outs = []
generate_tokens = []
query = ["怎么创建线程", "什么是信号量,给我创建信号量的示例", "发送邮件的示例", "如何查找设备", "你好,介绍一下自己,要一千字", "给我一个创建线程的代码示例", "详细介绍一下rt-thread", "rt-thread的历史发展", "创建设备的代码示例", ]for q in query:messages = [{"role": "user", "content": q}]t1 = time.time()outputs = model.get_outputs(tokenizer, messages)t2 = time.time()outs.append(outputs)generate_tokens.append(len(outputs[0]) / (t2 - t1))print(generate_tokens)print(sum(generate_tokens)/len(generate_tokens))

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



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

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应