关于自己部署AI大模型踩的坑(一)——硬件篇

ops/2024/9/20 7:21:06/ 标签: 人工智能, linux

最近一直在研究如何打算属于我自己的J.A.R.V.I.S.(钢铁侠中的机器人管家)。

上一篇写了我最近在部署自己的大模型,使用llama3.1, 和通义千问2。虽然最终结果也是成功了,过程却十分地坎坷。

所以这一篇文章一是总结其中遇到的问题,软件、硬件,想到什么就写什么,算是随笔吧。也给后面自己部署的同学们写个避雷指南。

关于自己部署AI大模型踩的坑 之一 ——硬件篇

总体来说,大模型对于硬件的要求还是相对较高的。比如Llama3.1有三个尺寸:8B(中杯)、70B(大杯)和 405B(超大杯)。

Llama3.1公开硬件要求如下:

硬件要求

  • RAM:Llama 3 8B至少16GB,Llama 3 70B至少64GB或更多。
  • GPU:具有至少8GB VRAM的强大GPU,最好是支持CUDA的NVIDIA GPU。
  • 磁盘空间:Llama 3 8B约为4GB,而Llama 3 70B超过20GB。

软件要求

  • Docker:ollama依靠Docker容器进行部署。
  • CUDA:如果使用NVIDIA GPU,则必须安装并配置相应的CUDA版本

很明显,一般的家用电脑,即使达到部分要求,也很难均衡和稳定地实现相关功能。所以我从一开始就决定弄台退役服务器来搞这个。

选择退役服务器的最大优势就是性价比超级高,硬件成本相对无限低。

比如我选择的就是DELL的PowerEdge R730XD(劝大家不要盲从,这里也有一个小坑,后面会讲)。

配制上面简直是桶装面加香肠,压力完全不大:

1、CPU用E5 26系列v3、v4CPU,可以双路(如果不用顶级CPU,基本是白菜价);

2、内存DDR4  ECC内存(服务器内存,便宜), 24个内存插槽,RDIMM 内存在双处理器配置下,容量最高为768 GB 的 RDIMM, LRDIMM内存在双处理器配置下,容量最高为 3,072 GB。

3、硬盘配制也是相当给力,12(前置3.5寸硬盘位)+4(中置扩展位)+2(后置2.5寸硬盘位)共计可以最多18个硬盘位可扩展(我只用了一个,3T硬盘,哈哈哈)。

4、GPU位。R730XD服务器有三个PCIE提升卡(RAIS卡)位置。但只能在Raiser2的位置可以装一张全高双槽GPU,Raiser3位置是一个单槽位置,Raiser1位置是X8,不够正常扩展。这点上面R730的设置优势就比较大了。(这也是我所谓的坑的一点,如果对于GPU要求更多的同学,这里可以选择R730,而不是R730XD)

所以,关于硬件方面的总结:

        如果不在意耗电的情况下(个人跑满的话,功率大概在250W-300W之间。不使用GPU,双U跑的话功率大概在160-200W之间),选取退役服务器还是性价比非常高的。其他方面比如CPU,内存,硬盘位置方面,个人觉得应该不存在太大的限制空间,但GPU的可扩展要尤其注意。

        比如我选择了一张24G的GPU,可能一张就可以用了。但如果一张GPU算力不够,或者使用人数够多,需要再扩展GPU的时候,那GPU的扩展空间就需要再斟酌一下了。


http://www.ppmy.cn/ops/93719.html

相关文章

uniapp版本更新除了plus.runtime.getProperty的解决办法

以下是展示图 带尺寸的图片: 首先把以下代码放到想要更新弹出的页面 //template部分<uni-popup ref"popup" background-color"#fff"><versionUp handleCloseVersion"closeVersion"></versionUp></uni-popup>//script…

Mysql——对数据基本操作(增删查改)——操纵语言(DML)

之前的创建数据库和创建表&#xff0c;类型、约束都是用的DDL【data definition language】 数据定义语言&#xff0c;用来维护存储数据的结构 代表指令: create, drop, alter 那么现在我们来学习数据操纵语言 DML【data manipulation language】 数据操纵语言&#xff0c;用来…

使用Selenium爬取网络页面

在现代网络数据分析和自动化测试中&#xff0c;Selenium 是一个强大而流行的工具。它不仅可以帮助开发者自动化浏览器操作&#xff0c;还能用于爬取网络页面。本文将介绍如何使用 Selenium 爬取网络页面&#xff0c;包括基本设置、常用操作及一些实用的技巧。 一、什么是 Selen…

腾讯cdg提前批一面0726

介绍项目 黑马商城 为什么使用rabbitmq 用于异步更新订单 扣减余额后异步更新订单失败怎么办 分布式事务回滚 什么是接口幂等性&#xff0c;怎么实现 接口幂等性是指同一个接口在短时间点击多次都之后返回只执行一次的结果。 Token机制&#xff1a; 生成Token&#xff1a;在客户…

点赞功能开发

文章目录 1.点赞收藏功能设计1.示意图2.描述1.使用redis记录的数据2.数据库的设计3.功能设计1.新增点赞2.取消点赞3.查询当前题目被点赞的数量4.查询当前题目被当前用户是否点过赞5.我的点赞 2.代码生成器的使用1.找到代码生成器在磁盘的位置&#xff0c;直接复制到项目下2.导入…

微信小程序中实现自动滚动

