xSky 实验室关注高性能计算,分布式系统/存储,大数据/机器学习/WebRTC
目录
  • 首页
  • 技术相关
  • 原创作品
  • 人工智能/机器学习
  • 系统与架构
  • 数据库/数据分析
  • 分布式系统/存储
  • 服务端开发
  • WEBRTC研究
  • 开发调试
  • 网络与安全
  • 常用工具
  • 杂七杂八

LLAMA模型试玩

2022-08-28 05:47:50

最近 ChatGPT 着实火了一把,据说 GTP4 也即将发布。现在Large Language Model(LLM )也受到了类似图像生成的 Stable Diffusion 那种高光时刻。

在之前我一直有一个错误的观念,认为谁掌握着计算能力,谁才能得到最好的AI模型。直到 Facebook 2023 年二月 24 号发布了论文“LLaMA: Open and Efficient Foundation Language Models”。粗略阅读之后,我才知道原来在一个限定的预算下,大参数模型并不如小参数模型用更多的数据进行训练。

当前,许多 AI 模型都依赖 CUDA,比如 nanoGPT,这也就意味着必须有 NVIDIA 的 GPU来训练和运行。有这样的硬件限制,对于我这种只是想初步了解一下 LLMs 的一些基本概念的业余爱好者变成了一个比较高的门槛。

所幸的是 Georgi Gerganov 用 C/C++ 基于 LLaMA 实现了一个跑在 CPU 上的移植版本 llama.cpp。llama.cpp 甚至将 Apple silicon 作为一等公民对待,这也意味着苹果 silicon 可以顺利运行这个语言模型。

环境准备

我用来测试的笔记本是非常普通的 AMD Ryzen 7 4700,内存也只有 16G。不过结果看起来还是非常流畅的。

由于需要从源代码编译 llama.cpp,所以 build-essential 是必须得装的。

Python 的版本就使用 Ubuntu2204 默认的 Python 3.10.6 即可。

首先安装编译和运行必须的系统依赖,一般来说 python3 默认应该是装了的,不过这里包括进来并不会有其他影响。

apt install build-essential python3

然后需要从 github 上克隆 llama.cpp 的代码库。

git clone https://github.com/ggerganov/llama.cpp

在 llama.cpp 里,有一个空的 models 目录。需要向 Facebook 申请下载模型。不过既然是开源模型,那么自然就有前人开路。有人在这个 pull request 里提交了 BitTorrent 的种子链接。而我更推荐使用 llama-dl 这个脚本。可以自动下载 7B、13B、30B、65B 四个模型,还会对下载的模型进行自动校验。

这个下载脚本的作者是建议用 curl -o- 下载脚本后,直接管道命令输出到 bash 运行。不过我建议用 wget 下载脚本,并保存到 models 目录。一方面避免了脚本攻击,另一方面,完整的四个模型的总体积非常大。如果只是为了测试的话,只下载 7B 这个模型可以节约大量的下载时间和数百G的磁盘空间。

wget https://raw.githubusercontent.com/shawwn/llama-dl/56f50b96072f42fb2520b1ad5a1d6ef30351f23c/llama.sh

编辑 11 行

MODEL_SIZE="7B,13B,30B,65B"

更改为

MODEL_SIZE="7B"

这样就只会下载 13G 的 7B 模型了。13B模型有25G 大小,30B 模型有 64G 的大小。我的磁盘空间不够下载 65B 模型,不过我猜测至少有 130-140G。

模型准备

模型的转换使用了 python 脚本,因此需要先对 python 的环境进行配置和安装。

pipenv shell --python 3.10
pip install torch numpy sentencepiece

接下来,将 LLaMA 模型转换为”ggml format“,也就是 Georgi Gerganov machine learning format。

python convert-pth-to-ggml.py models/7B/ 1

这个格式转换脚本,会将原始的模型 models/7B/consolidated.00.pth 转换为 models/7B/ggml-model-f16.bin 的一个同样是 13G 的 ggml 模型。第三个参数为0时,使用 float32,转换的结果文件会大一倍。该参数值为 1,则使用 float16 这个默认值。

