当前位置:   article > 正文

【部署LLaMa到自己的Linux服务器】_llama 在服务器上部署

llama 在服务器上部署
部署LLaMa到自己的Linux服务器
  • 一、官方方法(知道就好,具体操作用不上这个)
  • * 1、Llama2 项目获取
    
    • 1
    •   * 方法1:有git可以直接克隆到本地
      
      • 1
      • 方法2:直接下载
    • 2、LLama2 项目部署
    • 3、申请Llama2许可
    • 4、下载模型权重
    • 5、运行
  • 二、Huggingface版LLaMa2(具体操作看这里!!)
  • * 1、提交申请方法(稍微麻烦)
    
    • 1
    • 2、生成验证token(你有全局VPN的话可以用代码下载llama2模型权重,我没有)
    • 3、下载模型权重(是否含有-hf)
    • 4、不用官方验证获取LLaMa权重(我没用过)
    • 5、测试是否安装成功
  • 三、搭建text-generation-webui
  • * 1、创建虚拟空间
    
    • 1
    • 2、安装依赖包
    •   * 2.1 安装pytorch
      
      • 1
      • 2.2 下载项目
      • 2.3 安装依赖包(重要!!)
      • 3、运行!!!

这真的不是一个简单的过程,绕了不少弯路。

一、官方方法(知道就好,具体操作用不上这个)

1、Llama2 项目获取

方法1:有git可以直接克隆到本地

创建一个空文件夹然后鼠标右键,然后输入git clone https://github.com/facebookresearch/llama.git

方法2:直接下载

打开网站LLaMa git
官方
,直接下载zip文件就行

2、LLama2 项目部署

这里在conda中创建一个虚拟环境conda create -n 环境名字 python=x.x
创建成功之后使用cd命令或者直接在LLaMa文件夹右键打开终端,输入

# 常规安装命令
 pip install -e .
 # 国内环境可以使用清华源加速
 pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
  • 1
  • 2
  • 3
  • 4

这一步目的是安装LLama2运行所需要的依赖

3、申请Llama2许可

要想使用Llama2,首先需要向meta公司申请使用许可,否则你将无法下载到Llama2的模型权重。填入对应信息(主要是邮箱)后,勾选页面最底部的 “I
accept the terms and conditions”,点击 “Accept and Continue”,跳转到下图界面即可。

申请网站需要科学上网:Request access to the next version of
Llama

然后对应的邮箱得到验证的链接,这个https://download.llamameta.net/*? 开头的一大串链接即为下面下载模型时需要验证的内容。

4、下载模型权重

在LLaMa文件夹中打开终端,运行download.sh文件。./download.sh
第一个输入邮件中给你的超长链接,第二个输入你需要的模型。
我是选择7B和7B-chat

5、运行

下载完成之后,就可以使用啦

# 句子补全
 torchrun --nproc_per_node 1 example_text_completion.py \     --ckpt_dir llama-2-7b/ \     --tokenizer_path tokenizer.model \     --max_seq_len 128 --max_batch_size 4
 # 对话生成
 torchrun --nproc_per_node 1 example_chat_completion.py \     --ckpt_dir llama-2-7b-chat/ \     --tokenizer_path tokenizer.model \     --max_seq_len 512 --max_batch_size 4
  • 1
  • 2
  • 3
  • 4

命令的含义是

  • torchrun 是一个PyTorch提供的用于分布式训练的命令行工具
  • --nproc_per_node 1 这个选项指定在每个节点上使用1个GPU。意味着每个训练节点(可能是单个GPU或多个GPU)只使用一个GPU
  • --ckpt_dir llama-2-7b/和--tokenizer_path tokenizer.model 主要指定使用的模型和tokenizer的路径。这个可以在对应.py文件中写死入参避免重复指定。

二、Huggingface版LLaMa2(具体操作看这里!!)

1、提交申请方法(稍微麻烦)

使用[Meta官方的huggingface版本的Llama2模型](https://huggingface.co/meta-
llama)也需要向Meta公司申请验证链接(详见3、申请Llama2许可 ),此外还需使用申请账号登入huggingface官网,进入Meta
Llama 2页面,同意用户协议后并递交申请,等待Meta公司的审核通过,大概2~3个小时或者一两天。

只有提交后,才能下载官方的huggingface版本的权重文件。

2、生成验证token(你有全局VPN的话可以用代码下载llama2模型权重,我没有)

为了在客户端上访问带有权限的huggingface模型,huggingface登陆后,我们需要在token生成界面生成一个token用于验证

登录(没用过,一笔带过)
在客户端登录有两种方式,。一种是在命令行输入huggingface-cli login
,随后输入生成的token就好(这里和linux密码一样,不论输入还是粘贴都不显现的)。不过我实测下来这种方式总是不成功,可能和国内的网络环境有关系。

另一种方式则是在代码中登录,即使用huggingface_hub.login() 函数。

3、下载模型权重(是否含有-hf)

会注意到,官方的模型权重中有两种模型:一种有-hf和没有-hf的。

