【通意千问】大模型GitHub开源工程学习笔记(1)

9月25日,阿里云开源通义千问140亿参数模型Qwen-14B及其对话模型Qwen-14B-Chat,免费可商用。

立马就到了GitHub去fork。

GitHub:

GitHub - QwenLM/Qwen: The official repo of Qwen (通义千问) chat & pretrained large language model proposed by Alibaba Cloud.

官方的技术资料也下载了,看这里==>https://qianwen-res.oss-cn-beijing.aliyuncs.com/QWEN_TECHNICAL_REPORT.pdf

 这个模型的表现怎么样?

Qwen-14B和Qwen-7B模型相比同规模模型表现更好,其能力包括自然语言理解、知识、数学计算和推理、代码生成、逻辑推理等。虽然Qwen-14B仍与GPT-3.5和GPT-4有差距,但表现不俗。实验结果见表格,更多细节请查看技术备忘录:https://qianwen-res.oss-cn-beijing.aliyuncs.com/QWEN_TECHNICAL_REPORT.pdf。

 

学习或调试大模型需要【安装哪些软件】? 

  • python 3.8及以上版本
  • pytorch 1.12及以上版本,推荐2.0及以上版本
  • 建议使用CUDA 11.4及以上(GPU用户、flash-attention用户等需考虑此选项)

【安装pytorch】 传送门==>pytorch 下载安装全流程详细教程_pytorch官网下载教程_Deep Learning小舟的博客-CSDN博客

该装的都装好了?好的,上车吧!

快!快告诉我【如何使用】大模型!

提供简单的示例来说明如何利用🤖 ModelScope和🤗 Transformers快速使用Qwen-7B和Qwen-7B-Chat。

ModelScope是一个开源平台,允许用户在生产中可视化、监视和分析机器学习模型。

看这里==>https://github.com/modelscope/modelscope

依赖库的安装 

看看都需要安装哪些依赖库。在工程中有一个文件叫做requirements.txt,打开

【transformers】

Transformers提供API和工具,方便下载和训练最先进的预训练模型。使用预训练模型可以降低计算成本、碳足迹,并节省训练模型所需的时间和资源。这些模型支持不同类型的常见任务,例如:

📝 自然语言处理:文本分类、命名实体识别、问答、语言建模、摘要、翻译、多项选择和文本生成。
🖼️ 计算机视觉:图像分类、目标检测和分割。
🗣️ 音频:自动语音识别和音频分类。
🐙 多模态:表格问答、光学字符识别、从扫描文档中提取信息、视频分类和视觉问答。

传送门==>https://huggingface.co/docs/transformers/index

【accelerate】

Accelerate是一个库,通过添加仅四行代码,使得相同的PyTorch代码可以在任何分布式配置下运行!简而言之,实现规模化的训练和推理变得简单、高效和适应性强。

传送门==>https://huggingface.co/docs/accelerate/index

【tiktoken 】

tiktoken是一个快速的BPE分词器,可与OpenAI的模型配合使用。

传送门==>https://github.com/openai/tiktoken

【einops 】

灵活强大的张量操作,使代码易读且可靠。支持numpy、pytorch、tensorflow、jax等多种框架。

传送门==>einops · PyPI 

【transformers-stream-generator】

这是一种基于Huggingface/Transformers的文本生成方法,它返回一个生成器,在推理期间实时流出每个标记。

传送门==>transformers-stream-generator · PyPI

【scipy】

SciPy提供了用于优化、积分、插值、特征值问题、代数方程、微分方程、统计学和许多其他类别问题的算法。

传送门==>SciPy

 【安装以上依赖库】,打开cmd,cd到工程目录路径下,输入如下命令行代码

pip install -r requirements.txt

安装flash-attention(可选)

什么是flash-attention?

我们看看论文的摘要==>https://arxiv.org/abs/2205.14135

在处理长序列时,Transformer模型既慢又占用大量内存,因为自注意力机制的时间和内存复杂度都与序列长度呈二次关系。近似注意力方法试图通过牺牲模型质量来降低计算复杂度以解决这个问题,但通常并不能实现实际的速度提升。我们认为,缺少的原则是使注意力算法具有IO意识--考虑到GPU内存各级之间的读写。我们提出了FlashAttention,这是一种IO意识的精确注意力算法,它使用切块技术来减少GPU高带宽内存(HBM)和GPU片上SRAM之间的内存读写次数。我们分析了FlashAttention的IO复杂性,结果显示,它比标准注意力机制需要更少的HBM访问,并且对于一定范围的SRAM大小是最优的。我们还将FlashAttention扩展到了块稀疏注意力,从而得到了一种比现有任何近似注意力方法都更快的近似注意力算法。FlashAttention比现有基线训练Transformer更快:与MLPerf 1.1训练速度记录相比,在BERT-large(序列长度512)上实现了15%的端到端实际速度提升,在GPT-2(序列长度1K)上实现了3倍的速度提升,在长距离竞技场(序列长度1K-4K)上实现了2.4倍的速度提升。FlashAttention和块稀疏FlashAttention使Transformer能够处理更长的上下文,从而产生更高质量的模型(在GPT-2上提高了0.7的困惑度,在长文档分类上提高了6.4个百分点)并且具有全新的能力:它是首个在Path-X挑战(序列长度16K,准确率61.4%)和Path-256(序列长度64K,准确率63.1%)上实现超过偶然性表现的Transformer。

