在Colab上测试Mamba

我们在前面的文章介绍了研究人员推出了一种挑战Transformer的新架构Mamba

他们的研究表明,Mamba是一种状态空间模型(SSM),在不同的模式(如语言、音频和时间序列)中表现出卓越的性能。为了说明这一点,研究人员使用Mamba-3B模型进行了语言建模实验。该模型超越了基于相同大小的Transformer的其他模型,并且在预训练和下游评估期间,它的表现与大小为其两倍的Transformer模型一样好。

Mamba的独特之处在于它的快速处理能力,选择性SSM层,以及受FlashAttention启发的硬件友好设计。这些特点使Mamba超越Transformer(Transformer没有了传统的注意力和MLP块)。

有很多人希望自己测试Mamba的效果,所以本文整理了一个能够在Colab上完整运行Mamba代码,代码中还使用了Mamba官方的3B模型来进行实际运行测试。

首先我们安装依赖,这是官网介绍的:

 !pip install causal-conv1d==1.0.0!pip install mamba-ssm==1.0.1

然后直接使用transformers库读取预训练的Mamba-3B

 import torchimport osfrom transformers import AutoTokenizerfrom mamba_ssm.models.mixer_seq_simple import MambaLMHeadModeltokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neox-20b")model = MambaLMHeadModel.from_pretrained(os.path.expanduser("state-spaces/mamba-2.8b"), device="cuda", dtype=torch.bfloat16)

可以看到,3b的模型有11G

然后就是测试生成内容

 tokens = tokenizer("What is the meaning of life", return_tensors="pt")input_ids = tokens.input_ids.to(device="cuda")max_length = input_ids.shape[1] + 80fn = lambda: model.generate(input_ids=input_ids, max_length=max_length, cg=True,return_dict_in_generate=True, output_scores=True,enable_timing=False, temperature=0.1, top_k=10, top_p=0.1,)out = fn()print(tokenizer.decode(out[0][0]))

这里还有一个chat的示例

 import torchfrom transformers import AutoTokenizerfrom mamba_ssm.models.mixer_seq_simple import MambaLMHeadModeldevice = "cuda"tokenizer = AutoTokenizer.from_pretrained("havenhq/mamba-chat")tokenizer.eos_token = "<|endoftext|>"tokenizer.pad_token = tokenizer.eos_tokentokenizer.chat_template = AutoTokenizer.from_pretrained("HuggingFaceH4/zephyr-7b-beta").chat_templatemodel = MambaLMHeadModel.from_pretrained("havenhq/mamba-chat", device="cuda", dtype=torch.float16)messages = []user_message = """What is the date for announcementOn August 10 said that its arm JSW Neo Energy has agreed to buy a portfolio of 1753 mega watt renewable energy generation capacity from Mytrah Energy India Pvt Ltd for Rs 10,530 crore."""messages.append(dict(role="user",content=user_message))input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to("cuda")out = model.generate(input_ids=input_ids, max_length=2000, temperature=0.9, top_p=0.7, eos_token_id=tokenizer.eos_token_id)decoded = tokenizer.batch_decode(out)messages.append(dict(role="assistant",content=decoded[0].split("<|assistant|>\n")[-1]))print("Model:", decoded[0].split("<|assistant|>\n")[-1])

这里我将所有代码整理成了Colab Notebook,有兴趣的可以直接使用:

https://avoid.overfit.cn/post/ed2d2cc2460d4e0683a270e2761e10ea

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

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

相关文章

Oladance、南卡、Cleer开放式耳机怎么样?全方位测评大PK!

​开放式耳机作为新兴的音频设备领域中备受欢迎的选择&#xff0c;但市场上琳琅满目的产品汇集了质量千差万别的耳机&#xff0c;其中存在着一些粗制滥造的产品。身为一位音频设备测评博主&#xff0c;我经常收到有关哪个品牌的开放式耳机质量好的疑问。面对市面上众多选择&…

MFC结合GDI+

MFC结合GDI 创建一个空的MFC界面&#xff0c;在确定按钮函数里进行画图&#xff1a; 1、包含头文件与库 在stdafx.h中加入以下三行代码&#xff1a; #include "gdiplus.h" using namespace Gdiplus; #pragma comment(lib, "gdiplus.lib")2、安装GDI 在…

常州ipad签约 电子签约 战略签约 启动签约

ipad电子签约、签约上墙、多人签约、电子签约、签约仪式、签约软件、签军令状、签字上屏、屏幕签字等&#xff0c;并且本公司ipad签约可以实现 甲方对应N个乙方签约系统对多人&#xff1a;是指只有一个甲方&#xff0c;多个第三方。甲方只要签名一次就可以自动帖加指定的位置 …

基于Flask的高并发部署方案

在AI部署方案中,Flask是最常用的方案!本文列举几种最常用基于Flask的部署方案。 Flask方案 简介 Flask 是一个轻量级的 Python Web 框架,它非常适合构建小型到中型的应用程序。下面是对 Flask 的详细解释和简单示例: Flask 的特点: 轻量级:相比于 Django,Flask 更轻…

uni-app做A-Z排序通讯录、索引列表

上图是效果图&#xff0c;三个问题 访问电话通讯录&#xff0c;拿数据拿到用户的联系人数组对象&#xff0c;之后根据A-Z排序根据字母索引快速搜索 首先说数据怎么拿 - 社区有指导https://ask.dcloud.net.cn/question/64117 uniapp 调取通讯录 // #ifdef APP-PLUSplus.contac…

