Mamba项目实战-Ubuntu

注:演示环境需要一个可用的cuda环境,可执行两个命令进行验证

1.nvidia-smi

2.nvcc -V

若出现正确输出,可继续博客以下的操作步骤,否则请确认是否已经安装或已配置环境变量,若未安装则转到博客:深度学习项目GPU开发环境安装-CSDN博客

进行配置安装cuda环境。

1.安装PyTorch

1) 安装Anaconda

Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。

1. 先去官方地址下载好对应的安装包
下载地址:https://www.anaconda.com/download/#linux
2. 然后安装anaconda

bash ~/Downloads/Anaconda3-2023.03-1-Linux-x86_64.sh

anaconda会自动将环境变量添加到PATH里面。
如果后面你发现输入conda提示没有该命令,那么你需要执行命令 source ~/.bashrc 更新环境变量,就
可以正常使用了。
如果发现这样还是没用,那么需要添加环境变量。
编辑~/.bashrc 文件,在最后面加上。

export PATH=/home/bai/anaconda3/bin:$PATH

注意:路径应改为自己机器上的路径
保存退出后执行: source ~/.bashrc
再次输入 conda list 测试看看,应该没有问题。

2) 安装pytorch

首先创建一个anaconda虚拟环境,环境名字可自己确定,这里本人使用mypytorch作为环境名:

conda create -n mypytorch python=3.9


安装成功后激活mypytorch环境:
编辑~/.bashrc 文件,设置使用mypytorch环境下的python3.9

alias python='/home/bai/anaconda3/envs/mypytorch/bin/python3.9'

注意:python路径应改为自己机器上的路径


保存退出后执行: source ~/.bashrc
该命令将自动回到base环境,再执行 conda activate mypytorch 到pytorch环境。
conda退出base环境
配置一下,让它一开始不启动base

conda config --set auto_activate_base false

安装pytorch
在所创建的pytorch环境下安装pytorch版本, 执行命令:

conda install pytorch torchvision cudatoolkit=11.7 -c pytorch


注意:11.7处应为cuda的安装版本号
如果安装不上或者只能安装cpu版本的pytorch, 则可以
手动下载gpu版本的torch和torchversion

  • 下载网址:https://download.pytorch.org/whl/torch_stable.html
  • 文件名是对应的版本号

这里需要下载与torch对应的torchvision版本。
在Anaconda创建的pytorch环境下,使用 cd 指令移动到下载好的上边两个文件目录下,终端输入以下指令:

pip install torch-1.xx.0-cp38-cp38m-linux_x86_64.whl
pip install torchvision-0.xx.0-xxx.xxx-xxx-xxx.whl

我用的指令

pip install torch-1.13.0+cu117.with.pypi.cudnn-cp39-cp39-linux_x86_64.whl
pip install torchvision-0.14.1+cu117-cp39-cp39-linux_x86_64.whl

验证cuda可用性

python
import torch
print(torch.cuda.is_available())

当输出为 True 时,表明 pytorch 安装成功。

2. Mamba项目克隆和安装

1) causal-conv1d安装

pip install causal-conv1d>=1.2.0

一种在Mamba块内部使用的简单因果一维卷积层的高效实现。

2) 克隆Mamba代码

命令行执行下面三条语句

git clone https://github.com/state-spaces/mamba.git
cd mamba
pip install .

3)更改模型权重缓存目录

可以配置Hugging Face库使用一个有更多磁盘空间的不同目录来缓存模型。可以设置环境变量 HF_HOME 到一个有足够空间的新位置。这里是如何做的示例,命令行执行下面两条语句:

export HF_HOME=/home/bai/data
export TOKENIZERS_PARALLELISM=true

export TOKENIZERS_PARALLELISM=true 这条命令主要是在配置环境变量,用于控制并行处理的行为。
在使用某些基于Python的自然语言处理(NLP)库(如 transformers 库)时,这些库会使用多线程来加速任
务。

TOKENIZERS_PARALLELISM 环境变量用来控制在处理数据时是否应启用并行计算的。
设置为 true 表示允许使用并行计算,这样可以在多核CPU上加速数据的处理速度。
反之,如果设置为 false ,则会关闭并行计算,可能因此降低性能。
这个设置通常在你运行涉及大量数据处理的脚本或程序时进行调整,以优化性能和资源使用

4) 执行生成基准测试的脚本

python benchmarks/benchmark_generation_mamba_simple.py --model-name "state-
spaces/mamba-2.8b" --prompt "I had a dream last night and" --topp 0.9 --temperature 0.7
--repetition-penalty 1.2

这行命令是用来执行一个 Python 脚本 benchmark_generation_mamba_simple.py ,该脚本位于 benchmarks
文件夹下。
这个脚本的目的是对 state-spaces/mamba-2.8b 这个模型进行文本生成的性能测试。

脚本和参数解释

脚本路径:

  • benchmarks/benchmark_generation_mamba_simple.py :指的是运行位于 benchmarks 文件夹下的 benchmark_generation_mamba_simple.py 脚本。