什么是注意力算法?

 自注意机制:一种允许神经网络根据它们相互关联的重要性来权衡输入序列的不同部分的机制,而不依赖于固定的窗口大小或卷积操作。

那么注意力算法就是...

近似注意力方法:旨在通过近似注意力权重来减少Transformer模型中自注意力机制的计算和内存需求的方法。

(姑且认为自己懂了吧 )

如果你的显卡支持fp16或bf16精度,我们还推荐安装flash-attention来提高你的运行效率以及降低显存占用。(flash-attention只是可选项,不安装也可正常运行该项目)

显卡支持 fp16 或 bf16 精度

其中 fp16 是指半精度浮点数,它的存储空间只有单精度浮点数的一半,但表示的数值范围和精度较小;bf16 是指bfloat16,它是一种浮点数格式,它可以在减少数据大小的同时保留可用于深度学习等任务的有效位数。这些精度通常用于深度学习等应用,可以提高计算效率和降低内存占用。

安装指令如下

git clone -b v1.0.8 https://github.com/Dao-AILab/flash-attention
cd flash-attention && pip install .
# 下方安装可选,安装可能比较缓慢。
# pip install csrc/layer_norm
# pip install csrc/rotary

安装问题:在使用pip install . 进行安装时,提示“RuntimeError: flash_attn was requested, but nvcc was not found.  Are you sure your environment has nvcc available?  If you're installing within a container from https://hub.docker.com/r/pytorch/pytorch, only images whose names contain 'devel' will provide nvcc.”

nvcc是什么东东?

`nvcc` 是 NVIDIA CUDA 编译器的命令行工具。CUDA 是一种由 NVIDIA 开发的并行计算平台和应用程序编程接口,用于利用 NVIDIA GPU(图形处理单元)的计算能力来加速各种计算任务,特别是科学计算和深度学习等高性能计算任务。

`nvcc` 允许开发者编译和构建使用 CUDA 编写的程序。它可以处理包含 CUDA C/C++ 代码的源文件,并将其编译成可以在 NVIDIA GPU 上运行的可执行文件。CUDA C/C++ 是一种扩展了标准 C/C++ 语言的编程语言,允许开发者编写能够在 GPU 上并行执行的代码。

使用 `nvcc`,开发者可以指定编译器选项、链接库和其他配置来构建 CUDA 程序。这使得开发者能够充分利用 GPU 的并行性能,加速各种计算任务,包括图形处理、科学计算、深度学习神经网络训练等。

通常,开发者会在命令行中使用 `nvcc` 来编译和构建他们的 CUDA 项目,类似于以下方式:

```
nvcc my_cuda_program.cu -o my_cuda_executable
```

这将把名为 `my_cuda_program.cu` 的 CUDA 源文件编译成一个名为 `my_cuda_executable` 的可执行文件,该文件可以在支持 CUDA 的 NVIDIA GPU 上运行。

 难道我没有正确安装cuda?

打开命令行,输入''nvidia-smi''

明明显示我的CUDA版本12.1啊(其实,这是系统支持的CUDA版本,不代表你已经安装了CUDA Toolkit)

再在命令行中输入“nvcc --v”,回车!

 提示“nvcc”不是内部或外部命令也不是可运行的程序或批处理文件

那就是没有安装CUDA Toolkit

【如何安装CUDA】传送门==>CUDA安装教程(超详细)_Billie使劲学的博客-CSDN博客

 安装完成!

 然后,接着在flash-attention路径下通过“pip install .”来安装

完成后通过“pip list”产看是否安装成功!(列表中有【flash-attn】,版本为【1.0.8】,表示安装成功了)

至此,我们安装了所有使用模型所需的依赖库和软件,接下来,可以正式上车了么?(to be continued)

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

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

相关文章

在vue使用wangEditor(简单使用)

wangEditor不同的版本使用方法都不一样,这里以目前最新的参考官网方法使用2023-09-28 首先安装,参考官网,注意editor跟editor-for-vue两个都要装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --saveyarn add wangedit…

【Linux指令集】---git命令的基本使用

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【Linux专栏】🎈 本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌 演示环境&#xff1…

Event Loop——事件循环

JS 是单线程的,也就是同一个时刻只能做一件事情。 那么思考:为什么浏览器可以同时执行异步任务呢?因为浏览器是多线程的。 当 JS 需要执行异步任务时,浏览器会另外启动一个线程去执行该任务。 也就是说,“JS 是单线程…

Springboot中slf4j日志的简单应用

1、注入依赖&#xff08;pom.xml&#xff09; <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.0.9</version> &…

【5G PHY】物理层逻辑和物理天线的映射

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