-hf后缀表示该模型来自Hugging Face 。也就是说如果你在官方网址里面下载不含h-hf的模型权重,使用Hugging
Face代码是运行不起来的。

如果你已经下载了官方的模型,也有办法变成-hf版本。
方法1:重新下载呗(但是还需要等待很久)

方法2:脚本处理(很快,但是要按照流程走)
此处以llama2-7B举例,需要严格按照如下流程进行操作

  1. 使用这个脚本convert_llama_weights_to_hf.py,把这里的代码复制到自己电脑上

  2. 你的文件夹中应该有把params.json、consolidated.00.pth
    和checklist.chk,把tokenizer_config.json、tokenizer.model和LICENSE.txt也放进去

  3. 把文件名改成7B(重要)

  4. 在对应的文件夹中打开终端运行这行命令python 代码路径/convert_llama_weights_to_hf.py --input_dir llama模型所在路径/7B --model_size 7B --output_dir 输出的地址

  5. 等个几秒钟就会在输出路径中得到-hf版的权重了。

4、不用官方验证获取LLaMa权重(我没用过)

Tom Jobbins
这位老哥贡献出了好多模型的权重,我们就可以不用验证了。

在这里直接搜索llama2-7B就能找到模型了

细心的人可以看到模型后缀有GPTQ、GGUF、AWQ,这里大概介绍一下,详细的请看这里

名称解释
GPTQ (Post-Training Quantization for GPT Models)
GPTQ是一种4位量化的训练后量化(PTQ)方法,主要关注GPU推理和性能 。GPTQ是最常用的压缩方法,因为它针对GPU使用进行了优化
GGUF(Generated Unified Format)
如果你的GPU无法处理如此大的模型,那么从GPTQ开始切换到以cpu为中心的方法(如GGUF)是绝对值得的。**如果你想同时利用CPU和GPU,
GGUF是一个非常好的格式** 。
AWQ (Activation-aware Weight Quantization)
它是一种类似于GPTQ的量化方法。在量化过程中会跳过一小部分权重,这有助于减轻量化损失。

5、测试是否安装成功

测试代码

import torch
import transformers
from transformers import LlamaForCausalLM, LlamaTokenizer

model_dir = r"./llama-2-7b-chat-hf" # 要么权重路径 要么meta-llama/Llama-2-7b-chat-hf(需要全局VPN下载)
model = LlamaForCausalLM.from_pretrained (model_dir)	# 初始化模型
tokenizer = LlamaTokenizer.from_pretrained (model_dir)	# 初始化tokenizer

# 使用模型
pipeline = transformers.pipeline (
	"text-generation",
	model=model,
	tokenizer=tokenizer,
	torch_dtype=torch.float16,
	device_map="auto",
)

# 获取结果
sequences = pipeline (
	'I have tomatoes, basil and cheese at home. What can I cook for dinner?\n',
	do_sample=True,
	top_k=10,
	num_return_sequences=1,
	eos_token_id=tokenizer.eos_token_id,
	max_length=400,
)

# 输出结果
for seq in sequences:
	print (f"{seq ['generated_text']}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

模型权重路径 应该包括这些文件

输出的结果如下

三、搭建text-generation-webui

[text-generation-webui](https://github.com/oobabooga/text-generation-
webui/releases/tag/snapshot-2024-01-14)是github上的一个开源项目,也是目前运行开源模型最广泛使用的软件之一。

1、创建虚拟空间

conda create -n textgen python=3.10.9 或者 3.11
conda activate textgen
  • 1
  • 2

2、安装依赖包

2.1 安装pytorch

这里注意python版本、CUDA版本和系统环境来下载pytorch,可以在这里下载离线文件安装。

2.2 下载项目

[text-generation-webui](https://github.com/oobabooga/text-generation-
webui/releases/tag/snapshot-2024-01-14)

2.3 安装依赖包(重要!!)

可以先按照自己的环境,运行对应的脚本。比如我就运行start_linux.sh(先进入到textgen虚拟环境
)。打开终端,然后输入./start_linux.sh
![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/89f3a358fc774d57bb9bd997d1db7513.png)
这个过程会有两个问题,按照自己的情况进行回答即可。

但是运行这个脚本依旧有可能无法打开项目,那就需要查看requirements.txt了。

text-generation-webui项目 的文件夹中,打开终端,进入textgen虚拟环境中输入pip install -r requirements.txt

这一步没有全局VPN是十分痛苦的,有些依赖包无法下载。只能打开pip list把requirements.txt
没安装上的部分用局部VPN一点一点安装上。如果没有安装好的话,绝对没发成功运行项目,所以一定要仔细。

3、运行!!!

上面的步骤完成后,把自己下载的hugging face模型权重和token的文件放到项目中的models中,models中,models中

然后执行下面的步骤:

  1. 打开textgen虚拟环境
  2. 输入python server.py --listen-host 0.0.0.0 --listen-port 7866 --listen #让本机可以访问,具体参数请见github
  3. 在这里插入图片描述

如何学习大模型 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大模型学习资源包》免费分享!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/895257
推荐阅读
相关标签
  

闽ICP备14008679号