首页 > 其他分享 >[机器学习]-如何在 MacBook 上安装 LLama.cpp + LLM Model 运行环境

[机器学习]-如何在 MacBook 上安装 LLama.cpp + LLM Model 运行环境

时间:2024-05-31 11:02:13浏览次数:28  
标签:LLama AI 模型 GGUF LLM chat llama cpp

如何在 MacBook 上安装 LLama.cpp + LLM Model 运行环境

1. 问题与需求

近段时间想学习一下大语言模型的本地化部署与应用。首先遇到的就是部署硬件环境的问题。我自己的笔记本是一台 MacBook Pro M3,没有 Nvidia 的
GPU 支持,但机器性能不错。所以打算根据网上资料尝试在自己笔记本上部署一个本地运行的大语言模型服务。

2. 安装环境与目标

  • 硬件环境:MacBook Pro, CPU M3 Max,内存36GB, 操作系统 macOS Sonaoma 14.2.1
  • 安装目标:选择安装 #零一万物 大语言模型做测试(后续用 Yi 代表)。其它模型的安装方法都类似。

3. 相关资料

官方部署说明引用 :if you have limited resources (for example, a MacBook Pro),
you can use llama.cpp.

关于 llama.cpp 的简介
:大型语言模型(LLM)正在给各个行业带来革命性的变化。从客户服务聊天机器人到复杂的数据分析工具,这项强大技术的能力正在重塑数字交互和自动化的格局。然而,LLM的实际应用受到需要高性能计算硬件环境的限制。这些模型通常需要复杂的硬件和广泛的依赖关系,这使得在更受约束的环境中采用它们变得困难。而
LLaMa.cpp 正是为了解决这个问题而诞生。LLaMa.cpp由Georgi Gerganov开发,它在高效的C/
c++中实现了Meta的LLaMa架构,它是围绕LLM推理最具活力的开源社区之一。LLaMa.cpp
为重量级框架提供了一种更轻、更便携的替代方案。它使用C++语言来运行模型,而不是使用对计算资源消耗更多的 python 语言环境。因此
llama.cpp 使得 LLM 能在配置相对专用服务器较低的普通机器上运行。例如在没有Nivida GPU支持的 MacBook Pro 上运行。

关于下载模型的 GGUF 文件格式 :GGUF 和 GGML 是 Georgi Gerganov
开发的量化模型的文件格式。要与这些文件交互,需要使用llama.cpp。这些格式支持从单个文件进行有效推断,使LLM部署过程更加简单和经济高效。GGUF
是由 llama.cpp 团队于2023年8月21日推出的,它不仅是另一个标准,而且是对GGML的直接而实质性的改进。因此现在都使用 GGUF
格式。参考文献: [Why GGUF Is a Better File Format](https://deci.ai/blog/ggml-vs-
gguf-comparing-formats-amp-top-5-methods-for-running-gguf-files/)

4.安装过程

  • 第一步:安装# git-lfs 环境支持。
    git-lfs
    是在git上存储大文件的一种方式,它将音频样本、视频、数据集和图形等大文件替换为Git内的文本指针,同时将文件内容存储在远程服务器上,如GitHub.com或GitHub
    Enterprise。在控制台执行如下命令安装

    brew install git-lfs
    
  • 第二步:安装 llama.cpp
    在本地创建一个llm目录,进入llm目录后,执行如下代码从 github 上克隆一份 llama.cpp 的代码

    mkdir llm
    

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

  • 第三步:下载模型

    • 执行下面的命令通过 pointers 方式从 huggingface 上克隆 XeIaso/yi-chat-6B-GGUF 模型

      GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/XeIaso/yi-chat-6B-GGUF

    • 进入 yi-chat-6B-GGUF 目录,下载一个量化的Yi模型(Yi -chat-6b. q2_k .gguf),请运行以下命令。

      cd ./yi-chat-6B-GGUF/
      git-lfs pull --include yi-chat-6b.Q2_K.gguf

执行过程中发现直接使用国外 huggingface 提供的下载路径速度太慢,对于上G的模型文件,没法直接下载。还好国内有 huggingface 的镜像站点
https://hf-mirror.com 提供高速下载。所以参照网站说明转成从国内景象下载。

  • 第四步:通过镜像下载模型

hf-mirror.com 网站提供了四种模型下载方法,这里使用第三种方式(网站提供的数据下载命令脚本来下载)

* 安装下载脚本 hfd.sh

    wget https://hf-mirror.com/hfd/hfd.sh
chmod a+x hfd.sh


* 设置环境变量

    export HF_ENDPOINT=https://hf-mirror.com

这里是零时设置环境变量 HF_ENDPOINT,也可以将该设置直接写入到环境配置文件中。

* 下载模型

    mkdir models
cd models
brew install aria2
./hfd.sh XeIaso/yi-chat-6B-GGUF --repo-type dataset --tool aria2c -x 4

