在 MTT GPU 上使用 llama.cpp 推理

大语言模型因其出色的自然语言理解和生成能力而迅速被广泛使用,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 官方提供的一系列容器镜像来使用。

  1. ghcr.io/ggerganov/llama.cpp:full-musa: 该镜像包含主执行文件以及将 LLaMA 模型转换为 ggml 格式并进行 4-bit 量化的工具。
  2. ghcr.io/ggerganov/llama.cpp:light-musa: 该镜像仅包含主执行文件。
  3. ghcr.io/ggerganov/llama.cpp:server-musa: 该镜像仅包含 server 执行文件。

运行 llama3.2:1B

llama3.2:1B 是一个指令微调生成模型,在较小参数量下提供了不错的模型性能,为了方便大家快速上手 MTT GPU 上 llama.cpp 的使用,我们选用这个模型进行演示。

准备工作

以下代码运行在 x86 架构的 Ubuntu 20.04/22.04 系统。

配置容器运行时

请参考以下链接安装和配置容器运行时。

  1. 安装 Docker: Docker 安装指南
  2. 安装 MTT S80/S3000/S4000 最新驱动 (当前为 rc3.1.0): MUSA SDK 下载
  3. 安装 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

相关推荐
Che_Che_20 分钟前
Cross-Inlining Binary Function Similarity Detection
人工智能·网络安全·gnn·二进制相似度检测
哈市雪花21 分钟前
图像处理 之 凸包和最小外围轮廓生成
图像处理·人工智能·图形学·最小外围轮廓·最小外包
LittroInno22 分钟前
无人机侦察打击方案(3)
人工智能·无人机
如若12323 分钟前
实现了图像处理、绘制三维坐标系以及图像合成的操作
图像处理·人工智能
谢眠36 分钟前
机器学习day6-线性代数2-梯度下降
人工智能·机器学习
sp_fyf_20241 小时前
【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合
人工智能·深度学习·神经网络·机器学习·语言模型·自然语言处理
CoderIsArt2 小时前
基于 BP 神经网络整定的 PID 控制
人工智能·深度学习·神经网络
开源社2 小时前
一场开源视角的AI会议即将在南京举办
人工智能·开源
FreeIPCC2 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
机器之心2 小时前
全球十亿级轨迹点驱动,首个轨迹基础大模型来了
人工智能·后端