paint-brush
如何为 GPU 匮乏的人打造一台 300 美元的人工智能计算机经过@zbruceli
8,173 讀數
8,173 讀數

如何为 GPU 匮乏的人打造一台 300 美元的人工智能计算机

经过 Bruce Li12m2024/03/24
Read on Terminal Reader

太長; 讀書

然而,对于 GPU 匮乏的我们来说,拥有自己的人工智能计算机似乎是一个昂贵的梦想。 Macbook M3 Max? 3200美元,哎呀!英伟达 4090? 1850 美元;即使你能得到一个,那也会很痛苦。微软 Surface 笔记本电脑 6? 1200美元起,还是太贵了。 如果我告诉你花 300 美元就能买到一台有用的人工智能计算机怎么办?感兴趣的?您确实需要提供自己的显示器、键盘和鼠标。您还需要对 Linux 操作系统、驱动程序、中间件和配置进行一些修改。
featured image - 如何为 GPU 匮乏的人打造一台 300 美元的人工智能计算机
Bruce Li HackerNoon profile picture


介绍

在我们自己的计算机上本地运行开源人工智能模型可以为我们提供隐私、无限的修改可能性以及不受大公司影响的自由。这几乎是一个言论自由的问题。


然而,对于 GPU 匮乏的我们来说,拥有自己的人工智能计算机似乎是一个昂贵的梦想。 Macbook M3 最大? 3200美元,哎呀!英伟达 4090 ? 1850 美元;即使你能得到一个,那也会很痛苦。微软 Surface 笔记本电脑 6 ? 1200美元起,还是太贵了。


如果我告诉你花 300 美元就能买到一台有用的人工智能计算机,你会怎么想?感兴趣的?您确实需要提供自己的显示器、键盘和鼠标。您还需要对 Linux 操作系统、驱动程序、中间件和配置进行一些修改。


澄清一下,我们不是在谈论“训练”或“微调”大型生成人工智能模型。我们将重点关注如何运行开源LLM(大型语言模型,例如美洲驼2 7B)本地,以及使用生成图像稳定扩散


现在,让我们继续。

是什么造就了一台优质(且便宜)的人工智能计算机?

zbruceli 的高速互连


让我们假设家用人工智能计算机的主要用例之一正在运行大语言模型或LLM推断。这个任务实际上根本不需要 GPU,因为它可以在 CPU 中完成。骆驼.cpp是一款开源软件,可以使用普通 CPU 实现非常快速的 LLM 推理。它最初是为配备 Apple M 系列 CPU 的 Macbook 设计的,但它也可以在 Intel/AMD CPU 上运行。


但是,您确实需要以下内容才能获得更快的推理速度。否则,你就像看着手掌上的毛发长出来,而法学硕士一次只吐出一个令牌。


  • 快速 CPU 到内存带宽
  • 更快的 DRAM(至少是 DDR4,DDR5 会更好)
  • 大量内存(最小 16GB),特别是如果您想运行更大的模型(超过 7B)


对于使用稳定扩散生成图像,您确实需要 GPU 能力。然而,您不必为此拥有非常奇特的 GPU。您可以利用家用计算机中已有的集成 GPU:


  1. 所有配备 M1/M2/M3 CPU 的 Mac,集成了 CPU、GPU 和高速内存(它们确实很好,但由于价格问题不包括在本文中)


  2. AMD APU(例如Ryzen 7 5700U),集成了CPU和GPU,适用于预算友好的迷你PC。这将是本文的重点。


  3. Intel CPU(例如Core i5-1135G7),同样集成了CPU和GPU。它们略高于整台迷你 PC 300 美元的预算,但欢迎读者自行进一步探索。

那么 300 美元的人工智能计算机是什么呢?

具有以下规格的基于 AMD 的迷你 PC 售价通常不到 300 美元。我不想推荐任何特定品牌,所以你可以自己搜索:

  • AMD 锐龙 7 5800H(8C/16T,最高4.4GHz)
  • 16GB RAM DDR4(推荐 32GB)
  • 512GB NVME M.2 固态硬盘


