【随手记录】Llama Tutorial 大语言模型实践
这个tutorial的契机是yy突然看到了一个workshop 所以类似于一周大作业的形式,输入command输出使用了自动驾驶哪些模块,代码在这里 所以就干一干,顺便写一个tutorial给大家参考和教程 引申更多的应用
参考资料:
- https://github.com/facebookresearch/codellama, https://github.com/facebookresearch/llama
- 模型申请地址:https://ai.meta.com/llama/ → 然后按download,填写完后 就会收到两封邮件
- https://github.com/oobabooga/text-generation-webui
- 写tutorial期间的代码:https://github.com/KTH-RPL/DriveCmd_LLM
所有模型参数和所需要的GPU并行,注意这只是模型load占用的memory 如果token或者batch size较大 也需要很多GPU显存,表格下方会说明每个之间的区别,MP是指并行GPU的数量 默认是多少,所有模型我都在 这边服务器的A100试过 Size已经是乘过数量的了 是总和需要的memory
| Model | Size | MP |
|---|---|---|
| code-7B | ~12.5G | 1 |
| code-13B | 24G | 2 |
| code-34B | 63G | 4 |
| 7b-chat | ~12.5G | 1 |
| 13b-chat | 24G | 2 |
| 70b-chat | ~160G | 8 |
- 7B, 13B, 34B 指示模型参数量
- chat 指示经过了对话的fine-tuned 【 llama2论文原文:a fine-tuned version of Llama 2 that is optimized for dialogue use cases】
- code 指示此llama版本经过了code数据集的训练,can use text prompts to generate and discuss code. 此处为 官方blog
温馨提示 下列内容和 此 https://github.com/KTH-RPL/DriveCmd_LLM README 有重复:里面包含了example和我们写的prompt流程等 and yy尝试的chatgpt api那边的script
1. 申请下载模型
具体如图:

- https://ai.meta.com/llama/ 点击download
- 填写资料,勾上所有的东西
- 接受terms 然后点continue
- 大概10分钟内能收到两封邮件,告诉你可用的权重和其下载地址【注意!这个地址有限制比如下载超过3次/24小时后 请重新返回步骤一】
2. 模型部署
正如前言中提到的,大部分本地自己用的电脑 可能只能跑最小的模型也就是7b的 GPU的占用率大概是12G,如下图为我运行repo里的代码时占用截图 【上一个A100试了一下 这么一看我本机3090 也带不动】
内存的增大原因:
- prompt 长短 也就是你给模型的输入文字 可能很多 【这也是为什么chatgpt按token收费
- 输出的语句长短 也就是模型给你的回答 【我这因为让他解释他的输出了 所以也比较长

回归正题,接下来是clone两边的代码,一个是code一个是llama 前者经过了八股文、leetcode训练【我是这么理解的 hhh 通俗易懂】 后者是原生态
- https://github.com/facebookresearch/llama, 注意复制链接的时候 也别给错了 看对邮件给
- https://github.com/facebookresearch/codellama 同上理
以下为演示截图

- git clone 对应代码
- 进入文件夹
- 运行download.sh
- copy 邮件里收到的下载链接【第一次没看仔细 一直在填自己的email 可还行
- 选择下载什么模型,注意全部下载的话 可能比较大 建议硬盘空间不够的 选一个最小的 先试试
3. 模型运行
这一步官方的README写的挺不错的,依赖很少 照着pip install -r requirements.txt就行,基本无障碍,最好是建一个conda的环境,别和系统混了,此处为运行示例:
torchrun --nproc_per_node 1 example_completion.py \
--ckpt_dir CodeLlama-7b/ \
--tokenizer_path CodeLlama-7b/tokenizer.model \
--max_seq_len 128 --max_batch_size 4
截图运行及GPU占用:

正常我们想要的应该是chat 聊天形式的所以选择以下模型会有更好的效果:
| Model | Size | MP |
|---|---|---|
| CodeLlama-7b-Instruct | ~12.5G | 1 |
| CodeLlama-13b-Instruct | 24G | 2 |
| CodeLlama-34b-Instruct | 63G | 4 |
| llama-2-7b-chat | ~12.5G | 1 |
| llama-2-13b-chat | 24G | 2 |
| llama-2-70b-chat | ~160G | 8 |
4. More
可以参考 前言中我提到的task 给出的一个结果调用,这里是任务的报告pdf:https://arxiv.org/abs/2311.08206 更方便大家直接选择和对比

