大模型系列4--开源大模型本地部署到微调(WIP)

背景

一直想真正了解大模型对硬件资源的需求,于是准备详细看一篇视频,将核心要点总结记录下。本文内容参考视频:保姆级教程:6小时掌握开源大模型本地部署到微调,感谢up主

训练成本

  • 训练 > 微调 > 推理
  • 训练GPT3.5: 1000块80G的A100,训练1个月
    • GP3训练一次:200w到1200w美元
  • 推理:9块80G的A100

对GPU的要求高,对CPU和存储的要求不高
在这里插入图片描述

ChatGLM-6B
少量对话的时
在这里插入图片描述
多轮对话,单机多卡

  • 3090双卡 和 4090单卡价格差不多
    在这里插入图片描述
    A100、A800,H100,H800等对比图
    在这里插入图片描述
    从架构上
  • V100: 2017年 伏特 GPU第6代
  • A100: 2020年 安培 GPU第8代
  • H100: 2022年 赫伯 GPU第9代
  • A100是上一代V100的6倍:在跑 AI 模型时,如果用 PyTorch 框架,相比上一代 V100 芯片,A100 在 BERT 模型的训练上性能提升 6 倍,BERT 推断时性能提升 7 倍。
  • H100是V100的6倍:与上一代 A100 相比,采用 Hopper 的 FP8 Tensor Core 的新 Transformer 引擎使大型语言模型的 AI 训练速度提升 9 倍,AI 推理速度提升 30 倍。针对用于基因组学和蛋白质测序的 Smith-Waterman 算法,Hopper 的新 DPX 指令可将其处理速度提升 7 倍。
  • A800是A100的阉割版本,降低了NVlink带宽,影响不大
  • H800是H100的阉割版本,影响不大

GPU选择

大模型阶段GPU型号

有双精度:不能用4090
训练:不能用4090
微调:最好A100,或者4090多卡
推理:4090,性价比优于A100

4090笔记本:16G显存
4090台式机:24G显存
3090台式机:24G显存,性能是4090的一半
3080台式机:12G显存

单卡:4090 vs A100系列

  • 训练:大模型的参数依赖多卡,参数存储以及GPU通信,对内存容量,内存带宽,通信带宽都是强需,4090不适合
  • 推理:只需要单个模型,4090单卡可行
  • 4090价格是A100的1/100,其计算能力和A100差不多
    在这里插入图片描述
    单卡4090 vs 双卡3090,建议双卡3090
  • 价格差不多
  • 总算力和单张4090持平,显存多了一倍到48GB
  • 双卡流水线效果更好(?)

实验室配置

  • 10w预算:4张4090
  • 20-30w预算:8张4090,或者两张A100 80G
  • 预算不限:8卡 A100
  • 双卡GPU升级路线:3090 -> 4090 -> A100 40G -> A100 80G
  • 一定要买涡轮版,不能买风扇卡,涡轮卡尺寸和高度低,便于多卡

组装机

  • CPU有超频需求,上水冷;否则上风冷
  • 2*3090 搭配 i7-13700
  • 主板:Intel Z系列(高端),B系列(中端),A系列(低端,不要考虑)
  • 硬盘:接口SATA or M.2,建议M.2;协议类型:SATA协议(最高600MB/s),NVME协议(速度快 4GB/s),至少选择PCI-e 4.0
  • 内存:是显存容量的2倍
  • 电源:主要关注功耗,(CPU+GPU)*2,例如 65w CPU加125w GPU,电源一般400w;双GPU卡至少1000w,四GPU卡 1600w
  • 机箱:机箱的长度高出显卡的长度至少30mm

最强算力 H200

  • 显存 141GB,显存带宽 4.8TB/s(相比于A100 3.35TB/s)
  • 内存带宽1.15TB/s 如何理解

个人配置-多卡

GPU: 3090双卡,涡轮版;共48G显存;
CPU:AMD 5900X;12核24线程;
存储: 64GB内存+2T SSD 数据盘;
电源: 1600W单电源;
主板:华硕ROG X570-E;服务级PCE,支持双卡PCIE;
机箱: ROG太阳神601, ATX全塔式大机箱,便于大功率下散热;

租用服务器

平台推荐

在这里插入图片描述

付费GPU在这里插入图片描述

在这里插入图片描述

视频中采用的Windows和Linux双系统,本人更喜欢WSL

