详解各种LLM系列|LLaMA 1 模型架构、预训练、部署优化特点总结

Meta最新模型LLaMA细节与代码详解 本文对Facebook Meta AI最新提出的大语言模型LLaMA进行简单的介绍,以及对其开源出的代码和细节进行了详细的说明。 阅读详情

LLaMA 是Meta在2023年2月发布的一系列从 7B到 65B 参数的基础语言模型。LLaMA作为第一个向学术界开源的模型,在大模型爆发的时代具有标志性的意义。

为了更深入地理解LLaMA的技术特点,特地在此整理了LLaMA 1 模型架构、预训练、部署优化特点。话不多说,我们仔细看看吧。

2a6a0942083236a8cdd4754396852631.jpeg

LLaMA简介

论文:https://arxiv.org/abs/2302.13971

Github:https://github.com/facebookresearch/llama

Meta 训练这些模型使用了数万亿个 token,并且 证明了完全可以只使用公开可得的数据集来训练最先进的模型,而无需使用专有和不可获取的数据集 。特别是,LLaMA-13B 在大多数基准测试中表现优于GPT-3(175B),而 LLaMA-65B 在竞争中与最佳模型 Chinchilla70B 和PaLM-540B 持平。

Meta在训练这些模型时,也同时考虑到了模型在推理部署时的性能和要求 - 在大规模提供语言模型时,推理速度和推理性能变得至关重要。因此, LLaMA选择用更小的模型,以及更多的数据集来进行预训练。

(Hoffmann等人的最新工作显示, 在给定的计算预算下,最佳性能并不是由最大的模型实现的,而是由更多数据训练的较小模型实现的 。

在这种情况下,考虑到推理运算以及目标性能水平, 首选模型不是训练速度最快的,而是推理速度最快的 。虽然训练一个大型模型达到一定性能水平可能更便宜,但训练时间更长的较小模型在推理阶段最终会更经济。例如,虽然Hoffmann等人建议在 200B 标记上训练 10B 模型,但 Meta 发现 7B 模型的性能在 1T token 后仍在持续提高。)

具体方法

预训练数据

LLaMA的预训练数据大约包含1.4T个token。其训练数据集是几个来源的混合,涵盖了不同的领域。

表1所示是 LLaMa 预训练数据的含量和分布:

表1:训练数据组成

数据集样本比例Epochs所占磁盘大小
CommonCrawl67.0%1.103.3 TB
C415.0%1.06783 GB
Github4.5%0.64328 GB
Wikipedia4.5%2.4583 GB
Books4.5%2.2385 GB
ArXiv2.5%1.0692 GB
StackExchange2.0%1.0378 GB
1. English CommonCrawl [67%]

对五个 CommonCrawl 数据集进行预处理,时间跨度从2017年到2020年,使用 CCNet 来进行文本数据的预处理。

该过程先进行文本内容分片,然后进行段落归一化,并在此基础上在行级别进行数据去重;使用 fastText 线性分类器进行语言识别,以删除非英语页面;使用 n-gram 语言模型过滤低质量内容。

此外,还训练了一个线性模型,用于将页面分类为 Wikipedia 中的引用页面与随机抽样页面,并丢弃未被分类为引用的页面。(CCNet可参考LLM Data Pipelines: 解析大语言模型训练数据集处理的复杂流程 - 掘金[1])

2. C4 [15%]

C4也是属于Common Crawl数据集的一个经过粗略预处理的子集。在探索性实验中,研究团队观察到使用不同的预处理CommonCrawl数据集可以提高性能。因此,在数据中包含了公开可用的C4数据集。对于C4的预处理与 CCNet 的主要区别在于质量过滤,对于C4的预处理主要依赖于标点符号的存在或网页中的词语和句子数量等启发式方法。

3. Github [4.5%]

使用 Google BigQuery 上可用的公共 GitHub 数据集。此外,使用基于行长度或字母数字字符比例的启发式方法过滤低质量文件,并使用正则表达式删除了诸如header之类的内容。最后,对生成的数据集进行了文件级别的去重,使用完全匹配的方法。

4. Wikipedia [4.5%]

添加了截至2022年6月至8月的 Wikipedia 数据,涵盖20种语言。预处理包括:去除超链接、评论和其他格式样板。

5. Gutenberg and Books3 [4.5%]

添加了两个书籍类的数据集,分别是 Gutenberg 以及 ThePile (训练 LLM 的常用公开数据集) 中的 Book3 部分。预处理包括重复数据删除,删除内容重叠超过 90% 的书籍。

6. ArXiv [2.5%]

