
奥本 AI 将所有的最新 AI 聚合到了一起,为您开启多模型 AI 绘画新时代!
扫码即刻关注公众号
如何在家用设备上运行 Llama 3.1 405B?构建 AI 集群!
6 个月前
如何在家用设备上运行 Llama 3.1 405B?构建 AI 集群!
Llama 3.1 405B 是一个大型的人工智能模型,它需要大量的计算资源来运行。如果你想在家用设备上运行这样的模型,你需要构建一个 AI 集群。以下是一些步骤来帮助你实现这个目标:
-
评估需求:首先,你需要了解 Llama 3.1 405B 模型的硬件和软件需求。这可能包括高性能的 GPU、大量的内存和存储空间。
-
选择硬件:根据模型的需求,选择适合的硬件组件。这可能包括多个 GPU、CPU、内存条和高速存储设备。
-
构建集群:将所选的硬件组件组装成一个集群。这可能涉及到设置网络、安装操作系统和配置硬件。
-
安装软件:在集群上安装必要的软件,包括操作系统、驱动程序、AI 框架(如 TensorFlow 或 PyTorch)和其他依赖项。
-
配置环境:配置 AI 集群的环境,以确保所有组件都能协同工作。这可能包括设置网络通信、分配资源和优化性能。
-
部署模型:将 L
分布式羊驼 在开放的大型语言模型(LLM)和封闭的大型语言模型之间的竞争中,开放模型的最大优势在于您可以在本地运行它们。您不需要依赖外部提供商,也不需要支付除电力和硬件成本之外的任何额外费用。然而,随着模型规模的增加,这种优势开始减弱。运行需要大量内存的巨大模型并不容易。幸运的是,张量并行性和分布式推理可能是有所帮助的。 张量并行
在大型语言模型(LLMs)中的大多数计算涉及矩阵乘法,这占所有计算的大约97-98%。矩阵乘法很容易在多个CPU/GPU核心上进行并行化。我们也可以在多个设备上这样做。设备可以以这种方式分割,即每个设备只计算矩阵乘法的一部分。如果单个设备可以在n
秒内计算矩阵乘法,那么两个设备应该在n / 2
秒内计算它!这就是张量并行性。
张量并行性,计算时间 这听起来非常有前景,但主要的瓶颈在于同步。我们可以加快乘法运算,但在某个点上,我们需要同步神经网络的状态。这需要时间。专业的AI集群使用高级链接在GPU之间进行通信(如NVLink),实现非常高的传输速度。然而,家用设备却有慢速的以太网。但令人惊讶的是,如果模型执行器的架构设计得减少传输大小,同步大型语言模型(LLMs)所需的数据量可以非常低。例如,将量化的羊驼3 8B格式转换为Q40格式(6.3 GB)需要
如果集群由2个设备组成,每个令牌需要同步的数据量非常非常低。 我们在这里。张量并行可以加速推理,但同步会减慢速度。这两个因素的结合将决定最终的性能。如果你有8个设备,并且可以用快速链接将它们连接起来,你将观察到显著的加速(
看起来这里非常有希望,你可以从10到
)。 那么,我们如何在家里运行一个大型模型呢?你需要一个实现这些想法的项目。让我来介绍这个项目。
项目。 分布式羊驼
分布式羊驼是一个项目,它允许你在多个设备上运行一个LLM模型。它使用张量并行性,并针对所需的少量数据同步进行了优化。分布式羊驼区分了你可以在设备上运行的两种类型的节点: * 根节点 — 作为集群的根节点的应用程序,负责协调集群。 * 工作节点 — 作为工作者执行根节点发出指令的应用程序。 目前,分布式Llama仅支持CPU推理,但将来会有所改变。
AI 集群拓扑,4个设备,总共256 GB RAM 所以,如果你的家庭集群由4个设备组成,你应该在第一个设备上运行根节点,并在其余设备上运行3个工作节点。分布式Llama会在所有设备上分配RAM使用。例如,如果一个LLM模型需要230 GB的RAM,每个节点应该有230 GB / n
的RAM。例外的是根节点,它需要比230 GB / n
多几个百分点的RAM,因为它需要在内存中保留一些额外的层。 运行405B模型
要运行 Llama 3.1 405B,我们需要克隆分布式 Llama 仓库,并在所有想要用于推理的设备上构建 dllama
应用程序。需要一个像 G++ 或类似编译器。 git clone https://github.com/b4rtaz/distributed-llama.git make dllama
然后,您需要将所有设备连接到同一个本地网络。您可以使用任何以太网交换机来实现这一点。正如我之前提到的,同步时间是一个重要因素,因此您应该使用尽可能快的交换机。千兆以太网是最低要求。您还可以考虑通过USB4连接设备,并创建一个USB4网状网络。接下来,您需要在工作设备上运行工作节点: ./dllama worker --port 9998 --nthreads 4
--nthreads
参数定义了处理时应使用多少个 CPU 核心。你应该将其设置为你的设备中的 CPU 核心数量。正如你所看到的,工作节点不需要模型文件。这些文件仅对根节点是必需的。在开始时,根节点将模型的所有切片分发到工作节点。 在我们运行根节点之前,我们需要将 Llama 3 405B 模型下载到根设备上,并将其转换为分布式 Llama 格式。确保您已在 HuggingFace 上接受了 Llama 3.1 许可证。您还需要一个大磁盘来处理此操作(大约需要 1.1 TB 的空闲空间)。您可以使用任何计算云服务提供商来完成此操作。 git lfs install git clone https://huggingface.co/meta-llama/Meta-Llama-3.1-405B-Instruct
现在你可以开始转换模型了。下面的命令将会把模型量化为Q40格式。 cd distribured-llama/converter python convert-hf.py path/to/Meta-Llama-3.1-405B-Instruct q40 meta-llama-3-405b
请记住,这将需要几个小时。接下来,你需要转换分词器或下载一个已经转换过的。你可以使用
wget https://huggingface.co/b4rtaz/Llama-3_1-8B-Q40-Instruct-Distributed-Llama/resolve/main/dllama_tokenizer_llama_3_1.t?download=true
(!) 很快将可以下载转换为分布式羊驼格式的模型。 现在你可以在根节点上运行推理了。 ./dllama inference --model dllama_model_meta-llama-3-405b_q40.m --tokenizer dllama_tokenizer_llama_3_1.t --buffer-float-type q80 --prompt "Hello world" --steps 64 --nthreads 4 --workers 10.0.0.1:9998 10.0.0.2:9998 10.0.0.3:9998
请注意,--workers
参数接受工作节点的 IP 地址和端口。地址之间用空格分隔。此外,您可以通过设置 --steps N
参数来定义您期望的单词预测数量。 如果你想运行支持 /v1/chat/completions
端点的API服务,你应该构建 dllama-api
应用程序,并在根设备上运行它,而不是 dllama inference
。 ./dllama-api --model dllama_model_meta-llama-3-405b_q40.m --tokenizer dllama_tokenizer_llama_3_1.t --buffer-float-type q80 --nthreads 4
分布式Llama还支持--kv-cache-storage disk
参数,该参数通过将KV缓存移动到磁盘上来减少RAM的使用。Llama 3.1模型需要大约34 GB的RAM来存储完整的上下文(F32)在内存中(131k个token)。通过设置这个参数,你可以减少RAM的使用,但你需要额外的磁盘空间。请注意,KV缓存会分布在所有节点上,因此你需要为每个节点设置这个选项。 就是这样!不要忘记在...上分享你的结果。
赋迪奥本AI
上海赋迪网络科技
电话:18116340052