接下来,就是模型的“量化”,或者说离散化。

 

这里的第三个参数,同样有两个可选值。2 是 q4_0,3 是 q4_1。由于对人工智能的基本概念不熟悉,我对于这两个类型到底有什么区别完全没有头绪,所以也是随意选择了一个用来测试。如果有知道的朋友,请务必告知一下。

运行模型

在项目跟目录运行 make 可以编译主要使用的工具 main,编译完成后,会显示 main 的帮助信息。

然后只要运行 main 指定 prompt 和量化后的模型文件即可。

例如,

./main -m ./models/7B/ggml-model-q4_0.bin -p 'Zealandia was a continent'

下面是一种可能的结果,

 

后记

在用惯了 ChatGPT 之后,使用 LLaMA,在选择合适的 prompt 上会有一些不适应。我会在研究之后,再写一些文章来解释。

同时,由于 13B 开始的大模型都是多个文件,需要针对每个转化后的文件都进行量化处理。

对于 Apple silicon 运行模型,建议参考“Running LLaMA 7B and 13B on a 64GB M2 MacBook Pro with llama.cpp”。虽然步骤与本文并无本质差异,不过还是建议读一下。另外,这篇文章展示了如何对大模型进行量化。

至于不同的参数量的模型的运行,到底会有什么差异,也得再多做一些测试才能知道了。

为了玩得更透彻一些,从明天起,我还是开始啃 LLaMA 的论文吧。

 

 

在 Ubuntu 2204 上运行 LLaMA.cpp - Gopher beyond El[i]phants (mikespook.com)

 

By:xSky | 技术相关 |

  • 分类目录

    • 技术相关 (34)
    • 原创作品 (13)
    • 人工智能/机器学习 (6)
    • 系统与架构 (9)
    • 数据库/数据分析 (11)
    • 分布式系统/存储 (4)
    • 服务端开发 (7)
    • WEBRTC研究 (7)
    • 开发调试 (7)
    • 网络与安全 (9)
    • 常用工具 (9)
    • 杂七杂八 (6)
  • 最新文章

    • WSL从C盘迁移到其他盘区
    • 赵何娟:中国AI追随之路的五大误区,我们至少落后十年
    • zap  发送日志到 websocket
    • QUIC(隐藏的)超能力
    • MYSQL 生成日期/时间序列总结
    • Linux bash终端设置代理(proxy)访问
    • centos 下 yum安装python3
    • 使用SQL查询Milvus 向量数据库
    • 浅谈 MySQL 新的身份验证插件 caching_sha2_password
    • Milvus v2.2.1 开源向量搜索引擎使用教程
    • 部署了一个SRS的demo
    • Dockerfile 详解
    • Docker常用命令
    • Tus文件上传协议
    • 编译运行Milvus
    • MinIO 快速入门
    • ESP32
    • Prometheus监控报警系统搭建
    • go语言JSON字典模拟
    • go语言的sql解析器
    • Grafana配置数据源,自定义查询语法
    • TDengine + Telegraf + Grafana
    • gRPC-Gateway 返回JSON数据int64类型被转为string类型问题
    • LLAMA模型试玩
    • 语音识别的一些开源项目整理
    • 使用MYSQL8进行统计分析
    • 记录FFmpeg抽帧、合流、转码、加水印等操作
    • 移动网络弱网处理研究
    • 翻译:使用 Semgrep 进行热点代码评审
    • 共享内存并发路线图
  • 链接

    • xSky的Blog
    • 我的Github
    • 实时监控图表
    • 预印本
    • xRedis 在线文档
    • xSkyProxy
    • xChart 数据在线测试
    • 我的电子书
    • xChart 数据可视化系统
    • 树莓派技术圈
    • WebRTC开发者社区
  • 开源项目

    • xReis C++的redis客户端库
    • xBlog-C++ 博客程序
    • xSkyProxy-新型MySQL代理网关
    • 数据可视化平台- xChart
    • xhttpcache 高速数据缓存服务
    • xMonitor-图形监测工具
    • 网址收集

Powered By xBlog

Copyright 2010~2024 0xsky.com All Rights Reserved.