首页 > 其他分享 >Llama3的本地部署

Llama3的本地部署

时间:2024-05-14 17:58:37浏览次数:20  
标签:jupyter 部署 Llama3 ids 本地 input model dir

链接地址:

github: https://github.com/meta-llama/llama3

huggingface: https://huggingface.co/meta-llama

metaAI: https://llama.meta.com/

 

Llama3是Meta于2024年4月18日开源的LLM,目前开放了8B和70B两个版本,两个版本均支持最大为8192个token的序列长度( GPT-4支持128K  = = )

Llama3在Meta自制的两个24K GPU集群上进行预训练,使用15T的训练数据,其中5%为非英文数据,故Llama3的中文能力稍弱,Meta认为Llama3是目前最强的开源大模型

Llama3如果单纯使用的话推荐用Ollama进行部署,简单方便,我有具体的下游任务,所以需要自己微调

 

- 部署准备 

-- 硬件 

在本地对8B版本的Llama3进行了部署测试,硬件配置为 

  • CPU  i7-12700F
  • GPU NVIDIA Geforce RTX 3060 12G
  • RAM 32GB * 2

-- 环境 

Llama3的部署环境对各个包的版本需求有些严格,需要注意,否则会报各种错误,环境列表附在最后(去最上面的github里找也可,我环境里可能有单纯部署之外用不到的包),其中最需要注意的是transformers的版本,需要大于4.39.0 ( 我用的4.40.1 ),

因为Llama3比较新,老版本的transformers里没有Llama3的模型和分词器,另外就是pytorch和cuda的版本,torch 2.1.0 + cu118,主要是transformers对cuda版本有要求,部署过程中遇到的多数错误都是包的版本问题。

-- 模型权重 

模型的权重可以去最上的meta或huggingface链接去下载,但是需要获得meta的授权,注册账号提个申请(玛德,给我拒了)

也可使用魔搭的库进行下载,还挺快的,推荐,下载代码如下

from modelscope import snapshot_download

cache_dir = r'D:\data\Llama3\LLM-Research'
model_dir = snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct',cache_dir=cache_dir)

# Meta-Llama-3-70B-Instruct 70B的名称

运行代码下载即可,cache_dir为权重文件的缓存路径,8B下载好的文件大小为14.9G,70B的为131G,预留好足够的空间

下载好的路径下有这些东西

 

 

- 模型推理 

模型的推理按照下面代码执行即可,比较简单,我没写UI之类的,能用就行

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

model_dir = r'D:\data\Llama3\LLM-Research\Meta-Llama-3-8B-Instruct'
device = 'cuda'


tokenizer = AutoTokenizer.from_pretrained(model_dir)
model = AutoModelForCausalLM.from_pretrained(model_dir, torch_dtype='auto', device_map=device)

while 1:
    print(f'Enter a prompt to generate a response:')
    prompt = input()
    messages = [
        {'role': 'system', 'content': 'aaa'},
        {'role': 'user', 'content': prompt}
    ]

    text = tokenizer.apply_chat_template(
        messages,
        tokenize=False,
        add_generation_prompt=True
    )

    model_input = tokenizer([text], return_tensors='pt').to(device)
    attention_mask = torch.ones(model_input.input_ids.shape, dtype=torch.long, device=device)
    generated_ids = model.generate(
        model_input.input_ids,
        max_new_tokens=512,
        attention_mask=attention_mask,  
        pad_token_id=tokenizer.eos_token_id,  
    )

    generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_input.input_ids, generated_ids)]

    response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

    print(f'{response} \n')

运行成功,Llama3的简单部署成功,完结撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

抽空有时间把LoRA微调的写了。

 

原谅我,博客园好像不能上传文件

