大语言模型因其出色的自然语言理解和生成能力而迅速被广泛使用,llama.cpp
大幅降低了进行大语言模型推理的门槛,MTT GPU 同样也是 llama.cpp
支持的运行平台,能够充分利用硬件的性能来助力用户的大语言模型应用。
本文主要介绍了如何在摩尔线程 MTT S80/S3000/S4000 GPU 上使用 llama.cpp
进行大语言模型 (LLM) 推理。文章详细描述了 llama.cpp
项目的背景、关键特点、支持的模型以及在 MUSA 架构上的优化。通过提供具体的操作步骤和 Docker 镜像,读者可以轻松在本地设备上运行 LLaMA 等大模型,实现高效的端侧推理。文章还包含了演示视频,展示了在 MTT S80 GPU 上运行 llama.cpp
的实际效果。
什么是 llama.cpp?
llama.cpp 是一个纯 C/C++ 实现的项目,旨在简化大语言模型 (LLM) 的推理过程,并在多种硬件环境下提供最先进的性能支持,无论是本地部署还是云端运行。其主要目标是以最小的设置和依赖,让用户在广泛的硬件平台上轻松进行 LLaMA 等大模型的推理。
关键特点
- 使用 C/C++ 实现,无外部依赖的轻量级实现,提供了简洁高效的推理框架。
- 支持不同厂商的不同架构的加速器并对不同的硬件平台进行了特定优化。
- 多种位深的量化支持,能够显著提升推理速度并减少内存占用。
支持的模型
llama.cpp
支持多种语言模型,包括 LLaMA、Mistral、Falcon、Gemma、Qwen、Baichuan、Aquila 等主流模型,以及各种多模态模型如 LLaVA 和 MobileVLM,覆盖广泛的推理需求。
摩尔线程 MUSA 架构支持
摩尔线程 MUSA 架构是 MTT GPU 支持的通用计算架构,llama.cpp
适配了这种计算架构。在 MTT S80/S3000/S4000 GPU 上,用户可以通过 llama.cpp
官方提供的一系列容器镜像来使用。
ghcr.io/ggerganov/llama.cpp:full-musa
: 该镜像包含主执行文件以及将 LLaMA 模型转换为 ggml 格式并进行 4-bit 量化的工具。ghcr.io/ggerganov/llama.cpp:light-musa
: 该镜像仅包含主执行文件。ghcr.io/ggerganov/llama.cpp:server-musa
: 该镜像仅包含 server 执行文件。
运行 llama3.2:1B
llama3.2:1B 是一个指令微调生成模型,在较小参数量下提供了不错的模型性能,为了方便大家快速上手 MTT GPU 上 llama.cpp 的使用,我们选用这个模型进行演示。
准备工作
以下代码运行在 x86 架构的 Ubuntu 20.04/22.04 系统。
配置容器运行时
请参考以下链接安装和配置容器运行时。
- 安装 Docker: Docker 安装指南
- 安装 MTT S80/S3000/S4000 最新驱动 (当前为 rc3.1.0): MUSA SDK 下载
- 安装 MT Container Toolkit (当前为 v1.9.0): MT CloudNative Toolkits 下载
检查容器运行时配置是否正确,确认输出的默认运行时为 mthreads
。
$ (cd /usr/bin/musa && sudo ./docker setup $PWD)
$ docker info | grep mthreads
Runtimes: mthreads mthreads-experimental runc
Default Runtime: mthreads
下载 llama3.2:1B 模型
$ export MODEL_DIR=$HOME/models
$ export MODEL_URL='https://registry.ollama.ai/v2/library/llama3.2/blobs/sha256:74701a8c35f6c8d9a4b91f3f3497643001d63e0c7a84e085bed452548fa88d45'
$ mkdir -p $MODEL_DIR
$ wget -q --show-progress -O $MODEL_DIR/llama3.2_1b_q8_0.gguf $MODEL_URL
下载 llama.cpp 容器镜像
$ docker pull ghcr.io/ggerganov/llama.cpp:light-musa
运行 llama3.2:1B
$ docker run -it -v $HOME/models:/models ghcr.io/ggerganov/llama.cpp:light-musa \
-m /models/llama3.2_1b_q8_0.gguf -ngl 999 -n 512 -co -cnv \
-p "You are a helpful assistant."
在该文档可以查看更详细的
llama.cpp
命令行工具的参数说明。
演示视频
对于如上步骤,点击查看在 MTT S80 上实际录制的效果。https://asciinema.org/a/680490