安装cuda

cuda driver和cuda runtime API

CUDA提供了两种API,分别是运行时API(CUDA Runtime API)和驱动API(Driver API)

  • 驱动API(Driver API)的版本对应nvidia-smi显示的CUDA Driver结果(该NVIDIA驱动程序所支持的最高CUDA版本),它提供了更细粒度的控制,允许直接与 CUDA 驱动交互。它通常用于需要精细控制的高级应用。
  • 运行时API(CUDA Runtime API)对应于nvcc -V显示的结果,它是一种更高级别的抽象,旨在简化编程过程,它自动处理很多底层细节。大多数 CUDA 程序员使用。

通常情况下,当提到CUDA时,指的是CUDA Runtime版本。

如何查看cuda driver API版本(cuda driver版本)
  • linux使用命令nvidia-smi也可查看driver版本,538.18我安装的具体版本
  • windows环境可以使用nvdia control panel应用并查看系统信息,可以查看该driver版本
    在这里插入图片描述
如何查看cuda runtime API版本(cuda版本)
  • 使用命令nvidia-smi看到的CUDA Version,是指该NVIDIA驱动程序所支持的最高CUDA版本,下图显示的即为支持的最高CUDA版本为12.2,需要安装小于12.2版本的CUDA。
  • 使用nvcc -V可以查看当前安装的cuda版本,可以通过 显示的版本号是小于等于nvidia-smi所显示的cuda版本,这就是二者显示版本不一致的原因。
    在这里插入图片描述
    通过这里CUDA和Driver版本适配关系可以查看适应当前机器的driver版本配套的cuda版本。可以通过cuda tookit下载来下载相应的cuda tookit。 可参考这篇文章
    在这里插入图片描述

安装GPU版本的pytorch

在WSL命令行输入以下命令:

conda create --name pytorch_gpu python=3.11
conda activate pytorch_gpu
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch -c nvidia

测试GPU

import torchdef check_cuda_support():if torch.cuda.is_available():print(f"CUDA is available. Number of GPUs: {torch.cuda.device_count()}")print(f"Current CUDA device: {torch.cuda.current_device()}")print(f"CUDA device name: {torch.cuda.get_device_name(torch.cuda.current_device())}")else:print("CUDA is not available. PyTorch is running on CPU.")if __name__ == "__main__":check_cuda_support()

命令输出
在这里插入图片描述

测试下带宽性能:/usr/local/cuda/extras/demo_suite/bandwidthTest
在这里插入图片描述

在这里插入图片描述

WSL 安装ollama

参照网站提供的帮组:https://github.com/ollama/ollama

  • curl -fsSL https://ollama.com/install.sh | sh

下载hugging face ChatGLM数据集

使用命令git clone https://huggingface.co/THUDM/chatglm-6b进行下载,这个需要科学上网。可以启动windows cmd,然后参照文档代理设置来设置本地代理。命令列表如下:

# 在代码仓库下载目录中,启动windows cmd
set all_proxy=http://127.0.0.1:7890
git clone https://huggingface.co/THUDM/chatglm-6b

微调模型需要多少显存

全量微调

  • model权重
    1B参数,10亿参数,每个参数占用2B,则一共占用2GB
  • 梯度:和model权重类似,也是2GB
  • 优化器:比梯度大很多,以4倍估计,大约是8GB
  • Activation:暂时忽略不计
    常用的全量微调内存消耗约为模型权重的6倍。

高效微调

LoRA模式:base模型+Adapter 2.5%,此时消耗的内存为 2GB + 2.5% * 10GB,约为2.3GB
QLoRA模式:对model权重对2B进一步量化

qwen微调1.B 5GB内存

参考链接:基于qwen的法律大模型微调

下载代码

git clone https://github.com/QwenLM/Qwen.git

安装依赖

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -r requirements_web_demo.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

下载模型

git clone https://www.modelscope.cn/qwen/Qwen-1_8B-Chat.git
git clone https://www.modelscope.cn/qwen/Qwen1.5-1.8B-Chat-GPTQ-Int4.git

启动web界面并加载指定目录的模型

python web_demo.py --server-name 0.0.0.0 -c ../Qwen-1_8B-Chat
python web_demo.py --server-name 0.0.0.0 -c ../Qwen-1_8B-Chat --cpu-only

在这里插入图片描述

界面呈现,默认是8000端口

