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.mfbz.cn/a/763552.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎样使用js技术实现Chrome投屏功能?

在Web前端技术中,直接控制浏览器窗口或标签页从主屏投屏到副屏(如PPT的演讲者模式)并不简单,而且直接控制浏览器窗口从主屏投屏到副屏的功能超出了Web标准的范畴,并且涉及到用户系统级别的设置和权限,因此不…

正确认识手机NFC,安全无风险

在数字化生活日益普及的今天,NFC(近场通信)技术以其独特的便捷性和高效性,逐渐成为了我们日常生活中不可或缺的一部分。然而,面对新技术的崛起,总有一些用户对于其安全性心存疑虑,尤其是关于“N…

(一)Docker基本介绍

部署项目的发展 传统部署适合需要最大性能和可靠性的场景,但在资源利用和管理方面有显著劣势。虚拟化部署提供了良好的资源利用率和隔离性,适用于需要灵活扩展和多租户环境的场景,但存在性能开销。容器部署在轻量级、可移植性和资源利用率方面…

JVM线上监控环境搭建Grafana+Prometheus+Micrometer

架构图 一: SpringBoot自带监控Actuator SpringBoot自带监控功能Actuator&#xff0c;可以帮助实现对程序内部运行情况监控&#xff0c;比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。 使用步骤&#xff1a; 1. 导入依赖坐标 <dependency><…

Omni3D目标检测

Omni3D是一个针对现实场景中的3D目标检测而构建的大型基准和模型体系。该项目旨在推动从单一图像中识别3D场景和物体的能力&#xff0c;这对于计算机视觉领域而言是一个长期的研究目标&#xff0c;并且在机器人、增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&a…

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

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

PriorityQueue底层你了解多少?(带你彻底掌握优先级队列)

1. 概念 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然不合适&#xff0c;比如:在手机上玩游戏的时…

[图解]SysML和EA建模住宅安全系统-05-参数图

1 00:00:01,140 --> 00:00:03,060 这是实数没错&#xff0c;这是分钟 2 00:00:03,750 --> 00:00:07,490 但是你在这里选&#xff0c;选不了的 3 00:00:07,500 --> 00:00:09,930 因为它这里不能够有那个 4 00:00:11,990 --> 00:00:13,850 但是我们前面这里 5 00…

D - Intersecting Intervals(abc355)

题意&#xff1a;有n个区间&#xff0c;找出俩俩区间相交的个数 分析&#xff1a; 设初始俩俩相交&#xff0c;找出不相交的&#xff08;不同区间l>r)&#xff0c;减去即可 #include<bits/stdc.h> using namespace std; typedef long long ll; int main(){ ios:…

大力出奇迹:大语言模型的崛起与挑战

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;特别是在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的出现与应用&#xff0c;彻底改变了我们与机器互动的方式。本文将探讨ChatGPT等大语言模型的定义、…

Hive-存储-文件格式

一、前言 数据存储是Hive的基础&#xff0c;选择合适的底层数据存储格式&#xff0c;可以在不改变Hql的前提下得到大的性能提升。类似mysql选择适合场景的存储引擎。 Hive支持的存储格式有 文本格式&#xff08;TextFile&#xff09; 二进制序列化文件 &#xff08;SequenceF…

期末复习---程序填空

注意&#xff1a; 1.数组后移 *p *(p-1) //把前一个数赋值到后一个数的位置上来覆盖后一个数 2.指针找最大字符 max *p while( *p){ if( max< *p) { max*p; qp;/ 用新的指针指向这个已经找到的最大位置&#xff1b;!!!!!!!!! } p; //因为开始没有next &#xff…

Fragment+Viewpage2+FragmentStateAdapter实现滑动式标签布局

大家好&#xff0c;我是网创有方&#xff0c;今天记录下标签布局的实现方法&#xff0c;先看下效果图。 第一步&#xff1a;编写一个activity或者fragment。内含有一个viewpager2的适配器&#xff0c;适配器类型为FragmentStateAdapter。 ​ public class MediaCreateFragment…

计算机图形学入门22:双向反射分布函数(BRDF)

1.定义 所谓BRDF&#xff08;Bidirectional Reflectance Distribution Function&#xff0c;双向反射分布函数&#xff09;&#xff0c;指的是从辐射度量学的角度去理解光线的反射&#xff0c;如下图所示。 所谓反射就是一个点从ωi方向发出的Radiance转化为dA接收到的功率E&am…

在jeesite框架中增加一个收藏夹功能-- V1.0版本

Jeesite简介&#xff1a;JeeSite 快速开发平台&#xff0c;不仅仅是一个后台开发框架&#xff0c;它是一个企业级快速开发解决方案&#xff0c;提供在线数据源管理、数据表建模、代码生成等功能。 正文&#xff1a;Jeesite是一个方便实用&#xff0c;适合敏捷开发&#xff0c;提…

openmetadata1.3.1 自定义连接器 开发教程

openmetadata自定义连接器开发教程 一、开发通用自定义连接器教程 官网教程链接&#xff1a; 1.https://docs.open-metadata.org/v1.3.x/connectors/custom-connectors 2.https://github.com/open-metadata/openmetadata-demo/tree/main/custom-connector &#xff08;一&…

Webpack: 其他性能优化

概述 前面章节我们已经详细探讨 Webpack 中如何使用分包、代码压缩提升应用执行性能。除此之外&#xff0c;还有不少普适、细碎的方法&#xff0c;能够有效降低应用体积&#xff0c;提升网络分发性能&#xff0c;包括&#xff1a; 使用动态加载&#xff0c;减少首屏资源加载量&…

Adobe Photoshop 2024 v25.5.1 中文激活版下载以及安装方法教程

软件介绍 Adobe Photoshop 2024 v25.5.1 是Adobe公司的最新版图像处理软件&#xff0c;它提供了强大的图像编辑工具和智能自动化功能&#xff0c;包括图像修复、色彩校正和滤镜效果&#xff0c;以满足专业人士和业余爱好者的需求。这款软件还支持矢量图形设计和实时协作&#…

一维信号短时傅里叶变换域邻域降噪方法(MATLAB)

噪声在人类日常生活中无处不在,其会降低语音信号的质量和可懂度。在低信噪比的恶劣环境中,这种负面影响愈发严重。为了解决这个问题,众多研究人员在过去的几十年里提出了许多降噪算法。 根据原理的不同,降噪算法可大致分为五类:谱减法、最优滤波法、基于统计模型的方法、子空间…

Java案例打印乘法口诀表,三角形

目录 一问题&#xff1a; ​编辑二代码&#xff1a; 三运行结果&#xff1a; 四问题 二代码&#xff1a; 三运行结果&#xff1a; 一问题&#xff1a; 二代码&#xff1a; package 重修;import java.util.Random; import java.util.Scanner;public class first {public …