我花了一点钱,选择了 400 美元的型号,配备 32GB RAM 和 1TB SSD(其他条件相同)。主要原因是我对开源法学硕士进行研究,除了运行稳定扩散之外,还想运行更大的模型。但您应该能够使用 300 美元的计算机完成本文中的几乎所有操作。

准备工作 1:分配足够的 iGPU 内存

对于 AMD APU,例如锐龙 7 5800H ,内存在CPU和iGPU(集成GPU)之间共享。就我而言,我总共有 32GB RAM,但 iGPU 的默认分配只有 3GB!这因计算机而异,并在制造过程中在 BIOS 中进行配置。


您需要根据您的主要用例更改它:

  1. 如果您只需要运行 LLM 推理,则可以跳过整个准备步骤。由于 LLM 推理只需要使用 CPU,因此您应该为 CPU 节省大部分 RAM,以便可以运行更大的 LLM 模型。


  2. 如果你需要运行稳定扩散, 尤其SDXL (1024x1024),您需要为 iGPU 分配系统允许的尽可能多的 RAM(通常是总 RAM 的一半)


就我而言,我想在同一台迷你 PC 上运行 Stable Diffusion XL 和 LLM 推理。因此,我想为 GPU 分配 16GB(总共 32GB)。


您可以通过更改 BIOS 中的设置来实现此目的。通常,存在上限,并且默认设置可能远低于上限。在我的计算机上,上限为 16GB,即可用 RAM 总量的一半。

良好的BIOS

如果您的计算机的 BIOS 支持此类设置,请继续更改为您想要的数字。我的BIOS没有这样的设置。

BIOS 不良:使用通用 AMD 工具

如果您的 BIOS 没有此设置,请按照“解锁 AMD Ryzen™ APU 上的 GPU 内存分配?”的说明进行操作。温斯顿·马.我尝试了一下,效果很好,所以现在我有 16GB VRAM。


https://winstonhyypia.medium.com/amd-apu-how-to-modify-the-dedicated-gpu-memory-e27b75905056

准备工作 2:安装驱动程序和中间件

zbruceli 的复杂配置

对齐星星

AMD 的ROC (Radeon 开放计算平台),与 Nvidia 相当CUDA ,是一套驱动程序和中间件,使开发人员能够利用 ADM GPU 的强大功能。通常,AI 应用程序需要 ROCm 来获得 GPU 加速。


为了安装 AMD 的 ROCm 并使其工作,您必须确保 GPU 硬件、Linux 发行版、内核、python、HIP 驱动程序、ROCm 库和 pytorch 的版本兼容。如果您想要最少的痛苦和最大的首次成功可能性,请坚持使用推荐的和经过验证的组合。

先决条件

请检查以下链接以获取兼容的 Linux 操作系统和内核版本,并安装它们。最初,我犯了一个错误,只是安装了我最喜欢的 Linux 操作系统和默认的 Linux 内核,并且向后走来解决兼容性问题是一个很大的痛苦。您只需使用官方支持的组合即可避免这种痛苦。


https://rocm.docs.amd.com/projects/install-on-linux/en/latest/reference/system-requirements.html


AMD ROCm 操作系统兼容性图表

ROCm安装

https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html


如果整个安装顺利完成,您可以输入rocminfo ,然后会显示类似的内容(我只剪掉了以突出显示的黄色显示的最相关的部分):

ROCk module is loaded

=====================

HSA System Attributes

=====================

Runtime Version: 1.1

System Timestamp Freq.: 1000.000000MHz

Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)

Machine Model: LARGE

System Endianness: LITTLE

Mwaitx: DISABLED

DMAbuf Support: YES


==========

HSA Agents

==========

*******

Agent 1

*******

Name: AMD Ryzen 7 5800H with Radeon Graphics

Uuid: CPU-XX

Marketing Name: AMD Ryzen 7 5800H with Radeon Graphics

Vendor Name: CPU

  

Pool Info:

Pool 1

Segment: GLOBAL; FLAGS: COARSE GRAINED

