在我们自己的计算机上本地运行开源人工智能模型可以为我们提供隐私、无限的修改可能性以及不受大公司影响的自由。这几乎是一个言论自由的问题。
然而,对于 GPU 匮乏的我们来说,拥有自己的人工智能计算机似乎是一个昂贵的梦想。
如果我告诉你花 300 美元就能买到一台有用的人工智能计算机,你会怎么想?感兴趣的?您确实需要提供自己的显示器、键盘和鼠标。您还需要对 Linux 操作系统、驱动程序、中间件和配置进行一些修改。
澄清一下,我们不是在谈论“训练”或“微调”大型生成人工智能模型。我们将重点关注如何运行开源LLM(大型语言模型,例如
现在,让我们继续。
让我们假设家用人工智能计算机的主要用例之一正在运行
但是,您确实需要以下内容才能获得更快的推理速度。否则,你就像看着手掌上的毛发长出来,而法学硕士一次只吐出一个令牌。
对于使用稳定扩散生成图像,您确实需要 GPU 能力。然而,您不必为此拥有非常奇特的 GPU。您可以利用家用计算机中已有的集成 GPU:
所有配备 M1/M2/M3 CPU 的 Mac,集成了 CPU、GPU 和高速内存(它们确实很好,但由于价格问题不包括在本文中)
AMD APU(例如Ryzen 7 5700U),集成了CPU和GPU,适用于预算友好的迷你PC。这将是本文的重点。
Intel CPU(例如Core i5-1135G7),同样集成了CPU和GPU。它们略高于整台迷你 PC 300 美元的预算,但欢迎读者自行进一步探索。
具有以下规格的基于 AMD 的迷你 PC 售价通常不到 300 美元。我不想推荐任何特定品牌,所以你可以自己搜索:
我花了一点钱,选择了 400 美元的型号,配备 32GB RAM 和 1TB SSD(其他条件相同)。主要原因是我对开源法学硕士进行研究,除了运行稳定扩散之外,还想运行更大的模型。但您应该能够使用 300 美元的计算机完成本文中的几乎所有操作。
对于 AMD APU,例如
您需要根据您的主要用例更改它:
如果您只需要运行 LLM 推理,则可以跳过整个准备步骤。由于 LLM 推理只需要使用 CPU,因此您应该为 CPU 节省大部分 RAM,以便可以运行更大的 LLM 模型。
如果你需要运行
就我而言,我想在同一台迷你 PC 上运行 Stable Diffusion XL 和 LLM 推理。因此,我想为 GPU 分配 16GB(总共 32GB)。
您可以通过更改 BIOS 中的设置来实现此目的。通常,存在上限,并且默认设置可能远低于上限。在我的计算机上,上限为 16GB,即可用 RAM 总量的一半。
如果您的计算机的 BIOS 支持此类设置,请继续更改为您想要的数字。我的BIOS没有这样的设置。
如果您的 BIOS 没有此设置,请按照“解锁 AMD Ryzen™ APU 上的 GPU 内存分配?”的说明进行操作。温斯顿·马.我尝试了一下,效果很好,所以现在我有 16GB VRAM。
AMD 的
为了安装 AMD 的 ROCm 并使其工作,您必须确保 GPU 硬件、Linux 发行版、内核、python、HIP 驱动程序、ROCm 库和 pytorch 的版本兼容。如果您想要最少的痛苦和最大的首次成功可能性,请坚持使用推荐的和经过验证的组合。
请检查以下链接以获取兼容的 Linux 操作系统和内核版本,并安装它们。最初,我犯了一个错误,只是安装了我最喜欢的 Linux 操作系统和默认的 Linux 内核,并且向后走来解决兼容性问题是一个很大的痛苦。您只需使用官方支持的组合即可避免这种痛苦。
如果整个安装顺利完成,您可以输入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 依赖关系可能非常棘手,因此设置适当的环境是一个很好的做法。您可以使用
source venv/bin/activate
conda activate llm
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
以下内容专门针对具有集成显卡的 APU。尽管它们没有得到 ROCm 的正式支持,但以下方法被证明是有效的。
export HSA_OVERRIDE_GFX_VERSION=9.0.0
现在,完成所有复杂的步骤后,让我们测试一下 ROCm 是否可以与 Torch 配合使用。您可以看到,为了 Pytorch 的目的,ROCm 正在“假装”为 CUDA。
python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'
Success
python3 -c 'import torch; print(torch.cuda.is_available())'
True
让我们从对我们新配置的 300 美元人工智能计算机来说简单的事情开始:在本地运行一个大型语言模型。我们可以选择一种流行的开源模式:
此外,您还可以尝试以下小型法学硕士:
我们将使用
首先,您需要安装wget
和git
。然后按照步骤编译并安装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 个字节)表示。
另外,文件格式应该是
首先,我们在AMD迷你PC上进行了测试,我们达到了每秒大约10个令牌。这实际上是相当不错的,您可以与 LLM 进行聊天,而无需太多等待。
系统配置:
命令行指令:
./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 迷你 PC 上进行了测试,我们达到了每秒约 1.5 个令牌。对于富有成效的聊天会话来说,这有点太慢了。这不是一个公平的比较,因为 Intel N5105 明显弱于 AMD 5800H。但这是我拥有的唯一一台英特尔迷你电脑。如果您使用更强大的 Intel CPU(例如 Core i5-1135G7),您应该会获得类似的结果。请在下面的评论中报告您的发现。
系统配置:
./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)
关于 AMD ROCm,请注意此页面
export HSA_OVERRIDE_GFX_VERSION=9.0.0
source venv/bin/activate
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
测试1
SDXL(最大分辨率 1024x1024)建议至少 12GB VRAM,因此您肯定需要完成准备 1 步骤,为 iGPU 分配 16GB VRAM。因此,只有 400 美元的迷你 PC 才能完成这项任务。
./webui.sh --upcast-sampling
测试1:
测试2:
尽管本文重点讨论 Linux 操作系统,但您也可以在 Windows 中使用 Stable Diffusion。这是我的实验:
测试1:
那么,您是否在 300 美元的新迷你 PC 上运行自己的生成式 AI 模型很有趣?我希望你会。
在个人设备上运行的开源 AI 模型是最令修补者兴奋的领域之一,因为我们没有人拥有庞大的 GPU 池来实际训练基础模型。这将使新一代的应用程序既超级智能,又保留我们的数据隐私。
接下来是什么?
祝您在设备上愉快地修改人工智能、开源代码!