http://localhost:8000/

在这里插入图片描述

下载法律数据集

git clone https://www.modelscope.cn/datasets/Robin021/DISC-Law-SFT.git
选择数据文件,下载 DISC-Law-SFT-Triplet-released.jsonl

转换数据集

将json中的input/ouput条目转换为from user & from assistant的形式

安装微调依赖

pip install "peft<0.8.0" deepspeed  -i https://pypi.tuna.tsinghua.edu.cn/simple

设置model路径和data路径,启动微调

bash finetune/finetune_lora_single_gpu.sh

在这里插入图片描述

安装pip使用清华镜像加速

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas

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

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

相关文章

仿《公主连结》首页场景的制作(附资源包)

先看效果&#xff08;主要实现点击按钮切换图片&#xff0c;未解锁按钮弹出提示&#xff0c;点击过后播放动画&#xff09; 预备知识&#xff08;单例模式&#xff0c;携程&#xff0c; Resources.Load加载资源的方式&#xff09; 资源准备&#xff08;底部按钮7个图标&#x…

Redis - 集合 Set 及代码实战

Set 类型 定义&#xff1a;类似 Java 中的 HashSet 类&#xff0c;key 是 set 的名字&#xff0c;value 是集合中的值特点 无序元素唯一查找速度快支持交集、并集、补集功能 常见命令 命令功能SADD key member …添加元素SREM key member …删除元素SCARD key获取元素个数SI…

基于Llamaindex的网页内容爬取实战

目的 本文不关注如何解析网页 html 元素和各种 python 爬虫技术&#xff0c;仅作为一种网页数据的预处理手段进行研究。Llamaindex 也并不是爬虫技术的集大成者&#xff0c;使用它是为了后续的存查一体化。 安装依赖 pip install llama-index-readers-web # pip install llam…

《九重紫》逐集分析鉴赏第一集(下)

主标题&#xff1a;《九重紫》一起追剧吧 副标题&#xff1a;《九重紫》逐集分析鉴赏第一集&#xff08;下&#xff09;/《九重紫》逐集分析鉴赏1 接上回分解&#xff0c;窦昭和宋墨都安置城外万佛寺 交谈没一会儿&#xff0c;天还未亮&#xff0c;兵临寺下 记住这个人&…

Introduction to NoSQL Systems

What is NoSQL NoSQL database are no-tabular非數據表格 database that store data differently than relational tables 其數據的存儲方式與關係型表格不同 Database that provide a mechanism機制 for data storage retrieval 檢索 that is modelled in means other than …

图论【Lecode_HOT100】

文章目录 1.岛屿数量No.2002.腐烂的橘子No.9943.课程表No.2074.实现Trie&#xff08;前缀树&#xff09;No.208 1.岛屿数量No.200 class Solution {public int numIslands(char[][] grid) {if (grid null || grid.length 0) {return 0;}int numIslands 0;int rows grid.len…

【深度学习量化交易9】miniQMT快速上手教程案例集——使用xtQuant获取基本面数据篇

我是Mr.看海&#xff0c;我在尝试用信号处理的知识积累和思考方式做量化交易&#xff0c;应用深度学习和AI实现股票自动交易&#xff0c;目的是实现财务自由~目前我正在开发基于miniQMT的量化交易系统。 在前几篇的文章中讲到&#xff0c;我正在开发的看海量化交易系统&#xf…

网络层IP协议(TCP)

IP协议&#xff1a; 在了解IP协议之前&#xff0c;我们市面上看到的"路由器"其实就是工作在网络层。如下图&#xff1a; 那么网络层中的IP协议究竟是如何发送数据包的呢&#xff1f; IP报头&#xff1a; IP协议的报头是比较复杂的&#xff0c;作为程序猿只需要我们重…

Xcode

info.plist Appearance Light 关闭黑暗模式 Bundle display name 设置app名称&#xff0c;默认为工程名 Location When In Use Usage Description 定位权限一共有3个key 1.Privacy - Location When In Use Usage Description 2.Privacy - Location Always and When In U…

【CSS in Depth 2 精译_079】第 13 章:渐变、阴影与混合模式概述 + 13.1:CSS 渐变效果(一)——使用多个颜色节点

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 13 章 渐变、阴影与混合模式】 ✔️ 13.1 渐变 ✔️ 13.1.1 使用多个颜色节点&#xff08;一&#xff09; ✔️13.1.2 颜色插值13.1.3 径向渐变13.1.4 锥形渐变 文…