Size: 16777216(0x1000000) KB

Python环境

Python 依赖关系可能非常棘手,因此设置适当的环境是一个很好的做法。您可以使用康达或者维尼夫以此目的。

  • source venv/bin/activate
  • conda activate llm

火炬

https://pytorch.org/get-started/locally/


Pytorch 兼容性图表

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7

HSA 覆盖

以下内容专门针对具有集成显卡的 APU。尽管它们没有得到 ROCm 的正式支持,但以下方法被证明是有效的。


export HSA_OVERRIDE_GFX_VERSION=9.0.0

如何验证

现在,完成所有复杂的步骤后,让我们测试一下 ROCm 是否可以与 Torch 配合使用。您可以看到,为了 Pytorch 的目的,ROCm 正在“假装”为 CUDA。


https://rocm.docs.amd.com/en/latest/how_to/pytorch_install/pytorch_install.html#test-the-pytorch-installation


python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'

Success


python3 -c 'import torch; print(torch.cuda.is_available())'

True

法学硕士推理

与 zbruceli 的聊天机器人交谈


让我们从对我们新配置的 300 美元人工智能计算机来说简单的事情开始:在本地运行一个大型语言模型。我们可以选择一种流行的开源模式:美洲驼2具有针对聊天进行优化的 7B 参数。


此外,您还可以尝试以下小型法学硕士:米斯特拉尔,启文,和风, 和骆驼毛。更多优质的法学硕士可以在加州大学伯克利分校非常有用的“聊天机器人竞技场排行榜”上找到LMSYS实验室


https://huggingface.co/spaces/lmsys/chatbot-arena-leaderboard

骆驼.cpp

我们将使用骆驼.cpp ,最初针对 CPU 进行了优化,后来也支持 GPU。根据我的经验,LLM 推理在 CPU 上运行良好,而使用普通的 GPU(例如集成在 300 美元的 AI 机器中的 GPU)几乎没有什么好处。


https://github.com/ggerganov/llama.cpp


首先,您需要安装wgetgit 。然后按照步骤编译并安装llama.cpp。


sudo apt-get install build-essential

git clone https://github.com/ggerganov/llama.cpp.git

cd llama.cpp

make

下载模型重量

为了在我们便宜的机器上运行 LLM,而不是在具有昂贵 GPU 的云服务器上,我们需要使用模型的“压缩”版本,以便它们可以适应 RAM 空间。举个简单的例子,LLaMA-2 7B 模型有 7B 个参数,每个参数都用 float16(2 个字节)表示。


  • Float 16:14B 字节或 14GB,不适合我们的 8GB RAM。


  • 量化为 4 位:3.5B 字节或 3.5GB,现在可以放入我们的 8GB RAM 中。


另外,文件格式应该是古夫。所以。在我们的示例中,您需要下载此文件中的权重:

https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF/blob/main/llama-2-7b-chat.Q4_0.gguf

在 AMD Mini PC 上测试

首先,我们在AMD迷你PC上进行了测试,我们达到了每秒大约10个令牌。这实际上是相当不错的,您可以与 LLM 进行聊天,而无需太多等待。


系统配置:

  • AMD 锐龙 5800H
  • 32GB内存


命令行指令:

./main -m models/llama-2-7b-chat.Q4_0.gguf --color -ins -n 512 --mlock


llama_print_timings: load time = 661.10 ms

llama_print_timings: sample time = 234.73 ms / 500 runs ( 0.47 ms per token, 2130.14 tokens per second)

llama_print_timings: prompt eval time = 1307.11 ms / 32 tokens ( 40.85 ms per token, 24.48 tokens per second)

llama_print_timings: eval time = 50090.22 ms / 501 runs ( 99.98 ms per token, 10.00 tokens per second)

llama_print_timings: total time = 64114.27 ms

在 Intel Mini PC 上测试