还有就是如果想自己部署一个chatgpt,或者是在苹果系统下(which 内存就是显卡内存 可以参考这个b站视频:苹果M2 Ultra:AI大模型的新希望
自己部署一个chatgpt参考code:
- llama or codellama 作为model和basic
- text generation web UI 作为一个web的界面 这样才能开启正常对话, https://github.com/oobabooga/text-generation-webui
部署后的示意图:

同时这里面也提到了其他的大语言模型 可以尝试的:Multiple model backends: transformers, llama.cpp, ExLlama, ExLlamaV2, AutoGPTQ, GPTQ-for-LLaMa, CTransformers, AutoAWQ
还有一些vision assistance的模型可以一起,免费版chatgpt 4.0 (但是试了一下即使是70B的 效果在我们的任务上也没有 3.5API调用的高,果然还是钱的问题
其中有一个大视觉语言模型 可以关注:https://github.com/haotian-liu/LLaVA
5. Llama2 论文速读
主要是记录一下一些细节 比如模型和模型之间的不同,fine-tuned的实现等。
首先是关于llama2-chat的训练,如下图:得到llama2后 经过RLHF 步骤得到的chat模型 【RLHF 是一种模型训练过程,应用于微调的语言模型,以进一步使模型行为与人类偏好和指令遵循保持一致。】

下图说明了 训练的一些细节:
- token是指将所有number 拆分成独立的digits 然后使用use bytes 去decompose 未知的UTF-8,总的词汇是32k token
- 预训练 2T 的token后 模型也没有饱和

【随手记录】Llama Tutorial 大语言模型实践的更多相关文章
- 本地推理,单机运行,MacM1芯片系统基于大语言模型C++版本LLaMA部署“本地版”的ChatGPT
OpenAI公司基于GPT模型的ChatGPT风光无两,眼看它起朱楼,眼看它宴宾客,FaceBook终于坐不住了,发布了同样基于LLM的人工智能大语言模型LLaMA,号称包含70亿.130亿.330亿 ...
- 大数据实践:ODI 和 Twitter (一)
本文利用twitter做为数据源,介绍使用Oracle大数据平台及Oralce Data Integrator工具,完成从twitter抽取数据,在hadoop平台上处理数据,并最终加载到oracle ...
- 大众点评的大数据实践-CSDN.NET
大众点评的大数据实践-CSDN.NET 大众点评的大数据实践 爬虫工程师成大数据时代的"宠儿" - 杭州新闻中心 - 杭州网 爬虫工程师成大数据时代的"宠儿"
- 大数据实践:ODI 和 Twitter (二)
大数据实践:ODI和Twitter(二) 在前面的文章中,我们已经使用flume将数据从twitter抓取到Hive中,现在我们来看看ODI(Oracle Data Integrator)如何在HIV ...
- 删除Git记录里的大文件
删除Git记录里的大文件 仓库自身的增长 大多数版本控制系统存储的是一组初始文件,以及每个文件随着时间的演进而逐步积累起来的差异:而 Git 则会把文件的每一个差异化版本都记录在案.这意味着,即使你只 ...
- SNF快速开发平台2019-权限管理模型-记录级-字段级权限实践
1.1.1 字段级权限 字段级权限适用于对不同人的能否查看或录入不同表不同字段的权限控制. 是否启用字段级权限配置 不启用字段级权限后,[用户权限管理]程序[字段级权限]按钮会隐藏,导致无法给管理其 ...
- Hugging News #0324: 🤖️ 黑客松结果揭晓、一键部署谷歌最新大语言模型、Gradio 新版发布,更新超多!
每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...
- 使用 LoRA 和 Hugging Face 高效训练大语言模型
在本文中,我们将展示如何使用 大语言模型低秩适配 (Low-Rank Adaptation of Large Language Models,LoRA) 技术在单 GPU 上微调 110 亿参数的 F ...
- pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例)
pytorch在有限的资源下部署大语言模型(以ChatGLM-6B为例) Part1知识准备 在PyTorch中加载预训练的模型时,通常的工作流程是这样的: my_model = ModelClass ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
随机推荐
- KVM "shutting down, reason=crashed" 问题处理
打开debug日志抓取信息 2022-10-12 07:42:43.698+0000: 63115: debug : processMonitorEOFEvent:4814 : Monitor con ...
- 最全面的JAVA多线程知识总结
背景: 2023年经营惨淡,经历了裁员就业跳槽再就业,在找工作过程中对于知识的梳理和总结,本文总结JAVA多线程. 应用场景: 需要同时执行多个任务或处理大量并发请求时, 目前常用的场景有: We ...
- croc-文件传输工具
前言 croc是一款用go语言开发的命令行文件传输工具,该工具允许两台计算机设备以一种简单和安全的方式来传输文件. GitHub项目地址 环境信息 IP 系统版本 croc版本 说明 192.168. ...
- [k8s]使用私有harbor镜像源
前言 在node上手动执行命令可以正常从harbor拉取镜像,但是用k8s不行,使用kubectl describe pods xxx 提示未授权 unauthorized to access rep ...
- Oracle内存管理方式介绍(转载)
"Oracle内存管理可分为两大类,自动内存管理和手动内存管理.其中手动内存管理又可分为自动共享内存管理,手动共享内存管理,自动PGA内存管理以及手动PGA内存管理.本文会简单的介绍不同的内 ...
- *CTF和nssctf#16的wp
*ctf2023 fcalc 分析程序 本题存在漏洞,是生活中很容易犯的错误,就是循环或者判断的时候没有注意多一还是少一,这种会发生很严重的问题.比如这个题在过滤数字的时候没有过滤掉0,所以输入0的时 ...
- [ABC131E] Friendships
2023-01-30 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 找规律,构造 解题思路 先构造一个菊花图为最大边的图,再依次连边减小k. ...
- torch-1 tensor & optim
开个新坑, pytorch源码阅读-从python代码开始读起. torch/ 1.tensor.py 继承自torch._C._TensorBase , 包括各种操作,TODO:随后看cpp代码 _ ...
- 我找回了我喜欢的Github Old Feed
前言 这周Github更新了个人主页Feed(指的是用户的活动源或动态源),作为GitHub重度爱好者而言New Feed完全不是我之前所喜欢的效果.虽然说New Feed添加了允许用户可以自定义配置 ...
- Domain Admin域名和SSL证书过期监控到期提醒
基于Python3 + Vue3.js 技术栈实现的域名和SSL证书监测平台 用于解决,不同业务域名SSL证书,申请自不同的平台,到期后不能及时收到通知,导致线上访问异常,被老板责骂的问题 核心功能: ...