处理了arXiv Latex文件,以添加学术文本到数据集中。预处理包括:移除第一节之前的所有内容,以及参考文献;移除了.tex文件中的注释,并且内联展开了用户编写的定义和宏,以增加论文之间的一致性。

7. Stack Exchange [2%]

这是一个涵盖各种领域的高质量问题和答案网站,范围从计算机科学到化学(类似知乎)。研究团队从 28 个最大的网站保留数据,从文本中删除 HTML 标签并按分数对答案进行排序。

笔者NOTE:对于LLM的训练,数据的质量是基础。对于这部分感兴趣的小伙伴,可以仔细看下LLaMA训练时对于不同数据集的处理方式。

Tokenizer

使用字节对编码(BPE)算法对数据进行分词,使用 SentencePiece 的实现。值得注意的是,作者 将所有数字分割成单个数字 。

对于BPE的详细解释,可参考BPE 算法原理及使用指南【深入浅出】 \- 知乎[2]

模型架构

LLaMa 的网络还是主要基于 Transformer 架构。研究团队根据不同模型(如PaLM)的改进,从而利用了这些改进,来进一步提高LLaMA的训练稳定性、上下文长度性能。

以下是与原始架构的主要区别,以及从哪里得到了这种变化的灵感(括号中)。

  1. Pre-normalization [受 GPT3 的启发] :为了提高训练稳定性,LLaMa 对每个 Transformer 子层的输入进行归一化,而不是对输出进行归一化。LLaMa 使用了 RMSNorm 归一化函数。

(关于Pre-norm vs Post-norm,可参考为什么Pre Norm的效果不如Post Norm?\- 科学空间|Scientific Spaces[3])

2. SwiGLU 激活函数 [受 PaLM 的启发]: LLaMa 使用 SwiGLU 激活函数替换 ReLU 以提高性能,维度从 4d

变为 。SwiGLU是一种激活函数,它是GLU的一种变体, 它可以提高transformer模型的性能。SwiGLU的优点是它可以动态地调整信息流的门控程度,根据输入的不同而变化,而且SwiGLU比ReLU更平滑,可以带来更好的优化和更快的收敛。

(关于SwiGLU激活函数,可参考激活函数总结(八):基于Gate mechanism机制的激活函数补充\(GLU、SwiGLU、GTU、Bilinear、ReGLU、GEGLU\)\_glu激活-优快云博客[4])

3. Rotary Embeddings [受 GPTNeo 的启发]: LLaMa 没有使用之前的绝对位置编码,而是使用了旋转位置编码(RoPE),可以提升模型的外推性。它的基本思想是通过一个旋转矩阵来调整每个单词或标记的嵌入向量,使得它们的内积只与它们的相对位置有关。旋转嵌入不需要预先定义或学习位置嵌入向量,而是在网络的每一层动态地添加位置信息。旋转嵌入有一些优点,比如可以处理任意长度的序列,可以提高模型的泛化能力,可以减少计算量,可以适用于线性Attention等。

(关于 RoPE 的具体细节,可参考十分钟读懂旋转编码(RoPE) \- 知乎[5])

笔者NOTE:LLM的架构是实现LLM基础性能的基石,对于这部分,各位小伙伴还是需要深入地了解一下各种架构的原理,以及其优劣势。

优化器

LLaMA使用了AdamW优化器进行训练,优化器的超参数为 =0.9, =0.95

(关于AdamW这个大模型训练的优化器,可参考当前训练神经网络最快的方式:AdamW优化算法+超级收敛 | 机器之心[6])

下表为LLaMA不同参数大小模型的具体设置:

表2: LLaMA不同参数大小模型的具体设置

参数维度(dim)head个数layer层数学习率batch sizetoken数量
6.7B409632323.0e−44M1.0T
13.0B512040403.0e−44M1.0T
32.5B665652601.5e−44M1.4T
65.2B819264801.5e−44M1.4T
训练结果

如下图所示,7B、13B、33B和65模型的训练损失均呈下降趋势,且在所有token上训练完后,loss仍没有收敛的趋势。因此,在此时,增加训练的token数量,仍然可以使模型继续学习。

(LLaMA2就是在此结论的基础上,使用了更多的token进行训练)

020f808566e73586ea9239922bce9824.png

高效部署

