【大模型学习】快速下载大模型权重和评估大模型占用显存

news2024/9/26 5:17:42

一、下载模型

1.1 使用Hugging Face Hub下载模型

首先,我们需要设置环境变量以使用镜像站点加速下载。

主要要先安装相应的函数库:

pip install huggingface_hub
import os
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
from huggingface_hub import snapshot_download
snapshot_download(repo_id='Qwen/Qwen2-7B-Instruct', repo_type='model', local_dir='./Qwen2-7B-Instruct', force_download=True)

这里repo_id可以直接在Hugging Face官网上复制得到:

local_dir就是保存在自己本地的文件夹,force_download就是支持断点续传,避免中途因为网络断了,导致要重新下载。

此外,我们可以通过allow_patternsignore_patterns参数允许或者忽略某些文件以支持断点续传和正则匹配,因为大模型的权重一般是分成了好几个包,如果同时下载可能会导致网速变慢,所以我们可以设置这个参数,选择先下载一部分的包。

max_workers (int, optional): 下载文件的并发线程数(1 线程 = 1 文件下载)。默认值为 8。

# 不允许下载符合这些条件的
snapshot_download(repo_id='Qwen/Qwen2-7B-Instruct', repo_type='model', local_dir='./Qwen2-7B-Instruct', force_download=True, ignore_patterns=["*00001-of-00003.bin*", "*.json"])
# 只允许下载符合这些条件的
snapshot_download(repo_id='Qwen/Qwen2-7B-Instruct', repo_type='model', local_dir='./Qwen2-7B-Instruct', force_download=True, allow_patterns=["*00001-of-00003.bin*", "*.json"])
# 设置最大同时下载数量为1
snapshot_download(repo_id='Qwen/Qwen2-7B-Instruct', repo_type='model', local_dir='./Qwen2-7B-Instruct', force_download=True, max_workers=1)


1.2 ModelScope下载模型

安装modelscope库:

pip install modelscope

使用modelscope库中的snapshot_download函数下载模型:

from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('baichuan-inc/baichuan-7B', cache_dir='./model', revision='master')

同样也有和上面相似的参数:

  • allow_patterns (strList, optional, 默认 None): 如果提供,仅下载至少匹配一个模式的文件,优先级高于 allow_file_pattern。用于与 Hugging Face 兼容。
  • ignore_patterns (strList, optional, 默认 None): 如果提供,不下载匹配任何模式的文件,优先级高于 ignore_file_pattern。用于与 Hugging Face 兼容。
  • local_files_only (bool, optional): 如果为 True,则避免下载文件,并返回本地缓存文件的路径(如果存在)

二、评估大模型的显存占用

在选择和使用大模型时,了解其显存需求是非常重要的。我们可以使用Hugging Face提供的工具来评估模型的显存占用情况。

访问以下网址:https://huggingface.co/spaces/hf-accelerate/model-memory-usage

该工具可以帮助你计算在训练和推理过程中,大模型需要多少显存。下面是该工具的主要功能和使用方法:

  • 计算显存需求:工具会根据模型的URL或名称,计算出训练和推理时的显存需求。
  • 模型层大小:推荐的最小显存需求是"最大层"的大小,而训练模型的显存需求大约是其大小的4倍(针对Adam优化器)。
  • 推理显存需求:在进行推理时,额外需要大约20%的显存,这一数据由EleutherAI提供。
  • 支持模型类型:目前该工具支持使用transformers和timm库的所有模型。

使用方法如下:

  • 输入模型的URL或名称。
  • 选择模型的框架来源("auto"选项会尝试从模型元数据中检测)。
  • 选择你想使用的精度。

Memory usage for 'Qwen/Qwen2-7B-Instruct'

模型 'Qwen/Qwen2-7B-Instruct' 的显存使用情况:

  • dtype: 数据类型,这里选择的是 float16/bfloat16
  • Largest Layer or Residual Group: 最大层或残差组的大小,这里是 1.02 GB。
  • Total Size: 模型的总大小,这里是 13.61 GB。
  • Training using Adam (Peak vRAM): 使用 Adam 优化器训练时的峰值显存需求,这里是 54.43 GB。

Training using Adam explained

在使用 Adam 优化器进行训练时,每个阶段的显存需求:

  • Model: 模型本身的显存需求,这里是 27.22 GB。
  • Gradient calculation: 梯度计算的显存需求,这里是 40.82 GB。
  • Backward pass: 反向传播的显存需求,这里是 54.43 GB。
  • Optimizer step: 优化器步骤的显存需求,这里是 54.43 GB。

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

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

相关文章

【Redis】持久化机制最全解析

RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件)。通过将Redis数据集的快照保存到磁盘上的二进制文件中来实现。生成 RDB 文件的过程可以通过手动命令或自动触发。 实现原理 开始 BGSAVE: Redis 主进程接收到 BGSAVE 命…

【数据结构】五、树:2.二叉树(完全二叉树、前中后序遍历)

二、二叉树Binary tree 文章目录 二、二叉树Binary tree1.逻辑结构1.1斜树1.2满二叉树❗1.3完全二叉树1.4排序二叉树BST1.5平衡二叉树AVL1.6线索二叉树 2.性质3.存储结构3.1顺序存储3.2链式存储 4.遍历4.1前序遍历4.1.1前序非递归方式 4.2中序遍历4.2.1中序非递归方式 4.3后序遍…

java 解析 PDF OFD 发票 部分文字缺失

1、pdfbox https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox 到这里用最新的版本 最近碰到发票各式各样,千奇百怪:记录其中一个 解析出来是:缺少一个通字 发票好几处都缺少文字,解析出来的是 一个 圆点 原因&…