使用scroll-view组件的scroll-into-view属性&#xff1a; <scroll-view class"container" scroll-y"{{true}}" scroll-into-view"recordBottomScroll"><view class"text_style" style"color: #252526;">{{te…

16 交换机命令行配置

交换机命令行配置 一、交换机命令行基本配置 &#xff08;一&#xff09;配置主机名 Switch>enable Switch#configure terminal Switch(config)#hostname S1&#xff08;二&#xff09;查看配置信息 Switch#show running-config Building configuration...Current confi…

SpringBoot配置

目录 yaml基本含义 yaml基本语法 yaml数据格式 实操 yaml:参数引用 小结 yaml基本含义 通过对比不同配置文件写法&#xff0c;就可以发现yaml配置文件&#xff0c;更加注重数据本身 原因 1 比properties配置文件&#xff0c;更加注重层级关系 2 和xml文件比起来&#xff…

【Unity-UGUI】UI重建

UGUI UI重建二三事(一) UGUI UI重建二三事(二) [UGUI源码二]Unity UI重建(Rebuild)源码分析 这一部分主要是通过以上几篇文章学习的&#xff0c;总结一下&#xff1a; UI重建主要分类两类&#xff0c;一类是布局重建(Layout Rebuild)&#xff0c;另一类是图形重建(Graphic Reb…

jar包扫描不到,idea如何通过Project Structure设置

目录 一、进入Project Structure二、添加你的项目进来三、手动添加依赖 很多时候jar包文件已经存在&#xff0c;但是无法使用&#xff0c;需要通过Project Structure设置 一、进入Project Structure 选择Modules->点击 二、添加你的项目进来 一直next&#xff0c;最后点…

git推送错误:Failed to connect to github.com port 443

今天在push代码到github的时候遇到了错误&#xff1a;fatal: unable to access https://github.com/ShangyiAlone/FacemaskDetection.git/: Failure when receiving data from the peer 网上搜了下教程&#xff0c;是开启梯子的时候代理服务器的问题&#xff0c;开启梯子的时候…

【Python SHA256 摘要算法】

SHA256 是一种广泛使用的密码散列函数&#xff0c;用于生成数据的唯一指纹&#xff0c;即散列值。它属于SHA-2家族&#xff0c;该家族还包括 SHA-384 和 SHA-512 算法。SHA256 算法在许多领域都有应用&#xff0c;例如&#xff1a; 数据完整性验证&#xff1a;用于验证数据在传…

使用 Flask、Celery 和 Python 实现每月定时任务

为了创建一个使用 Flask、Celery 和 Python 实现的每月定时任务&#xff0c;我们需要按照以下步骤进行&#xff1a; 1.安装必要的库 我们需要安装 Flask、Celery 和 Redis&#xff08;作为消息代理&#xff09;。我们可以使用 pip 来安装它们&#xff1a; bash复制代码 ​ p…

C++ | Leetcode C++题解之第331题验证二叉树的前序序列化

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isValidSerialization(string preorder) {int n preorder.length();int i 0;int slots 1;while (i < n) {if (slots 0) {return false;}if (preorder[i] ,) {i;} else if (preorder[i] #){slots--;i…

Ubuntu 将更改版本规则,使用最新内核发布发行版

众所周知&#xff0c;Canonical 开发的 Ubuntu 发行版每半年发布一个新版本&#xff0c;而 Linux 内核却是大约每 2-3 个月发布一个新版本。 这导致一个问题&#xff0c;Ubuntu发行版永远使用的不是最新内核。因为按照Ubuntu的开发周期&#xff0c; Ubuntu 开发阶段选择使用的…

zookeeper集群搭建Windows 7

在 Windows 7 操作系统上搭建 ZooKeeper 集群是可行的,但是由于 Windows 7 是一个较旧的操作系统,可能缺少某些现代的功能或者安全性更新。尽管如此,你仍然可以在 Windows 7 上搭建一个 ZooKeeper 单服务器三节点集群用于测试和学习目的。 下面是针对 Windows 7 系统的步骤…

C# TreeView

添加 TreeView 控件&#xff1a;定义节点&#xff1a;添加节点&#xff1a;设置节点属性&#xff1a;处理节点事件&#xff1a;自定义节点绘制&#xff1a;数据绑定&#xff1a;节点选择&#xff1a;节点展开和折叠&#xff1a;搜索和过滤&#xff1a;示例代码总结 C# 中的 Tre…

C#加载toolblock工具

VisionPro QuickBuild工具 VisionPro QuickBuild是康耐视旗下的与相机配套的软件&#xff0c;主要是设计了一些底层算法&#xff0c;免去了开发者要进行底层开发的工作量&#xff0c;而其中的ToolBlock工具相当于一个函数&#xff0c;可以在这个函数里面完成你想完成的功能&…

nvm下载node时没有下载npm问题的解决

问题&#xff1a; 使用nvm下载node版本时,没有自动下载npm 1&#xff0c;卸载指定的版本 nvm uninstall "版本号" 2&#xff0c;设置npm的镜像地址&#xff08;将npm的地址指定为淘宝镜像&#xff09; nvm npm_mirror https://npmmirror.com/mirrors/npm/ 3&…

IDEA 创建类时自动生成注释

一、背景 在开发的过程中&#xff0c;公司都会要求开发针对自己创建的类进行一些描述说明&#xff0c;为了便于程序员在创建类时快速生成注释。 二、如何配置? 打开File -> Settings -> Editor -> File and Code Templates -> Includes&#xff0c;在File Header…