研究团队做了一些优化来提高模型的训练速度:

  1. **因果多头注意的有效实现:**使用因果多头注意的有效实现来减少内存使用和运行时间。该实现可在xformers库中获得,其灵感来自于固定激活值显存优化和FlashAttention。这是通过不存储注意力权重和不计算由于语言建模任务的因果性质而被掩盖的key/query分数来实现的。

  2. **激活重计算:**为了进一步提高训练效率,通过检查点减少了在向后传递过程中重新计算的激活量。更准确地说,节省了计算成本高的激活,比如线性层的输出。这是通过手动实现transformer层的backward函数来实现的,而不是依赖于PyTorch的autograd。

  3. **模型并行和序列并行:**为了从这种优化中充分受益,需要通过使用模型和序列并行来减少模型的内存使用。此外,还尽可能地重叠激活的计算和gpu之间通过网络的通信。

笔者NOTE:LLM的高效训练是LLM工程实现的基础,对于这部分,各位小伙伴还是需要深入地了解一下各种并行策略、因果多头注意的有效实现、 激活重计算、混合精度训练。

基于LLaMA的衍生模型(概述)

笔者NOTE:由于篇幅太长,因此在这篇里仅进行基于LLaMA的衍生模型的概述,之后也会出详细介绍各个衍生模型的文章

Alpaca

Alpaca是斯坦福在LLaMa-7B的基础上监督微调出来的模型,斯坦福是用OpenAI的Text-davinci-003 API配合self-instruct技术,使用175个提示语种子自动生成了52K条提示-回复的指示数据集,在LLaMa-7B上微调得到的模型,在8张80G的A100上训练了3小时。

可以说是以极低的成本生成了高质量的指令数据,并进行了指令微调,最终可以达到媲美GPT3.5的水平。

52a1759645d77ec6abd99be1de544209.png

Vicuna

Vicuna是在LLaMa-13B的基础上使用监督数据微调得到的模型,数据集来自于http://ShareGPT.com[7] 产生的用户对话数据,共70K条。使用Pytorch FSDP在8张A100上训练了一天。相较于Alpaca,Vicuna在训练中将序列长度由512扩展到了2048,并且通过梯度检测和flash attention来解决内存问题;调整训练损失考虑多轮对话,并仅根据模型的输出进行微调。通过GPT4来打分评测,Vicuna可以达到ChatGPT 90%的效果。并且还提供了可调用的分布式聊天服务FastChat[8]。

23887e024123b01458b2a2b63d208ca1.png

如何学习大模型 AI ?

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

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

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

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

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

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

在这里插入图片描述

