大语言模型部署:基于llama.cpp在Ubuntu 22.04及CUDA环境中部署Llama-2 7B

这篇具有很好参考价值的文章主要介绍了大语言模型部署:基于llama.cpp在Ubuntu 22.04及CUDA环境中部署Llama-2 7B。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

llama.cpp是近期非常流行的一款专注于Llama/Llama-2部署的C/C++工具。本文利用llama.cpp来部署Llama 2 7B大语言模型,所采用的环境为Ubuntu 22.04及NVIDIA CUDA。文中假设Linux的用户目录(一般为/home/username)为当前目录。

安装NVIDIA CUDA工具

NVIDIA官方已经提供在Ubuntu 22.04中安装CUDA的官方文档。本文稍有不同的是我们安装的是CUDA 11.8而不是最新的CUDA版本。这是因为目前PyTorch 2.0的稳定版还是基于CUDA 11.8的,而在实际各种部署中笔者发现按照PyTorch 2.0稳定版来锚定CUDA版本能够避免很多麻烦。当然了,对于llama.cpp本身来说这并不重要,因此读者可以随意选择适合的CUDA版本。

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
$ sudo dpkg -i cuda-keyring_1.1-1_all.deb
$ sudo apt update
$ sudo apt install cuda-11-8

安装完NVIDIA CUDA(其实是NVIDIA GPU驱动)之后应该重启系统一次,这样可以使得Linux内核能够正常编译并加载基于dkms的内核驱动模块。这里建议重启完之后运行一次nvidia-smi来确信系统中的显卡能够被NVIDIA驱动所识别。

$ sudo shutdown -r now

复制和编译llama.cpp代码源

在Ubuntu 22.04中,安装NVIDIA CUDA工具刚好会把llama.cpp所需的工具也全部安装好。因此,我们只要复制代码源并编译即可

$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp
$ make LLAMA_CUBLAS=1 LLAMA_CUDA_NVCC=/usr/local/cuda/bin/nvcc

安装NVIDIA CUDA工具并不会把nvcc(CUDA编译器)添加到系统的执行PATH中,因此这里我们需要LLAMA_CUDA_NVCC变量来给出nvcc的位置。llama.cpp编译完成后会生成一系列可执行文件(如main和perplexity程序)。为了简化内容,本文使用的是llama.cpp的make编译流程,有兴趣的读者可以参考llama.cpp的文档来使用cmake进行编译。

下载并运行Llama-2 7B模型

正常情况下,下载Llama系列模型应该参考Meta公司的模型申请页面。为节省时间,本文使用HuggingFace社区用户TheBloke发布的已进行格式转换并量化的模型。这些预量化的模型可以从HuggingFace的社区模型发布页中找到。在这个社区模型名称中,GGUF指的是2023年八月llama.cpp新开发的一种模型文件格式。

下载模型需要首先安装并初始化git-lfs(GIt Large File Storage)。

$ sudo apt install git-lfs
$ git lfs install

上面的命令运行完毕后,终端窗口里面应该显示“Git LFS initialized.”,现在我们就可以复制模型源了。因为这些模型文件非常大,此处我们暂时只复制文件的链接,不下载文件本身。

$ GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/TheBloke/Llama-2-7B-GGUF

我们只需要这个模型源中的其中一个文件,即llama-2-7b.Q4_0.gguf,表示的是一种4比特量化预处理的Llama 2 7B模型。有兴趣的读者还可以按照本文的方法尝试一些其他的模型文件。

$ cd Llama-2-7B-GGUF
$ git lfs pull --include llama-2-7b.Q4_0.gguf

在预量化的模型文件下载完成后,就可以运行llama.cpp中编译完成的各种程序了。此处我们运行一下在终端中的交互式的文本生成过程。

$ cd ~/llama.cpp
$ ./main -m ~/Llama-2-7B-GGUF/llama-2-7b.Q4_0.gguf --color \
    --ctx_size 2048 -n -1 -ins -b 256 --top_k 10000 \
    --temp 0.2 --repeat_penalty 1.1 -t 8 -ngl 10000

在上面的命令行中,最后的参数“-gnl 10000”指的是将最多10000个模型层放到GPU上运行,其余的在CPU上,因此llama.cpp本身就具有异构运行模型的能力。不过此处Llama 2 7B模型的总层数都不足10000,因此模型全部都会在GPU上面运行。大家可以按照屏幕上此时的说明来试试这个模型的交互能力。

部署Llama-2 7B模型

刚才提到,llama.cpp编译生成了许多有用的程序。其中,main是用于在终端窗口中显示文本生成的工具,perplexity用来对给定数据集计算困惑度以对模型进行测评,而server程序则可以部署一个简易的HTTP API。

$ ./server -m ~/Llama-2-7B-GGUF/llama-2-7b.Q4_0.gguf \
    -c 2048 -ngl 10000 --host localhost --port 8080

这样,我们就可以通过访问http://localhost:8080/completion来得到模型生成的结果了。这里可以用curl尝试一下

$ curl --request POST \
    --url http://localhost:8080/completion \
    --header "Content-Type: application/json" \
    --data '{"prompt": "Building a website can be done in 10 simple steps:","n_predict": 128}'