赋能未来园区:TSINGSEE视频AI智能管理平台如何引领园区管理智慧化转型

一、建设背景 随着经济的不断发展,园区产业集聚发展已成为趋势,园区逐渐成为产业聚集的重要载体。目前,国内现有的大部分园区的管理方式比较粗放、单一,范围局限于安全、环境等方面且不成体系,并且没有覆盖到应急、消…

计算机网络408考研 2014

1 计算机网络408考研2014年真题解析_哔哩哔哩_bilibili 1 111 1 11

电脑怎么格式化清除所有数据

在出售、捐赠或维修电脑之前或需要处理敏感数据时,格式化硬盘并彻底清除所有数据还是很有必要的。本篇文章将详细介绍如何安全、彻底地格式化你的电脑。 一、准备工作 在开始格式化之前,有一些重要的准备工作需要完成。这些步骤为了能帮你顺利进行格式化…

Java并发编程——线程创建的4种常见方式

文章目录 一、继承 Thread 类创建创建线程类1.1 Thread 类解析1.2 使用方法1.3 优缺点 二、实现 Runable 接口创建线程类2.1 Runable 接口解析2.2 使用方法2.3 优缺点 三、使用 Callable 和 FutureTask 创建线程3.1 Callable 接口解析3.2 RunnableFuture 接口解析3.3 Future 接…

CV/NLP【面经】

CV/NLP【面经】 1x1conv的作用多头注意力与普通注意力的区别:过拟合怎么解决随机森林和GBDT的区别决策树是怎么做回归任务的注意力机制参数量和计算量 1x1conv的作用 1.首先我们需要明确卷积的输入输出不是一个平面,而是一个长方体。所以1x1conv实际上对…

CTFHUB-web-RCE-命令注入

开启题目 检查网页显示内容,可以直接看到源代码。大致意思是:检查用户输入的 GET 请求,判断用户是否输入了 ip 信息。如果输入了 ip 信息,则使用用户输入的这个 ip 数据执行一个 shell 命令 "ping -c 4" 。 在输入框中…

C语言----用指针数组构造字符串数组

用指针数组构造字符串数组 实例说明: 本实例实现输入一个星期中对应的第几天,可显示其英文写法。例如,输入“4”,则显示星期四所对应的英文名。 实现过程: (1)打开 Visual C 6.0开发环境,新建一个C源文件…

【Matlab】零阶保持法:连续状态空间方程(含噪声,非线性)离散化处理方法

常用的离散化方法:零阶保持器(zero-order hold,ZOH)、欧拉法(Euler)、一阶保持器(First-order hold,FOH)。最常用的是前两种。 0.零阶保持器(ZOH&#xff09…

软文写作必须掌握的技巧有哪些?

现代互联网飞速发展的时代,硬广逐渐变的效果越来越差,而软文推广已经成为网络营销的重要组成部分了,一篇好的软文往往能为你的产品、网站带来意想不到的效果。 用于做营销的软文,我们不能像写普通文章那样随意。一篇优质的软文会让…

AI面试:未来招聘的新常态?

一、引言:招聘变革的序章 在数字化浪潮的推动下,各行各业正经历着前所未有的变革,而人力资源管理作为企业发展的核心驱动力之一,也迎来了其转型升级的关键时刻。传统招聘流程中,简历筛选、初步面试、复试乃至终面&…

AI的IDE:Cursor配置虚拟python环境(conda)

AI的IDE:Cursor配置虚拟python环境(conda) Cursor是一个AI的IDE,是从VSCode源代码中fork出来的,专注于和AI一起Coding而生。https://www.cursor.com/是官方地址。最近开始逐渐的试用Cursor,之前一直是VSCod…

vue3数字动画插件countup.js

countup.js 是一个轻量级的 JavaScript 库,允许你为网站上显示统计数据或计数器时平滑地动画化数字。CountUp 类被用来创建计数器实例,可以平滑地从一个数值变化到另一个数值。 只是用户视觉更好一些。 1、安装插件 npm i countup.js2、个人是封装了组件…

前端性能优化-用户交互体验优化

前言 本文总结一些常见的用户交互体验优化的方法 骨架屏 使用 loading 图或者是骨架屏,可以一定程度上减少用户等待加载的焦虑感,让用户感觉没有等太久,这就是用户体验级的优化。 PS: 可以利用 webpack 实现骨架屏的自动生成 图…

Grafana动态视图在转转推送系统中的应用

1 背景 转转的推送系统为自研产物,实现过程简述为:对外提供一个接入层,以多次MQ转发形式进行多系统交互,内部包括:推送内容过滤、免打扰策略、厂商通道分发等逻辑,最终发起http请求至厂商通道,…

【Android Studio】新new UI老UI的切换

Android studio新版UI 风格和老版本风格切换: File-> Settings-> Appearance-> New UI-> Enable NewUI选项

人工智能大模型如何引领智能时代的革命?

人工智能大模型如何引领智能时代的革命? 人机交互革命:大模型如何提升我们与机器沟通的自然性和智能化程度?计算范式革命:大模型如何影响现有的计算模式,并推动新一代计算技术的演进?认知协作革命&#xff…

海南云亿商务咨询有限公司洞察抖音电商新趋势

在当今这个数字化浪潮汹涌的时代,抖音电商以其独特的魅力,正逐步成为企业转型升级、品牌破圈的重要阵地。而在这片充满机遇与挑战的蓝海中,海南云亿商务咨询有限公司犹如一颗璀璨的新星,凭借其专业的服务能力和敏锐的市场洞察&…