accelerate==0.29.3
addict==2.4.0
aiohttp==3.9.5
aiosignal==1.3.1
aliyun-python-sdk-core==2.15.1
aliyun-python-sdk-kms==2.16.2
anyio==4.3.0
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==2.4.1
async-lru==2.0.4
async-timeout==4.0.3
attrs==23.2.0
Babel==2.15.0
backcall==0.2.0
beautifulsoup4==4.12.3
bleach==6.1.0
certifi==2024.2.2
cffi==1.16.0
charset-normalizer==3.3.2
colorama==0.4.6
comm==0.2.2
crcmod==1.7
cryptography==42.0.5
datasets==2.18.0
debugpy==1.8.1
decorator==5.1.1
defusedxml==0.7.1
dill==0.3.8
einops==0.8.0
exceptiongroup==1.2.1
executing==2.0.1
fastjsonschema==2.19.1
filelock==3.13.4
fqdn==1.5.1
frozenlist==1.4.1
fsspec==2024.2.0
gast==0.5.4
h11==0.14.0
httpcore==1.0.5
httpx==0.27.0
huggingface-hub==0.22.2
idna==3.7
importlib_metadata==7.1.0
importlib_resources==6.4.0
ipykernel==6.29.4
ipython==8.12.3
ipywidgets==8.1.2
isoduration==20.11.0
jedi==0.19.1
Jinja2==3.1.3
jmespath==0.10.0
json5==0.9.25
jsonpointer==2.4
jsonschema==4.22.0
jsonschema-specifications==2023.12.1
jupyter==1.0.0
jupyter-console==6.6.3
jupyter-events==0.10.0
jupyter-lsp==2.2.5
jupyter_client==8.6.1
jupyter_core==5.7.2
jupyter_server==2.14.0
jupyter_server_terminals==0.5.3
jupyterlab==4.1.8
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.1
jupyterlab_widgets==3.0.10
MarkupSafe==2.1.5
matplotlib-inline==0.1.7
mistune==3.0.2
modelscope==1.14.0
mpmath==1.3.0
multidict==6.0.5
multiprocess==0.70.16
nbclient==0.10.0
nbconvert==7.16.4
nbformat==5.10.4
nest-asyncio==1.6.0
networkx==3.1
notebook==7.1.3
notebook_shim==0.2.4
numpy==1.24.4
oss2==2.18.4
overrides==7.7.0
packaging==24.0
pandas==2.0.3
pandocfilters==1.5.1
parso==0.8.4
pickleshare==0.7.5
pillow==10.3.0
pkgutil_resolve_name==1.3.10
platformdirs==4.2.1
prometheus_client==0.20.0
prompt-toolkit==3.0.43
psutil==5.9.8
pure-eval==0.2.2
pyarrow==16.0.0
pyarrow-hotfix==0.6
pycparser==2.22
pycryptodome==3.20.0
Pygments==2.18.0
python-dateutil==2.9.0.post0
python-json-logger==2.0.7
pytorch-cuda==12.1
pytz==2024.1
pywin32==306
pywinpty==2.0.13
PyYAML==6.0.1
pyzmq==26.0.3
qtconsole==5.5.2
QtPy==2.4.1
referencing==0.35.1
regex==2024.4.28
requests==2.31.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.18.0
safetensors==0.4.3
scipy==1.10.1
Send2Trash==1.8.3
simplejson==3.19.2
six==1.16.0
sniffio==1.3.1
sortedcontainers==2.4.0
soupsieve==2.5
stack-data==0.6.3
sympy==1.12
terminado==0.18.1
tinycss2==1.3.0
tokenizers==0.19.1
tomli==2.0.1
torch==2.1.0+cu118
torchaudio==2.1.0
torchvision==0.16.0
tornado==6.4
tqdm==4.66.2
traitlets==5.14.3
transformers==4.40.1
types-python-dateutil==2.9.0.20240316
typing_extensions==4.11.0
tzdata==2024.1
uri-template==1.3.0
urllib3==2.2.1
wcwidth==0.2.13
webcolors==1.13
webencodings==0.5.1
websocket-client==1.8.0
widgetsnbextension==4.0.10
xlrd==1.2.0
xxhash==3.4.1
yapf==0.40.2
yarl==1.9.4
zipp==3.18.1

 

 

标签:jupyter,部署,Llama3,ids,本地,input,model,dir
From: https://www.cnblogs.com/Liang-ml/p/18167156