先创建了一个目录用于存储模型(使用 huggingface 官方的下载命令会将模型下载到默认目录 ~/.cache/huggingface/hub 下,
这里用的自定义目录来存储);接下来在MacOS中安装多线程的下载工具 aria2,因为 hfd.sh
脚本中会调用这个工具进行数据下载;XieIaso/yi-chat-6B-GGUF 是要下载的模型名字(因为要使用 llama.cpp
运行模型,所以下载的GGUF格式的文件)

  • 第五步:在终端执行模型推理

模型推理 :在LLM(Large Language Model)模型的安装部署过程中,“Perform inference”
步骤的作用是执行推理或预测。在这个步骤中,模型会接收输入数据(通常是文本或其他形式的数据),然后对其进行处理以生成相应的输出。在自然语言处理的情境下,推理通常指的是将输入文本传递给模型,然后模型基于其训练过程中学到的知识和模式,生成相应的输出,例如文本分类、语言生成、问答等任务。在进行推理时,模型可能需要在部署环境中加载相关的权重参数以及其他必要的资源,然后通过计算对输入数据进行处理,并生成输出。这个过程通常是在生产环境中实时进行的,因此在模型部署过程中确保推理过程的有效性和高效性非常重要。

1)先进入到 llama.cpp 目录,并运行以下命令;
2)通过 -j4 参数指定使用4个线程编译 llama.cpp 原代码;
3)编译完成后,目录下会生成可以执行文件 main;
4)执行 main 程序,同时参数 -m 指定下载模型的位置(请根据自己下载模型的路径进行修改),-p 以及要进行推理的文字, -n
用于预测的token数量,-e 处理提示词中的转意字符(\n, \r, \t, ', ", \)。

    % make -j4 
% ./main -m ../models/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf -p "How do you feed your pet fox? Please answer this question in 6 simple steps:\nStep 1:" -n 384 -e 

看到类似如下的输出日志信息,说明 llama.cpp 加载模型数据并推理成功了。

    How do you feed your pet fox? Please answer this question in 6 simple steps:
Step 1: Provide the necessary living space: Foxes are wild animals and require a secure enclosure to live safely. This means providing them with a properly constructed cage, fencing, or an appropriate habitat that meets their needs for safety and comfort.
Step 2: Ensure proper diet and nutrition: Foxes have specific dietary requirements. They eat meat, which includes a variety of prey items (e.g., rodents, rabbits) and vegetation (e.g., fruits, seeds, insects). Feeding your pet fox a balanced diet is crucial for its health and well-being.
Step 3: Ensure fresh water is available: Like any other animal, foxes need access to fresh water daily. You can provide this by setting out bowls of clean water or allowing them to drink from streams or puddles if they're outdoors.
Step 4: Regularly monitor your pet's health: Keep an eye on your pet fox for signs of illness or discomfort. Regular check-ups with a veterinarian can help you catch any issues early and address them promptly.
Step 5: Socialize responsibly: Interactions between humans and wild animals should be managed to avoid habituation, which can lead to behavioral problems in captive foxes. Always approach your pet with kindness and respect their need for freedom when possible.
Step 6: Have fun together! Engage in activities that you both enjoy - playtime, walks, or simply observing nature around the home environment. These shared experiences can strengthen your bond while providing enrichment for your pet fox.What are some tips for maintaining a good relationship with your pet fox?Maintaining a good relationship with your pet fox involves understanding their natural behaviors and meeting their needs in a responsible way. Here are some key tips:

1. **Understand Their Needs**: Foxes require large spaces to roam, socialization opportunities (
llama_print_timings:        load time =     175.41 ms
llama_print_timings:      sample time =      47.29 ms /   384 runs   (    0.12 ms per token,  8119.42 tokens per second)
llama_print_timings: prompt eval time =      90.41 ms /    23 tokens (    3.93 ms per token,   254.39 tokens per second)
llama_print_timings:        eval time =    8936.37 ms /   383 runs   (   23.33 ms per token,    42.86 tokens per second)
llama_print_timings:       total time =    9145.14 ms /   406 tokens
ggml_metal_free: deallocating
Log end
  • 第六步:在Web界面执行模型推理

运行以下命令初始化一个轻量简洁的 Web 聊天机器人。

    ./server --ctx-size 2048 --host 0.0.0.0 --port 8888 --n-gpu-layers 64 --model ../models/yi-chat-6B-GGUF/yi-chat-6b.Q2_K.gguf

参数说明:
–ctx-size 提示词的上下文大小,默认512;
–host 绑定主机的IP地址,0.0.0.0是全部IP;
–port 监听端口;
-n-gpu-layers 存储在VRAM中的层数;
–model 加载的模型路径;

启动后,在浏览器中输入地址 http://127.0.0.1:8888 访问聊天页面

![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/f949e04161834f6588552632393f4db3.png#pic_center)

5. 结束语

通过该流程,实现了在普通笔记本的硬件环境上安装部署大语言模型。为程序员学习人工智能提供了一个基础的学习环境。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享!

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2024最新版CSDN大礼包:《AGI大模型学习资源包》免费分享!

标签:LLama,AI,模型,GGUF,LLM,chat,llama,cpp
From: https://blog.csdn.net/2401_85280307/article/details/139346629

相关文章