第一阶段(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 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
Llama模型结构解析(源码阅读) llama模型结构源码解析 阅读详情

相关推荐

Llama大型语言模型原理详解

Llama大型语言模型是一种基于Transformer架构的深度学习模型,通过预训练和微调过程学习语言的内在规律和特定任务的知识。通过大规模的训练数据和复杂的网络结构,模型能够学习到丰富的语言知识和模式,从而在各种NLP任务中取得优异的性能。然而,由于模型参数规模庞大,训练和推理过程需要大量的计算资源,这使得Llama模型在实际应用中面临一定的挑战。Llama模型的工作原理的核心在于其自注意力机制。在模型处理输入文本时,自注意力机制允许模型同时关注输入序列中的不同位置,从而捕捉到词汇之间的长距离依赖关系。

Genio_Wang的博客 2964

一文为你深度解析LLaMA2模型架构

本文对比LLaMA1和 LLaMA2模型的技术细节,了解LLaMA2模型的内部核心算法,包括与Transformers架构的差异,以及LLaMA2与国内大模型的异同,进一步加深了大家对LLaMA的理解。

华为云官方博客 2549

【LLM模型篇】LLaMA2 | Vicuna | EcomGPT等

EcomGPT:电商领域大模型 解决问题:解决电商场景任务(如品牌识别,评价解析,广告文案生成等) 论文链接:https://arxiv.org/abs/2308.06966 GitHub链接:https://github.com/Alibaba-NLP/EcomGPT 1. sft数据 从学术论文或竞赛平台等开放数据源收集了共65个各种电商任务数据集,包括命名实体识别、评论问答、商品类目预测、多轮对话等传统的自然语言处理任务。这些开源数据集的任务都是由领域专家设计,然后由受过培训的人工标注,数据质量很高

发现问题,并解决问题,批判性思维 4829

最强英文开源模型LLaMA架构探秘,从原理到源码

LLaMA架构,三个关键点及对应原理,一些实现源码

Steve Wang's blog 4408

多图详解LLaMA 3的使用方法和进化之路

LLaMA 3是Meta AI在2024年4月18日发布的最新开源模型家族。其中已发布的是8B和70B的base和instruct版本。未来将会发布400B参数量、多语言、多模态、长上下文等不同的大模型。那么如何使用LLaMA 3呢?简单来说,可分为两种方式:在线使用和本地部署。

herosunly的博客 8万+

银河飞腾FT6678实战指南:OpenMP多核并行编程优化技巧

本文详细介绍了在银河飞腾FT6678多核处理器上使用OpenMP进行并行编程的实战技巧与优化方法。从基础语法到环境配置,再到性能优化的五大核心技巧,包括循环并行化、并行粒度控制、reduction子句使用等,帮助开发者充分发挥FT6678的8核计算能力。通过实际案例展示如何将图像处理算法从200ms优化到28ms,并深入探讨了任务调度、内存访问优化等进阶主题。

weixin_29234423的博客 287

详解各种LLM系列|(1)LLaMA 1 模型架构、预训练、部署优化特点总结

整理了LLaMA 1 模型架构、预训练、部署优化特点

weixin_49659123的博客 2633

Labelme安装教程(附Anaconda安装教程)

本文详细介绍了如何安装Anaconda和Labelme,还提供了常见问题的解决建议。

HanYan_ing的博客 1万+

第六十五回 时迁火烧翠云楼 吴用智取大名府-羊驼大模型的部署应用:llama.cpp和llama.c纯c编译安装部署 以及Ollama一键部署

LLaMA羊驼模型是元宇宙平台公司(Meta)公开发布的一款大型语言模型。该模型建立在Transformer基础架构上,采用了多层神经网络结构,有助于捕捉和学习数据中的复杂模式。这种设计使得LLaMA模型在自然语言处理方面表现突出,能够进行语义分析、情感识别和文本生成,广泛应用于人工智能各种场景。羊驼模型最显著的特点之一是它的开源性,这意味着任何研究人员或开发者都可以访问和使用该模型的源代码。此外,羊驼模型是在公开预训练数据上进行训练的,这保证了其通用性和可复现性。

skywalk8163的专栏 1844

【零基础入门哈希签名架构,从Lamport到SPHINCS+】第二集 哈希签名树 Merkle Tree Authentication

在第一集中,我们一直忽略了一个问题。设想一下,假如有一个Hacker(黑客),在截获到Sender发送给Receiver的公钥之后,把这个公钥改成Hacker自己的公钥,然后再发给Receiver,那么Receiver就会误认为这是Sender的公钥。所以我们之前所说放方案,其安全性都需要建立在一个前提下:Receiver需要确认公钥确实是Sender发出的。

m0_50572808的博客 2453

【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(1)

clusterProfiler: universal enrichment tool for functional and comparative studyClusterProfiler: 用于功能和比较研究的通用富集工具总览1. 引言1.1 术语1.1.1 基因集和通路1.1.2 基因同源(GO)1.1.3 京都基因与基因组百科全书(KEGG)1.1.4 其他基因集2. 功能富集分析方法2.1 过度表征分析(Over Representation Analysis)2.2 基因集富集分析(Gene Se

小哲的博客 1365

详解各种LLM系列|LLaMA 2模型架构、 预训练、SFT内容详解 (PART1)

作者|Sunnyyyyy整理|NewBeeNLPhttps://zhuanlan.zhihu.com/p/670002922大家好,这里是 NewBeeNLP。之前我们分享了详解各种LLM系列|LLaMA 1 模型架构、预训练、部署优化特点总结今天来看看Llama 2,是Meta在LLaMA基础上升级的一系列从 7B到 70B 参数的大语言模型。Llama2 在各个榜单上精度全面超过...

Kaiyuan_sjtu的博客 3748

【现代人形机器人:从物理建模到大模型驱动的控制与学习】第1章 机器人建模回顾

本章建立读者进行后续控制 / 优化 / 学习工作的数学与计算基础。内容分为三大块:刚体运动学:位姿表示、坐标变换、旋转参数与李代数/李群(指数映射、twist)多关节机构的正/逆运动学:DH 与 POE 两种建模、雅可比矩阵推导、数值/解析逆解方法与奇异性问题约束动力学:拉格朗日公式、牛顿—欧拉递归算法、接触/冲击模型、受约束系统的方程(拉格朗日乘子与互补性条件)每一节同时给出与练习题。假设读者已具备线性代数(矩阵、特征分解、SVD)、多变量微积分与基础力学(牛顿第二定律)知识。

u012133341的博客 185

DAMODEL平台|Llama 3.1 开源模型快速部署:从零到上线

传统的模型往往在面对长篇大论时会出现信息丢失或生成不连贯的情况,但Llama 3.1 405B不仅能够理解复杂的长文本,还能生成条理清晰、逻辑性强的回应。例如,如何优化这些庞大的模型以适应特定的应用场景,如何提高模型的可解释性,确保其决策过程透明且可信,如何保证模型在实际使用中不会出现安全隐患,都是我们在未来需要面对的重要问题。总的来说,Llama 3.1 405B的发布不仅推动了自然语言处理技术的发展,也为我们带来了更多创新的机会。Llama 3.1作为强大的语言模型,在客户服务领域展现出巨大潜力。

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 6881

华为OD机试双机位C卷:日志排序 (Py/C/C++/Java/Js/Go)

华为OD机试双机C卷真题【日志排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试-日志排序。

qq_45776114的博客 1754

phpMyAdmin | mysqli::real_connect(): (HY000/2002): No such file or directory

第一次安装宝塔mysql服务是默认关闭的,需要手动打开,打开服务再次进入phpMyAdmin发现可以进入了。

吻等离子的博客 2871

LLaMA 3.1 模型在DAMODEL平台的部署与实战:打造智能聊天机器人

LLama3.1 是 Meta(Facebook 母公司)发布的系列大语言模型之一,属于 LLaMA(Large Language Model Meta AI)模型系列。LLaMA 模型的目标是通过更高效的设计在保持模型性能的前提下,显著降低其计算和资源需求。LLaMA 3.1 是该系列的最新版本,继承了前面版本,如 LLaMA 1 和 LLaMA 2的许多技术优势,并对模型架构、训练数据和推理能力进行了改进。本文介绍了 LLaMA 3.1 模型的特点、优势以及在 DAMODEL 平台上的部署流程。

易辰的博客 3299

【Altium Designer】Off grid pin解决方法

​今天我画完原理图编译时,出现了太多的黄色(出现warning警告提示)Off grid pin警告,这个警告并不是原理图电气连接出问题了,而是元器件或器件PIN脚没有和栅格对齐造成的原因。再编译还是出现这个警告。 最后经过不断翻阅网上经验和实践,才最终解决,本经验详细记录了解决该警告的有效方法。 解决方案:以下是问题解决步骤... ​

夜半少年的博客 7548

四大LLM模型,预训练和后训练新范式详解(附教程)

最初,大语言模型LLM的训练过程只关注于预训练,但如今已经扩展到包含预训练和后训练两个阶段。后训练通常包括监督指令微调和对齐,这一方法在ChatGPT发布后广泛流行!

2301_81940605的博客 1626

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Git开源的 LLaMA-Factory 模型预训练、微调、评估和部署!

LLaMA-Factory 是一个强大且高效的工具库,旨在简化和加速 LLaMA(Large Language Model Meta AI)模型的训练、微调和部署过程。它针对大语言模型的多样化需求提供了全面的解决方案,包括模型预训练、微调、评估和部署等。

huang9604的博客 2079

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

区分LLaMA、llama.cpp和Ollama

大模型本地部署遇到的三个概念,llama,ollama,llama.cpp。简单区分如下:llama 是一个Meta公司开源的预训练大型语言模型,llama.cpp用于加载和运行 LLaMA 语言模型。ollama是大模型运行框架,它利用了 llama.cpp 提供的底层功能。

weixin_42458975的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LLM(十)| Tiny-Vicuna-1B:Tiny Models轻量化系列Top One

这个小模型是TinyLlama项目的一部分,该项目旨在通过适当的优化,在3万亿tokens上预训练的1.1B Llama模型,但由于Tiny Vicuna 1B是用WizardVicuna数据集微调的TinyLLama 1.1B,因此被称为Tiny Vicuna!source=post_page-----f05e459b8018--------------------------------)我们将使用Huggingface上Jiayi-Pan的Tiny-Vicuna-1B的量化GGUF模型文件。

wshzd的博客 1678

LLM系列 | 19 : Llama 2实战(上篇)-本地部署(附代码)

小伙伴们好,我是《小窗幽记机器学习》的小编:卖热干面的小女孩。紧接前文:万字长文细说ChatGPT的前世今生,后续会尝试以理论+实践的方式逐步对主流的各大LLM进行实测和汉化。今天这篇关于Llama2的小作文其实比较长,所以分为上下两篇,上篇主要介绍和上的效果,包括。本文作为上篇,整个实验过程使用的模型是,包括和。下篇则主要介绍如何用中文语料对Llama 2的基座模型进行微调并实测微调后模型的效果。感兴趣的小伙伴,可以关注下!本文实验完整代码获取请前往《小窗幽记机器学习》找小编索取。

ljp1919的专栏 9383
上一篇: 将图像自动文本化,图像描述质量更高、更准确了
下一篇: 开启想象翅膀:轻松实现文本生成模型的创作应用,支持LLaMA、ChatGLM、UDA、GPT2、Seq2Seq、BART、T5、SongNet等模型,开箱即用
我爱学大模型
博客等级 码龄3年 7883粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值