接下来,我们在 Intel 迷你 PC 上进行了测试,我们达到了每秒约 1.5 个令牌。对于富有成效的聊天会话来说,这有点太慢了。这不是一个公平的比较,因为 Intel N5105 明显弱于 AMD 5800H。但这是我拥有的唯一一台英特尔迷你电脑。如果您使用更强大的 Intel CPU(例如 Core i5-1135G7),您应该会获得类似的结果。请在下面的评论中报告您的发现。


系统配置:

  • 第 11 代 4 核 N5105(高达 2.9Ghz)4 核 4 线程
  • 16GB RAM(2GB VRAM 用于 iGPU)


./main -m models/llama-2-7b-chat.Q4_0.gguf -ins --color -n 512 --mlock


llama_print_timings: load time = 14490.05 ms

llama_print_timings: sample time = 171.53 ms / 97 runs ( 1.77 ms per token, 565.49 tokens per second)

llama_print_timings: prompt eval time = 21234.29 ms / 33 tokens ( 643.46 ms per token, 1.55 tokens per second)

llama_print_timings: eval time = 75754.03 ms / 98 runs ( 773.00 ms per token, 1.29 tokens per second)

稳定扩散

艺术家利用 zbruceli 的 AI 画龙

安装

https://github.com/AUTOMATIC1111/stable-diffusion-webui


关于 AMD ROCm,请注意此页面

https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs

快速开始

export HSA_OVERRIDE_GFX_VERSION=9.0.0

source venv/bin/activate

./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half

稳定扩散1.5测试

./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half


测试1

  • 提示:“森林中的马”


  • 步骤:20,采样器:DDIM,CFG规模:7,种子:519288240,大小:512x512,模型哈希:6ce0161689,模型:v1-5-pruned-emaonly,版本:v1.6.0


  • 所需时间:1 分钟。 8.3 秒

稳定扩散 XL 1.0 测试

SDXL(最大分辨率 1024x1024)建议至少 12GB VRAM,因此您肯定需要完成准备 1 步骤,为 iGPU 分配 16GB VRAM。因此,只有 400 美元的迷你 PC 才能完成这项任务。

./webui.sh --upcast-sampling

测试1:

  • 提示:“森林中的马”


  • 步骤:20,采样器:DDIM,CFG 规模:7,种子:1102941451,大小:1024x768,模型哈希:31e35c80fc,模型:sd_xl_base_1.0,版本:v1.6.0


  • 所需时间:7 分钟41秒


测试2:

  • 提示:“年轻的泰勒·斯威夫特穿着红色连帽衫在森林里骑马”


  • 负面提示:畸形、畸形、眼睛畸形、牙齿畸形、手指畸形、脸畸形、手畸形、畸形


  • 步骤:20,采样器:DDIM,CFG 规模:7,种子:2960206663,大小:1024x1024,模型哈希:31e35c80fc,模型:sd_xl_base_1.0,版本:v1.6.0


  • 所需时间:6 分钟。 12.3 秒

Windows 11 和 AMD/directml

尽管本文重点讨论 Linux 操作系统,但您也可以在 Windows 中使用 Stable Diffusion。这是我的实验:

https://github.com/lshqqytiger/stable-diffusion-webui-directml


  • 首先,您需要安装Python 3.10.6。


  • 将 Python 3.10.6 控制器添加到 PATH。



  • 安装 git 和 git clone 存储库


  • 从文件资源管理器运行 webui-user.bat


测试1:

  • 提示:“森林中的马”
  • 设置:DPM++ 2M Karras,512x512,采样步长 20
  • 耗时:1分19秒

结论

zbruceli 在个人设备上开源 AI 模型


那么,您是否在 300 美元的新迷你 PC 上运行自己的生成式 AI 模型很有趣?我希望你会。


在个人设备上运行的开源 AI 模型是最令修补者兴奋的领域之一,因为我们没有人拥有庞大的 GPU 池来实际训练基础模型。这将使新一代的应用程序既超级智能,又保留我们的数据隐私。


接下来是什么?

  • 在更小的嵌入式设备上运行它:例如,Raspberry Pi


  • 在您的智能手机上运行它(llama.cpp 支持 iOS 和 Android)


祝您在设备上愉快地修改人工智能、开源代码!