参数:

  • --model-name "state-spaces/mamba-2.8b" :指定使用的模型名称为 "state-spaces/mamba-2.8b"。这通常表示模型存储在某个模型库或本地目录中。
  • --prompt "I had a dream last night and" :设置生成文本的起始提示。这里的提示是 "I had a dream last night and",模型将基于此开始生成文本。
  • --topp 0.9 :使用概率截断抽样(Top-p sampling),0.9 的值意味着从累计概率分布中选择最可能的最小集合,这些集合的累计概率至少为 0.9。这是一种控制生成文本随机性的方法。
  • --temperature 0.7 :设置采样温度为 0.7。温度用于调节概率分布的平滑程度,较低的温度(小于1)会使输出更确定性,较高的温度则使输出更随机。
  • --repetition-penalty 1.2 :设置重复惩罚为 1.2。这是一种减少生成文本中重复内容的技术,通过惩罚已经生成的词或短语的分数来实现。

Loading model state-spaces/mamba-2.8b
Special tokens have been added in the vocabulary, make sure the associated word
embeddings are fine-tuned or trained.
Number of parameters: 2768345600
['I had a dream last night and I was in the middle of it, but then my mind went blank.
It\'s like when you\'re asleep or dreaming that something happens to your body while
everything else is still there."\n\n"That sounds familiar," said Trey with an amused
smile on his face as he looked at me from across our table where we were sitting
together for breakfast one morning after school before going home early because Mom
needed help around her house again today since she\'d been so busy lately working extra
hours trying desperately not']
Prompt length: 7, generation length: 100
state-spaces/mamba-2.8b prompt processing + decoding time: 1816ms

这里是对输出内容的详细解析:
1. 加载模型:

  • Loading model state-spaces/mamba-2.8b :表明正在加载命名为 "state-spaces/mamba-2.8b"的模型,这是一个预训练的语言模型,通常用于处理复杂的文本生成任务。

2. 特殊标记警告:

  • Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained. :这表示在模型的词汇表中添加了特殊标记。确保这些特殊标记的词嵌入已经被适当地训练或微调,这对于模型正确理解和处理这些标记至关重要。

3. 模型参数:

  • Number of parameters: 2768345600 :模型有大约27.68亿个参数,这说明该模型具有高度的复杂性和学习能力,能够捕捉丰富的语言特征。

4. 生成文本:

  • 输出的文本片段是对您提供的提示 "I had a dream last night and" 的回应。生成的内容是一个描述性的场景,涉及主人公在梦中体验到思维空白,随后与朋友Trey在一起早餐时讨论这种感觉。这显示了模型在生成具有情境相关性和连贯性的文本方面的能力。

5. 提示长度和生成长度:

  • Prompt length: 7, generation length: 100 :初始提示长度为7个单词,模型生成了100个单词的文本,这显示了模型在接受初始输入并扩展成更长叙述方面的效率。

6. 处理和解码时间:

  • state-spaces/mamba-2.8b prompt processing + decoding time: 1816ms :模型处理输入并生成响应的总时间为1816毫秒(约1.816秒)。这提供了模型响应速度的一个基准,有助于评估其在需要快速反应的应用场景中的适用性。

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

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

相关文章

mac安装达梦数据库

参考:mac安装达梦数据库​​​​​​ 实践如下: 1、下载达梦Docker镜像文件 同参考链接 2、导入镜像 镜像可以随便放在某个目录,相当于安装包,导入后就没有作用了。 查找达梦镜像名称:dm8_20240613_rev229704_x86…

第1章 人工智能的基础概念与应用导论

亲爱的读者朋友们,你们好!欢迎来到这个充满神奇与奥秘的人工智能世界。我知道,对于很多人来说,人工智能(AI)可能是个既神秘又高大上的词汇,仿佛遥不可及,只存在于科幻电影或者顶级科…

Figma-ui设计学习APP Store

Figma汉化:Figma 中文社区_插件组件库,软件汉化教程 - Figma.Cool 选择Chorme汉化版离线包 插件安装: 打开浏览器安装扩展,解压加载进去即可。 打开标尺,设置左右内边距参考线(左21 右356),wi…

Java使用分布式实现数据库读写分离

配置主从复制:在MySQL中,可以通过配置主从复制来实现数据同步。将一个节点作为主节点(Master),其他节点作为从节点(Slave)。当主节点上的数据发生变化时,自动将变更内容同步到所有从…

JS面试题6——深拷贝和浅拷贝

它们都是用来复制的 1. 浅拷贝(只复制引用,而未复制真正的值) /* 简单赋值 */ var arr1 [a, b, c, d]; var arr2 arr1; /* Object.assign实现的也是浅拷贝 */ var obj1 {a:1, b:2} var obj2 Object.assign(obj1); 2. 深拷贝(是…

C++ 预处理器定义

目录 一、什么是预处理器定义 二、常见用法 1. 条件编译 2. 宏定义 3. 防止重复包含 4. 动态链接库的导入导出 5、如何设置预处理器定义 一、什么是预处理器定义 预处理器定义(Preprocessor Definitions)在C和C编程中用于在编译过程中进行文本替换…

华为OCR识别技术 [C#]

了解华为OCR识别技术 光学字符识别(OCR,Optical Character Recognition)是一种将印刷或手写的文本字符转换为机器可读文本的技术。华为的OCR技术在业界以其高精度和高效率而著称,广泛应用于金融、教育、政府等多个领域。 OCR技术…

hive explain分析Hsql详解

Hive explain HIVE提供了EXPLAIN命令来展示一个查询的执行计划,可以帮助我们查看stage的依赖情况、排查数据倾斜、hive 调优等 使用语法如下: EXPLAIN [EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] query explain 后面可以…

【postgresql】版本学习

PostgreSQL 17 Beta 2 发布于2024-06-27。 PostgreSQL 17 Beta 2功能和变更功能的完整列表:PostgreSQL: Documentation: 17: E.1. Release 17 ​ 支持的版本: 16 ( 当前版本) / 15 / 14 / 13 / 12 ​ 不支持的版本: 11 / 10 / 9.6 / 9.5 /…

Symfony框架实战入门:打造简易博客应用全过程解析

Symfony框架详解 一、引言 随着Web应用的复杂度不断提升,开发者们越来越需要高效、可扩展和易于维护的框架来支持他们的工作。Symfony就是这样一款优秀的PHP框架,它基于MVC(模型-视图-控制器)设计模式,提供了许多强大…

探索工业AI智能摄像机的高端科技

在当今快速发展的工业智能化领域,工业AI智能摄像机系列以其卓越的性能和多功能性在国内外备受关注(文末有国外工程师的评测链接)。搭载Raspberry Pi CM4支持的旨在广泛应用,涵盖从简单的条形码扫描到基于人工智能的工业环境中的缺…

7.1.SQL注入-基于函数报错的方式来利用updatexml()

基于函数报错的方式来进行利用-字符型(本页updatexml()) 前提条件是后台数据库没有屏蔽数据库语法报错信息 updatexml()方法详解 注释: 第一个参数,意思就是xml文档的名称 第二个参数,意思就是定位到xml文档中指定…

OFDM关键技术——ICI消除技术

ICI消除算法可以分为以下几类: 1、OFDM符号长度和载波间隔的最优选择,较短的符号周期更有利于降低ICI 2、OFDM基信号的最佳选择,选择频域衰减更快的OFDM基带脉冲 3、自干扰消除技术,将信息调制到一组子载波上 4、频域均衡器&a…

认识100种电路之耦合电路

在电子电路的世界中,耦合电路宛如一座精巧的桥梁,连接着各个功能模块,发挥着至关重要的作用。 【为什么电路需要耦合】 在复杂的电子系统中,不同的电路模块往往需要协同工作,以实现特定的功能。然而,这些模…

网络爬虫(二) 哔哩哔哩热榜高频词按照图片形状排列

我们有时候需要爬取结果生成为自定义的词云图 生成自定义的词云图通常需要以下步骤: 1. 爬取数据:使用爬虫工具或库,如requests、BeautifulSoup等,可以爬取网页、论坛、社交媒体等平台上的文本数据。 2. 数据预处理&#xff1a…

uniapp微信小程序电子签名

先上效果图,不满意可以直接关闭这页签 新建成单独的组件,然后具体功能引入,具体功能点击签名按钮,把当前功能页面用样式隐藏掉,v-show和v-if也行,然后再把这个组件显示出来。 【签名-撤销】原理是之前绘画时…

AI影像测量:开启测量仪器的智能之眼

在基于机器视觉的影像测量中,一些复杂特征传统测量需要人工手动选点测量,不仅易受到人为因素的干扰,而且极大的降低测量效率,提高了人力成本和生产成本。AI影像测量技术运用先进的机器视觉和深度学习算法,可快速、准确…

【JVM】JVM 内存结构

程序计数器 Cpu 要不停的切换执行线程,所以在切换回同一个线程的时候要知道程序执行到哪了,程序计数器(PC 计数器),用来存储指向下一条指令的地址,也就是将要执行的代码。 程序的分支、循环、跳转、异常处…

解决for循环效率慢的关键在于向量化

在探讨如何通过使用向量化来提升for循环的效率之前,我们需要先理解为什么传统的for循环在某些情况下会成为性能瓶颈,并深入剖析向量化的基本原理和优势。随后,我们将详细阐述向量化如何在实际编程中应用,并对比向量化前后的性能差…

QuickBooks 2024 for Mac:财务智慧,触手可及

QuickBooks 2024 for Mac是一款专为Mac用户设计的专业财务管理软件,它集成了多种实用功能,助力企业和个人用户高效管理财务事务。 📊 全面的财务管理工具:QuickBooks 2024 for Mac 提供了一套全面的财务管理功能,包括…