llama.cpp代码源中有server程序的更多文档。本文的步骤也适用于除llama 2 7B外其他与llama.cpp兼容的模型。文章来源地址https://www.toymoban.com/news/detail-735895.html

到了这里,关于大语言模型部署:基于llama.cpp在Ubuntu 22.04及CUDA环境中部署Llama-2 7B的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu22.04部署K8s集群

    你好! 本文实验在 Windows11 安装的 VMware Workstation Pro 17.0 上,建立3台带 Ubuntu22.04 操作系统的虚拟机( master-100, k8s_worker1, k8s_worker2 )为环境。 官网下载: https://www.vmware.com/cn/products/workstation-pro.html 有30天免费试用、度娘或者 一键三连+评论 我给你发许可证 https://ubuntu.com/down

    2024年02月15日
    浏览(40)
  • Ubuntu22.04安装phpMyAdmin(基于MariaDB)

    访问命令行并使用 apt 包管理器更新 Ubuntu 包存储库和已安装的包: sudo apt update sudo apt upgrade -y 1.运行以下命令以安装 phpMyAdmin 及其依赖项: sudo apt install phpmyadmin -y 等待安装完成 2.安装程序会提示您选择要自动配置的 Web 服务器。如果系统使用 Apache,则 apache2 选项已突出显示

    2024年02月03日
    浏览(34)
  • Ubuntu22.04部署K8S1.27.2版本集群

    一、设置主机名并在 hosts 文件中添加条目 1、登录节点使用 hostnamectl 命令设置 hostname #在master中:      172.18.10.11 $ sudo hostnamectl set-hostname \\\"k8s-master\\\" #在work1节点中:  172.18.10.12 $ sudo hostnamectl set-hostname \\\"k8s-worker1\\\" #在work2节点中:  172.18.10.13 $ sudo hostnamectl set-hostname \\\"k8s-worke

    2024年02月09日
    浏览(54)
  • 【mysql部署】在ubuntu22.04上安装和配置mysql教程

    1. 更新软件包列表: 2.安装 MySQL 服务器: 3.设置 MySQL 安全性: 按照提示输入相关问题的回答,例如删除匿名用户、禁止 root 远程登录等。 这里建议直接输入 y 。 这里根据自己要设置的密码强度自行选择,这里我选择输入 0 。 后面还有几个选项,默认输入 y 就行。 4.启动 M

    2024年03月27日
    浏览(45)
  • 基于 RK3588 构建 Ubuntu 22.04 根文件系统

    以下内容在 Rockchip 的 Linux SDK 目录下完成,请先解压 Linux SDK。 1.1 下载 Ubuntu Base Ubuntu-Base 是Ubuntu官方构建的ubuntu最小文件系统,基础包大小通常只有几十兆,可以很方便的个性化定制嵌入式环境。使用北京外国语大学镜像站加速下载,注意选择根据开发板架构选择arm64或其他

    2024年02月13日
    浏览(119)
  • 为 Ubuntu22.04 系统添加中文输入法并设置界面语言为中文

    为 Ubuntu22.04 系统添加中文输入法 请移步原链接查看 2、单击桌面右上角图标,点击 Settings,在弹出的窗口中,点击 Region Language,然后点击 Manage Installed Languages 3、或者通过这种方式打开,打开 Show Applications,找到 Language Support 并打开, 4、如果第一次点击的话,应该会弹出如

    2024年04月14日
    浏览(41)
  • 【Matter】基于Ubuntu 22.04 编译chip-tool工具

    编译过程有点曲折,做下记录,过程中,有参考别人写的博客,也看github 官方介绍,终于跑通了~ 环境说明: 首先需要稳定的梯子,可以访问“外网” ubuntu 环境,最终成功实验在Ubuntu 22.04,应该主要体现在python 库的版本要求 基础: 关于梯子,我使用的是虚拟机NAT方式上网

    2024年02月15日
    浏览(47)
  • 【ubuntu 22.04】安装中文版系统、中文语言包和中文输入法

    在系统安装中的键盘布局选择时,选择Chinese - Chinese,此时会自动安装所有的中文语言包和ibus中文输入法 系统安装成功重启后,点击设置 - 区域和语言 - 管理已安装的语言 * 根据提示安装更新后,将汉语(中国)置顶,并点击应用到整个系统,重启执行操作,建议保留英文的

    2024年02月21日
    浏览(53)
  • 基于Ubuntu22.04的Samba服务器搭建教程(新手保姆级教程)

    Samba 是在 Linux 和 UNIX 系统上实现SMB 协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型

    2024年04月08日
    浏览(60)
  • Ubuntu 22.04LTS安装VNC Server 并配置基于ssh的加密连接

    1.安装tiger vnc server 使用下面的 apt 命令安装 TigerVNC 服务器软件包。 输入  Y  进行确认,然后按 回车 键继续安装。现在安装将开始。  2.初始化 VNC 服务器 切换到需要使用的用户 cd username  使用以下命令初始化 VNC 服务器配置。命令行 vncserver 可用于管理 VNC 服务器配置,包括

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包