最新AI创作系统源码ChatGPT源码+附详细搭建部署教程+AI绘画系统+支持国内AI提问模型

一、AI系统介绍 SparkAi创作系统是基于国外很火的ChatGPT进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&am…

数学术语之源——纤维(fiber)

1. 数学术语“纤维”(英英“fibre”,美英“fiber”)在数学中的起源 fiber[ˈfaɪbə(r)]这个词始于14世纪晚期&#xff0c;词义为“肝叶的一瓣(a lobe of the liver)”,也指“内脏(entrails)”。来自中世纪拉丁语“fibre”,其又源自拉丁语“fibra”,词义为“纤维(a fiber)、细…

31.链表练习题(2)(王道2023数据结构2.3.7节16-25题)

【前面使用的所有链表的定义在第29节】 试题16&#xff1a;两个整数序列A&#xff0c;B存在两个单链表中&#xff0c;设计算法判断B是否是A的连续子序列。 bool Pattern(LinkList L1,LinkList L2){ //此函数实现比较L1的子串中是否有L2LNode *p, *q; //工作在L1,p记录L1子串…

springcloud之自我介绍

写在前面 在这篇文章 中我们分析了单体应用的问题&#xff0c;以及用来解决这些问题的解决的方案微服务&#xff0c;并接着看了微服务需要考虑的各种&#xff0c;如服务调用&#xff0c;负载均衡&#xff0c;服务治理&#xff0c;链路追踪&#xff0c;分布式事务&#xff0c;等…

【IDEA】使用idea调试时查看对象集合的值

1、在实体类上添加toString方法 2、在要查看集合的地方右键View as→toString 3、View Text复制对象集合的值 4、复制map集合的值同理

《动手学深度学习 Pytorch版》 7.6 残差网络(ResNet)

import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l7.6.1 函数类 如果把模型看作一个函数&#xff0c;我们设计的更强大的模型则可以看作范围更大的函数。为了使函数能逐渐靠拢到最优解&#xff0c;应尽量使函数嵌套&…

Qt 画自定义饼图统计的例子

先给出结果图&#xff0c;这个例子是将各种事件分类然后统计的其比例&#xff0c;然后画饼图显示出来 这个是我仿照官方给的例子&#xff0c;让后自己理解后&#xff0c;修改的&#xff0c;要生成饼图&#xff0c;需要QT的 charts 支持&#xff0c;安装QT 没有选择这个的&#…

【sgUploadTileImage】自定义组件:浏览器端生成瓦片图,并转换为File文件序列上传瓦片图

特性&#xff1a; 支持自定义瓦片图尺寸支持显示预览最小尺寸100x100像素大小&#xff0c;切换为实际切割尺寸支持获取切割后的文件Files数组 sgUploadTileImage源码 <template><div :class"$options.name"><div class"sg-ctrl"><di…

并查集专题

一、并查集的定义 二、基本操作 1、初始化 一开始,每个元素都是独立的集合 #include<iostream>using namespace std;const int maxN=1000; int father[maxN];int</

商场做小程序商城的作用是什么?

商场是众多商家聚集在一起的购物公共场所&#xff0c;大商场也往往入驻着众多行业商家&#xff0c;是每个城市重要的组成部分。 随着互联网电商深入及客户消费行为改变&#xff0c;不少商场如今的客流量非常有限&#xff0c;甚至可以说是员工比客人多&#xff0c;这就导致撤店…

力扣:113. 路径总和 II(Python3)

题目&#xff1a; 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;…

项目集成七牛云存储sdk

以PHP为例 第一步&#xff1a;下载sdk PHP SDK_SDK 下载_对象存储 - 七牛开发者中心 sdk下载成功之后&#xff0c;将sdk放入项目中&#xff0c;目录选择以自己项目实际情况而定。 注意&#xff1a;在examples目录中有各种上传文件的参考示例&#xff0c;这里我们主要参考的是…

高速,低延,任意频丨庚顿新一代实时数据库鼎力支撑电力装备服务数字化

产品同质化日趋严重以及市场需求不断迭代等内外形势下&#xff0c;电力装备制造业自身赢利需求不断增涨&#xff0c;电力等下游产业数字化发展形成倒逼之态&#xff0c;作为国家未来发展的高端装备创新工程主战场&#xff0c;电力装备智能化以及服务型转型升级已经成为装备制造…

晋级名单揭晓,中秋国庆双节喜迎“梧桐杯”省级决赛!

中国移动第三届“梧桐杯”大数据创新大赛自7月启动以来收获全国乃至海外地区高校学子的热烈关注和积极响应&#xff0c;共计630所高校2221支团队报名参赛。参赛团队覆盖全国31省&#xff08;区、市&#xff09;、中国香港、中国澳门以及澳大利亚、法国、新加坡等多个国家和地区…

最新AI智能写作系统ChatGPT源码/支持GPT4.0+GPT联网提问/支持ai绘画Midjourney+Prompt+MJ以图生图+思维导图生成

一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统&#xff1f;小编这里写一个详细图文教程吧&#x…