相关文章

  • openGauss 示例1-通过本地文件导入导出数据
    示例1:通过本地文件导入导出数据在使用JAVA语言基于openGauss进行二次开发时,可以使用CopyManager接口,通过流方式,将数据库中的数据导出到本地文件或者将本地文件导入数据库中,文件格式支持CSV、TEXT等格式。样例程序如下,执行时需要加载openGauss的JDBC驱动。importjava.sql.Conne......
  • Centos7下Prometheus+Grafana部署 redis 以及 mysql 监控
    Prometheus部署mysql监控本篇文章部分内容与我前一篇文章衔接,看不明白的可以参考我前一篇文章Centos7下搭建Prometheus+Grafana并部署基础监控Redis监控对于Redis的监控,Prometheus可以收集多种指标,包括但不限于:命令统计:如每个命令的调用次数、执行时间等。内存使用情......
  • Jenkins - [02] 安装部署
    题记部分 一、Jenkins是什么  Jenkins,原名Hudson,2011年改为现在的名字,它是一个开源的实现持续集成的软件工具。官网:https://www.jenkins.io/官网:https://www.jenkins.io/zh/(中文)  Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式......
  • LLM实战:LLM微调加速神器-Unsloth + LLama3
    1.背景五一结束后,本qiang~又投入了LLM的技术海洋中,本期将给大家带来LLM微调神器:Unsloth。正如Unsloth官方的对外宣贯:Easilyfinetune&trainLLMs;Getfasterwithunsloth。微调训练LLM,可以显著提升速度,其次显存占用也会显著减少。但有一点需要说明:unsloth目前开源部分只支......
  • 【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux
    问题描述PythonFlash应用上云,本地Git部署(https://docs.azure.cn/zh-cn/app-service/quickstart-python?tabs=flask%2Cwindows%2Cazure-cli%2Clocal-git-deploy%2Cdeploy-instructions-azportal%2Cterminal-bash%2Cdeploy-instructions-zip-azcli),遇见两类问题。1: srcrefspec......
  • apisix~自定义插件的部署
    参考https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-luahttps://apisix.apache.org/docs/apisix/next/plugin-develop/https://apisix.apache.org/docs/apisix/next/plugins/prometheus/https://apisix.apache.org/blog/2022/02/16/file-logge......
  • WDS+MDT网络启动自动部署windows(十九)MDT replace任务序列
    简介MDT的默认任务序列有很多个,我们不能只盯着标准客户序列啊, 不管用不用,我替你们测试一下replace upgrade两个标准序列。sysprepandcapture,这个是做胖镜像的,终端机祛除各种信息,然后抓镜像回来的,介绍的很多,就不讲了。测试replace任务序列 我将随意安装两个软件,并用两......
  • WDS+MDT网络启动自动部署windows(二十)MDT upgrade任务序列
    WDS+MDT网络启动自动部署windows(十九)MDTreplace任务序列 简介#MDT的默认任务序列有很多个,我们不能只盯着标准客户序列啊, 不管用不用,我替你们测试一下replace upgrade两个标准序列。sysprepandcapture,这个是做胖镜像的,终端机祛除各种信息,然后抓镜像回来的,介绍的很多......
  • 本地SSH方式连接实例
    通过SSH登录GPUMALL实例介绍通过SSH方式连接到Linux服务器的方法有多种,这里介绍几种常用的SSH远程登录工具,只需要使用其中一种可以登录到GpuMall实例即可。立即免费体验:https://gpumall.com/login?type=register&source=cnblogsWindows系统可以使用:XShell、Mobaxterm、......
  • WDS+MDT网络启动自动部署windows(十八)MDT 移动OU组织单位
    简介加入域时,如果计算机已存在,且OU设置不一致,可能会导致计算机孤立。使用Windows10(Windows10)刷新Windows7计算机-Windows10|Microsoft学习在刷新过程中,部署共享规则中指定的域加入详细信息将用于将计算机重新加入域。如果Windows7客户端在与MachineObjectOU指......