地下管线三维建模,市面上有哪些软件

1. 地下管线&#xff1a;城市“生命线” 地下管线是城市的重要基础设施&#xff0c;包括供水、排水、燃气、热力、电力、通信等管线&#xff0c;它们如同城市的“生命线”&#xff0c;支撑着城市的正常运转。如果缺乏完整和准确的地下管线信息&#xff0c;施工破坏地下管线的事…

说说你对java lambda表达式的理解?

大家好&#xff0c;我是锋哥。今天分享关于【说说你对java lambda表达式的理解?】面试题。希望对大家有帮助&#xff1b; 说说你对java lambda表达式的理解? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java Lambda 表达式是 Java 8 引入的一项重要特性&#…

网易云信荣获“HarmonyOS NEXT SDK星河奖”

近日&#xff0c;鸿蒙生态伙伴 SDK 开发者论坛在北京举行。 网易云信凭借在融合通信领域的技术创新和鸿蒙生态贡献&#xff0c;荣获鸿蒙生态“HarmonyOS NEXT SDK星河奖”。 会上&#xff0c;华为鸿蒙正式推出 SDK 生态繁荣伙伴支持计划&#xff0c;旨在为 SDK 领域伙伴和开发…

电压调整电路汇总

目录&#xff1a; 一、LDO线性稳压器 1、LM1117 2、NCV33275 3、TLE42764 4、TPS7B67xx-Q1 5、总结 二、DCDC转换器 1、LM2576 2、MC34063A 3、总结 原文件下载移步&#xff1a;LDO-DCDC的仿真与Altium原理图 一、LDO线性稳压器 1、LM1117 LM1117 是一款在 800mA 负…

2024美亚杯资格赛复现

参考&#xff1a; 2024“美亚杯”第十届中国电子数据取证大赛资格赛参考WP 2024美亚杯个人资格赛WP 第十届美亚杯个人赛内存和优盘解答 2024年美亚杯个人赛 资格赛 wp_2024美亚杯个人赛-CSDN博客 历年赛题及解析 - 美亚杯 第一次打&#xff0c;感觉就是题量很大&#xff…

练12:双指针

欢迎大家订阅【蓝桥杯Python每日一练】 专栏&#xff0c;开启你的 Python数据结构与算法 学习之旅&#xff01; 文章目录 前言1 同向扫描2 反向扫描3 同向扫描与反向扫描的对比4 例题分析2.1 回文判定2.2 美丽的区间2.3 挑选子串 前言 双指针是一种常用于数组和链表类问题中&a…

360智脑张向征:共建可信可控AI生态 应对大模型安全挑战

发布 | 大力财经 人工智能的加速发展&#xff0c;有力推动了社会的数智化转型&#xff1b;与此同时&#xff0c;带来的相关安全风险也日益凸显。近日&#xff0c;在北京市举办的通明湖人工智能开发与应用大会上&#xff0c;360智脑总裁张向征以“大模型安全研究与实践”为主题&…

6.数据建模和数据检索及权限检查

总学习目录请点击下面连接 SAP ABAP开发从0到入职&#xff0c;冷冬备战-CSDN博客 目录 1.数据建模和ABAP字典的透明表 现实产品到数据库数据过程 飞行数据模型 做一个简单的引用。 从旅行社来看&#xff1a; 对于开发人员&#xff1a; 透明表 结构体和透明表 在系统中…

反复出现 idf.py: command not found 的解决办法

版本&#xff1a;ESP-IDF v4.4.8 1. 问题描述 当我们需要经常使用 ESP-IDF 时&#xff0c;总要反复安装编译链、设置环境&#xff0c;不然就会显示 idf.py: command not foundESP-IDF 是乐鑫官方的物联网开发框架&#xff0c;适用于ESP32、ESP32-S、ESP32-C 和ESP32-H 系列S…

IIC 通信协议

IIC 通信协议 参考&#xff1a;CSDN-Projectsauron、B站-江协科技 IIC Overview IIC协议&#xff08;Inter-Integrated Circuit&#xff0c;可简写为 I2C&#xff09;&#xff0c;是一种用于各种电子设备之间进行通信和数据交换的串行通信协议。它是由飞利浦&#xff08;Phil…