在 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

相关推荐
agicall.com2 小时前
座机通话双方语音分离技术解决方案详解
人工智能·语音识别·信创电话助手·座机语音转文字·固话座机录音转文字
AI机器学习算法2 小时前
《动手学深度学习PyTorch版》笔记
人工智能·学习·机器学习
Goboy2 小时前
「我的第一次移动端 AI 办公」TRAE SOLO 三端联动, 通勤路上就把活干了,这设计,老罗看了都想当场退役
人工智能·ai编程·trae
qq_452396232 小时前
第二十篇:《UI自动化测试的未来:AI驱动的智能测试与低代码平台》
人工智能·低代码·ui
视觉&物联智能3 小时前
【杂谈】-人工智能风险文化对组织决策的深远影响
人工智能·安全·ai·agi
β添砖java3 小时前
深度学习(12)Kaggle房价竞赛
人工智能·深度学习
冬奇Lab3 小时前
RAG 系列(十):混合检索——让召回更全面
人工智能·llm
冬奇Lab3 小时前
一天一个开源项目(第95篇):Claude for Financial Services - Anthropic 官方金融行业 AI 代理套件
人工智能·开源·资讯
bbsh20993 小时前
AI辅助编程时代,企业级网站系统建设为什么还需要专业平台?
人工智能
05候补工程师3 小时前
[实战复盘] 拒绝 AI 屎山!我从设计模式中学到的“调教”AI 新范式
人工智能·python·设计模式·ai·ai编程