安谋科技“周易”NPU与飞桨完成II级兼容性测试,助力实现多样化AI部署

近日&#xff0c;安谋科技&#xff08;中国&#xff09;有限公司&#xff08;以下简称“安谋科技”&#xff09;“周易”NPU系列IP与飞桨已完成II级兼容性测试&#xff0c;测试结果显示&#xff0c;双方兼容性表现良好&#xff0c;整体运行稳定。这是安谋科技加入“硬件生态共创…

个人装机记录

配置单&#xff1a; CPU&#xff1a;13900K 主板&#xff1a;z790-a 吹雪 D5 显卡&#xff1a;华硕 tuf 4090 固态&#xff1a;三星990 pro 2TB 2 内存&#xff1a;金士顿 fury d5 6000频 32G2 散热&#xff1a;龙神三代360 电源&#xff1a;tuf 1200W 机箱&#xff1a;tuf 502…

【Node.js学习 day3——http模块】

创建HTTP服务端 //1.导入http模块 const http require(http);//2.创建服务对象 const server http.createServer((request, response) > {response.end(Hello HTTP Server);//设置响应体 });//3.监听端口&#xff0c;启动服务 server.listen(9000,()>{console.log(服务…

IMS中如何区分initial INVITE和re-INVITE?

这里就要先看下Dialog的定义。 dialog是两个UA之间持续一段时间的点对点 SIP关系。dialog通过SIP消息建立&#xff0c;例如对 INVITE request的 2xx response。dialog由Call-ID、local tag和remote tag来区分&#xff0c;也就是Call-ID 、from-tag和to-tag就可以确定一个dialog…

java锁的分类

锁定义和特征 乐观锁 VS 悲观锁 区别 乐观锁不会添加锁&#xff0c;无锁算法&#xff0c;没有线程被阻塞。悲观锁拿到资源就加锁&#xff0c;线程被阻塞。 乐观锁&#xff1a;CAS算法 Compare-And-Swap&#xff08;比较并交换&#xff09;的缩写,轻量级锁。 Java中&#xff…

力扣(leetcode)第551题学生出勤记录I(Python)

551.学生出勤记录I 题目链接&#xff1a;551.学生出勤记录I 给你一个字符串 s 表示一个学生的出勤记录&#xff0c;其中的每个字符用来标记当天的出勤情况&#xff08;缺勤、迟到、到场&#xff09;。记录中只含下面三种字符&#xff1a; ‘A’&#xff1a;Absent&#xff0…

数字档案安全与高效管理的先锋——亚信安慧AntDB数据库

档案工作在维护历史真实面貌、保障人民利益方面具有至关重要的作用。随着社会的发展&#xff0c;数字化转型成为档案管理领域的不可逆趋势。数字档案的存储和传输已经成为档案工作的重要组成部分&#xff0c;然而&#xff0c;这也伴随着一系列的挑战&#xff0c;其中安全风险是…

【MATLAB】逐次变分模态分解SVMD信号分解算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 1 基本定义 逐次变分模态分解&#xff08;Sequential Variational Mode Decomposition&#xff0c;简称SVMD&#xff09;是一种用于信号处理和数据分析的方法。它可以将复杂的信号分解为一系列模态函数&#xff0c;每个…

Java中继承的认识

继承是Java编程语言的三大特征之一&#xff08;就是一个很重要的东西&#xff09;。 想一下我们生活中的继承&#xff0c;比如说张三全部继承了他父亲的留下的50万资产&#xff0c;那张三的资产一定比他的父亲多&#xff08;假设张三打工多年&#xff0c;自己存了100万&#x…

QtService、托盘程序使用

1、QtService 使用QtService实现Qt后台服务程序 用QT创建一个Windows Service以及踩到的若干坑 2、托盘程序 Qt之程序最小化托盘显示及操作 Qt系统托盘程序的实现

【第33例】IPD体系进阶:市场细分

目录 内容简介 市场细分原因 市场细分主要活动 市场细分流程 作者简介 内容简介 这节内容主要来谈谈 IPD 市场管理篇的市场细分步骤。 其中,市场管理(Market Management)是一套系统的方法。 用于对广泛的机会进行选择性收缩,

Excel删除重复项?4个方法帮你提升效率!

“我在使用Excel处理一些数据时&#xff0c;突然发现有好多重复的项&#xff0c;我想将这些重复的项都删除&#xff0c;有什么快速又简单的操作方法吗&#xff1f;” 在日常的办公中&#xff0c;很多用户都会使用Excel。借助这款软件&#xff0c;用户可以完成对各种数据的处理。…

c++全排列

目录 next_permutation()函数 例 perv_permutation()函数 例 next_permutation()函数 next_pernutation()函数用于生成当前序列的下一个排序。它按照字典序对序列进行重新排序&#xff0c;如果存在下一个排列&#xff0c;则将当前序列更改为下一个排列&#xff0c;并返回t…

【平稳性检验】ADF检验原理及其MATLAB实现

ADF检验原理及其MATLAB实现 1 概述1.1 ADF检验的原理2 MATLAB函数3 案例参考1 概述 ADF检验(Augmented Dickey-Fuller test),也叫做单位根检验。顾名思义,ADF是 Dickey-Fuller检验(DF检验)的增广形式。DF检验只能应用于一阶情况,当序列存在高阶的滞后相关时,可以使用A…