在 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

相关推荐
纪伊路上盛名在11 分钟前
(鱼书)深度学习入门3:手搓神经网络
人工智能·深度学习·神经网络·机器学习
KaneLogger33 分钟前
赛博保姆出列!Gemini CLI & Claude Code + Kimi 手把手教程
人工智能·程序员
一碗白开水一1 小时前
自动驾驶激光3D点云处理系统性阐述及Open3D库函数应用
人工智能·3d·自动驾驶
机器之心2 小时前
两周反转:Anthropic「闪电」夺回被Cursor挖走的核心编程大将
人工智能
阿里云大数据AI技术2 小时前
Post-Training on PAI (4):模型微调SFT、DPO、GRPO
人工智能·算法·云计算
_一条咸鱼_2 小时前
LangChain解析器性能优化方法深入分析(22)
人工智能·面试·langchain
_一条咸鱼_2 小时前
LangChain处理解析错误的容错策略源码级分析(21)
人工智能·面试·langchain
PineappleCoder2 小时前
LLMs:AI时代的“大脑”如何重塑未来?
人工智能
明明跟你说过3 小时前
Grok 系列大模型:xAI 的智能宇宙探秘
人工智能·语言模型·自然语言处理
羑悻的小杀马特3 小时前
从混沌到秩序:数据科学的热力学第二定律破局——线性回归的熵减模型 × 最小二乘的能量最小化 × 梯度下降的负反馈控制系统,用物理定律重构智能算法的统一场论
人工智能·算法·机器学习