Llama 3:从Llama 3的模型架构到如何把长度扩展到100万——llama3微调

llama3 结构详解 然而,在MHA中,由于每个head都有独立的键和值,内存和计算成本较高,特别是在处理长序列或大批量数据时。我们知道,在《Attention is all you need》一文中,作者为了提高计算效率,提出了MHA技术,思想是采用分而治之的策略,把K、Q、V 对应的切分为若干个短向量,然后使用Scaled Dot-Product Attention 计算出attention score后,再把结果拼接起来,从而避免了超大向量乘法的计算消耗,从而提高了计算效率。的计算中,也没有做减去均值的操作( 阅读详情

前言

4.19日凌晨正准备睡觉时,突然审稿项目组的文弱同学说:Meta发布Llama 3系列大语言模型了,一查,还真是

本文以大模型开发者的视角,基于Meta官方博客的介绍:Introducing Meta Llama 3: The most capable openly available LLM to date,帮你迅速梳理下LLama的关键特征,并对比上一个版本的LLama2,且本文后续,将更新用我司paper-review数据集微调llama3的训练过程

第一部分 Meta发布Llama 3:所有大模型开发者的福音

1.1 Llama 3的性能

1.1.1 在多个榜单上超越Google的gemma 7B、Mistral 7B

此次发布的Llama 3有两个版本:8B 和 70B。由于预训练和指令微调的加强,模型在推理、代码生成和指令跟踪等方面的能力得到比较大的提高,最终在多个榜单上超越Google的gemma 7B、Mistral 7B(当然了,我还是得说一句,榜单肯定能够说明一些东西,但不代表全部)

1.1.2 一套专门的评估数据集:1800个prompt 涵盖12类任务

为了更好的评估llama3的性能,Meta开发了一套新的高质量人类评估集。该评估集包含 1,800 个prompt,涵盖 12 个关键用例:寻求建议、头脑风暴、分类、封闭式问答、编码、创意写作、提取、塑造角色/角色、开放式问答、推理、重写和总结

且为了防止模型在此评估集上过度拟合,即使Meta的建模团队也无法访问它(说白了,保证评估数据集中的数据不被模型事先学到)

下图显示了Meta针对 Claude Sonnet、Mistral Medium 和 GPT-3.5 对这些类别和提示进行人工评估的汇总结果(compared to competing models of comparable size in real-world scenarios,即PK的开源模型也都是70B左右的大小)

且llama3的预训练模型这些榜单上PK同等规模的其他模型时,亦有着相对突出的表现

1.2 Llama 3:模型架构、预训练数据、扩大预训练和指令微调

1.2.1 模型架构:继续transformer解码器架构、分组查询注意力、8K上下文

和Llama 2一样,Llama 3 继续采用相对标准的decoder-only transformer架构,但做了如下几个关键的改进

  1. Llama 3 使用具有 128K tokens的tokenizer
    相当于,一方面,分词器由 SentencePiece 换为了 Tiktoken,与 GPT4 保持一致,可以更有效地对语言进行编码
    二方面,Token词表从LLAMA 2的32K拓展到了128K
    基准测试显示,Tiktoken提高了token效率,与 Llama 2 相比,生成的token最多减少了 15%

  2. 为了提高推理效率,Llama 3在 8B 和 70B 都采用了分组查询注意力(GQA),根据相关实验可以观察到,尽管与 Llama 2 7B 相比,模型的参数多了 1B,但改进的分词器效率和 GQA 有助于保持与 Llama 2 7B 相同的推理效率

    值得指出的是,上一个版本的llama 2的34B和70B才用到了GQA

  3. 在 8,192 个token的序列上训练模型,且通过掩码操作以确保自注意力不会跨越文档边界
    这点相比llama 2是一个进步,毕竟llama 2的上下文长度还只有4K,所以我司审稿项目组在用平均长度8.5K的paper-review数据集去微调llama2时,不得已必须用上longlora/longqlora这类扩展长度的技术

1.2.2 训练数据:15T预训练数据

做大模型开发的都知道,数据的重要性不言而喻,为进一步提高模型的性能

  1. Llama 3 经过超过 15T token的预训练(比 Llama 2 使用的数据集大七倍,并且包含四倍多的代码,要知道,llama 2的训练数据才2T个token,即2万亿个token),这些数据全部从公开来源收集
  2. Llama 3 预训练数据集的中,其中有超过5%的部分由涵盖 30 多种语言的高质量非英语数据组成。当然,大概率上,这些语言的性能水平不会与英语相同(原因在于其只占5%罗)
  3. 为了确保 Llama 3 接受最高质量数据的训练,他们还开发了一系列数据过滤管道。这些管道包括使用启发式过滤器、NSFW 过滤器、语义重复数据删除方法和文本分类器来预测数据质量
    且使用 Llama 2 作为文本质量分类器 为 Llama 3 生成训练数据
  4. 还进行了广泛的实验,以评估在最终预训练数据集中混合不同来源的数据的最佳方法。这些实验使能够选择一个数据组合,确保 Llama 3 在各种用例(包括琐事问题、STEM、编码、历史知识等)中表现良好
1.2.3 扩大预训练规模

​为了有效利用 Llama 3 模型中的预训练数据,他们投入了大量精力来扩大预训练规模。具体来说

  1. 为下游基准评估制定了一系列详细的缩放法则。这些缩放法则使我们能够选择最佳的数据组合,且使我们能够在实际训练模型之前预测最大模型在关键任务上的性能(例如,在 HumanEval 基准上评估的代码生成 - 见上文)
    \rightarrow 比如在 Llama 3 的开发过程中,对缩放行为进行了一些新的观察。例如,虽然 8B 参数模型的 Chinchilla 最佳训练计算量对应于约 200B 个token,但发现即使在模型建立之后,模型性能仍在继续提高接受了两个数量级以上的数据训练
    \rightarrow 在对多达 15T token进行训练后,8B 和 70B 参数模型都继续以对数线性方式改进。较大的模型可以用较少的训练计算来匹配这些较小模型的性能,但较小的模型通常是首选,因为它们在推理过程中效率更高

  2. 为了训练Llama 3的400B的版本,Meta结合了三种类型的并行化:数据并行化、模​​型并行化和管道并行化(_关于这三种并行训练方法的介绍,
    当同时在 16K GPU 上进行训练时,可实现每个 GPU 超过 400 TFLOPS 的计算利用率,当然,最终在两个定制的24K GPU 集群上进行了训练

    且
    \rightarrow 为了最大限度地延长 GPU 的正常运行时间,开发了一种先进的新训练堆栈,可以自动执行错误检测、处理和维护。还极大地改进了硬件可靠性和静默数据损坏检测机制
    \rightarrow 并且开发了新的可扩展存储系统,以减少检查点和回滚的开销。这些改进使总体有效培训时间超过 95%
    综合起来,这些改进使 Llama 3 的训练效率比 Llama 2 提高了约三倍​

1.2.4 指令微调:SFT之外,组合了拒绝采样、PPO和DPO

为了充分释放预训练模型在聊天用例中的潜力,我们还对指令调整方法进行了创新。我们的后训练方法是:监督微调SFT、拒绝采样、近端策略优化PPO,和直接策略优化DPO的组合

  1. SFT 中使用的prompt质量,以及 PPO 和 DPO 中使用的偏好排名对对齐模型的性能有着巨大的影响
    最终,在模型质量方面的一些最大改进来自于仔细整理这些数据并对人类标注者提供的标注或注释进行多轮质量保证
  2. 通过 PPO 和 DPO 从偏好排名中学习也极大地提高了 Llama 3 在推理和编码任务上的性能。即如果你向模型提出一个它难以回答的推理问题,该模型有时会产生正确的推理轨迹:模型知道如何产生正确的答案,但不知道如何选择它,但对“偏好排名的训练”使模型能够学习如何选择它​

1.3 其他:与相关开源库的兼容、LLama3的部署

1.3.1 与其他开源库的兼容:比如PyTorch 原生库之torchtune、LangChain等
  1. 提供了新的信任和安全工具,包括 Llama Guard 2 和 Cyber​​sec Eval 2 的更新组件,并引入了 Code Shield——一种用于过滤 LLM 生成的不安全代码的推理时间防护栏
  2. 还与torchtune共同开发了 Llama 3
    这个torchtune 是新的 PyTorch 原生库,可以轻松地使用 LLM 进行创作、微调和实验
    且torchtune 提供完全用 PyTorch 编写的内存高效且可破解的训练方法,该库与 Hugging Face、Weights & Biases 和 EleutherAI 等流行平台集成,甚至支持 Executorch,以便在各种移动和边缘设备上运行高效推理
  3. 此外,作者团队还提供了关于「将 Llama 3 与 LangChain 结合使用」的全面入门指南
1.3.2 负责任地部署

为了方便让开发者负责任地部署llama3,他们采用了一种新的系统级方法

​且指令微调模型已经通过内部和外部的努力进行了安全红队(测试)

红队方法利用人类专家和自动化方法来生成对抗性提示,试图引发有问题的响应。例如,我们应用全面的测试来评估与化学、生物、网络安全和其他风险领域相关的滥用风险

所有这些努力都是迭代的,并用于为正在发布的模型进行安全微调提供信息。可以在模型卡中详细了解我们的努力

  1. ​Llama Guard 模型旨在成为快速响应安全的基础,并且可以根据应用需求轻松进行微调以创建新的分类法。作为起点,新的 Llama Guard 2 使用最近宣布的MLCommons 分类法,努力支持这一重要领域行业标准的出现
  2. 此外,Cyber​​SecEval 2 在其前身的基础上进行了扩展,添加了对 LLM 允许滥用其代码解释器的倾向、攻击性网络安全功能以及对提示注入攻击的敏感性的测量(在我们的技术论文中了解更多信息)
  3. 最后,我们引入了 Code Shield,它增加了对 LLM 生成的不安全代码的推理时过滤的支持。这可以缓解不安全代码建议、代码解释器滥用预防和安全命令执行方面的风险

更多参见负责任使用指南(RUG),且正如在 RUG 中概述的那样,Meta建议根据适合应用程序的内容指南检查和过滤所有输入和输出

Llama 3 很快将在所有主要平台上提供,包括云提供商、模型 API 提供商等等,更多见:Getting started with Meta Llama

有关如何利用所有这些功能的示例,请查看Llama Recipes,其中包含所有的开源代码,这些代码可用于从微调到部署再到模型评估的所有内容

1.3.3 Llama 3 的下一步是什么?

llama 3中最大的模型有超过 400B 个参数,不过这个模型仍在训练中(后续,Meta将发布多个具有新功能的模型,包括多模态、以多种语言交谈的能力、更长的上下文窗口和更强的整体功能。且后续还将发布一份详细的研究论文)

第二部分 Gradient AI:58行代码把Llama 3扩展到100万上下文

2.1 Gradient AI把LLama3的长度扩展到16K及其背后的原理

2.1.1 mattshumer/Llama-3-8B-16K:将 Llama-3-8B 的上下文长度扩展到16K

HyperWriteAI 的 CEO Matt Shumer在其推特主页(https://twitter.com/mattshumer_/status/1782576964118675565)上宣布,他自己将 Llama-3-8B 的上下文窗口翻了一番(8k→16K):mattshumer/Llama-3-8B-16K (不过可惜不是instruct模型)

以下是来自huggingface的简介

  1. This is an extended (16K) context version of LLaMA 3 8B (base, not instruct). Trained for five hours on 8x A6000 GPUs, using the Yukang/LongAlpaca-16k-length dataset(即longlora作者弄的16k 数据集:https://huggingface.co/datasets/Yukang/LongAlpaca-16k-length).
  2. rope_theta was set to 1000000.0. Trained with Axolotl(即一个开源的微调框架:GitHub - OpenAccess-AI-Collective/axolotl: Go ahead and axolotl questions__)

我一开始还挺好奇,他到底用的啥技术,深入一了解,原来所用的技术来自国外的一家AI初创公司Gradient AI,且他们也在不断把LLama的长度拉长

  1. Llama-3-8B-Instruct-262k
  2. Llama-3-70B-Gradient-524k
  3. Llama-3 8B Gradient Instruct 1048k
  4. Llama-3 70B Gradient Instruct 1048k
2.1.2 扩展到16K背后的原理:针对位置编码的base参数(rope_theta)扩大

把LLama3的长度扩展到16K的具体实现步骤如下

  1. 首先,微调得到一个加长版的模型
    如本部分开头提到的,“mattshumer/Llama-3-8B-16K”的huggingface页面上有介绍到把rope_theta参数扩大到2倍(因为对于这个模型而言,长度从8K到16K扩展2倍,则对应参数扩大2倍,而Llama 3的rope_theta设置的50 0000,故rope_theta从50 0000扩大到100 0000)

    而这个rope_theta参数其实指的是位置编码概念里的“base”,也就是以前大多模型设置为10000的那个参数,并不是旋转角度\theta

    “还记得RoPE的构造基础是Sinusoidal位置编码?可以改写为下面的公式「以下内容引用自此文的2.1.2节(注,dear friends,莫慌,如果不太理解是个啥意思,或者你想理解下述公式的来龙去脉,请详看此篇详解位置编码的文章 )

    其中,\beta=10000^{\frac{2}{d}},而这个10000这就是上面说的’base’ ”

    而对base做放大是ntk-aware插值的操作, 故在当下这个把LLama 3的rope_theta从50 0000放大到100 0000的场景中,就是\alpha=2的ntk-aware插值

  2. 有了扩展好上下文的微调模型之后,使用开源工具Mergekit比较微调模型和基础模型,提取参数的差异成为LoRA

  3. 同样使用Mergekit,即通过下述代码可以把提取好的LoRA合并到其他同架构模型中了(代码地址为:https://gist.github.com/ehartford/731e3f7079db234fa1b79a01e09859ac,作者为Eric Hartford,这段代码是一个Python脚本,用于将多个适配器模型合并到一个基础模型中,并且可以选择将合并后的模型推送到模型仓库或仅保存到本地目录。代码使用了`transformers`和`peft`库来处理模型和适配器,`torch`用于模型的加载和操作,`os`用于文件路径处理,`argparse`用于解析命令行参数)```

    This supports merging as many adapters as you want.

    python merge_adapters.py --base_model_name_or_path <base_model> --peft_model_paths --output_dir <merged_model>

    导入transformers库中的模型和分词器

    from transformers import AutoModelForCausalLM, AutoTokenizer
    from peft import PeftModel # 导入PEFT模型类
    import torch # 导入PyTorch库
    import os # 导入操作系统接口库
    import argparse # 导入命令行解析库

    def get_args():
    parser = argparse.ArgumentParser() # 创建命令行解析器
    parser.add_argument(“–base_model_name_or_path”, type=str) # 添加命令行参数:基础模型路径或名称
    parser.add_argument(“–peft_model_paths”, type=str, nargs=‘+’, help=“List of paths to PEFT models”) # 添加命令行参数:PEFT模型的路径列表
    parser.add_argument(“–output_dir”, type=str) # 添加命令行参数:输出目录
    parser.add_argument(“–device”, type=str, default=“cpu”) # 添加命令行参数:设备类型,默认为CPU
    parser.add_argument(“–push_to_hub”, action=“store_true”) # 添加命令行参数:是否推送到Hugging Face模型中心
    parser.add_argument(“–trust_remote_code”, action=“store_true”) # 添加命令行参数:是否信任远程代码
    return parser.parse_args() # 解析命令行输入的参数

    def main():
    args = get_args() # 获取命令行参数
    if args.device == ‘auto’: # 自动设备映射
    device_arg = {‘device_map’: ‘auto’}
    else:
    device_arg = {‘device_map’: {“”: args.device}} # 指定设备映射

    print(f"Loading base model: {args.base_model_name_or_path}")  # 打印加载基础模型的信息
    base_model = AutoModelForCausalLM.from_pretrained(
        args.base_model_name_or_path,
        return_dict=True,
        torch_dtype=torch.float16,
        trust_remote_code=args.trust_remote_code,
        **device_arg
    )  # 加载基础模型
    
    model = base_model  # 将基础模型赋值给model变量
    
    for peft_model_path in args.peft_model_paths:      # 遍历所有PEFT模型路径
        print(f"Loading PEFT: {peft_model_path}")      # 打印加载PEFT模型的信息
        model = PeftModel.from_pretrained(model, peft_model_path, **device_arg)  # 加载PEFT模型
        print(f"Running merge_and_unload for {peft_model_path}")  # 打印正在合并和卸载模型的信息
        model = model.merge_and_unload()               # 合并并卸载模型
    
    tokenizer = AutoTokenizer.from_pretrained(args.base_model_name_or_path)  # 加载分词器
    
    if args.push_to_hub:  # 如果指定推送到模型中心
        print(f"Saving to hub ...")  # 打印保存到模型中心的信息
        model.push_to_hub(f"{args.output_dir}", use_temp_dir=False)      # 推送模型到模型中心
        tokenizer.push_to_hub(f"{args.output_dir}", use_temp_dir=False)  # 推送分词器到模型中心
    else:
        model.save_pretrained(f"{args.output_dir}")      # 保存模型到指定目录
        tokenizer.save_pretrained(f"{args.output_dir}")  # 保存分词器到指定目录
    
    print(f"Model saved to {args.output_dir}")           # 打印模型保存的路径
    

    if name == “main”:
    main()

    
    // 待更
    
    
    
2.1.3 针对“位置编码的base参数(rope_theta)扩大”背后溯源的过程

刚开始阿荀因为rope_theta这个取名

  1. 误把这个参数曲解为RoPE概念中的“旋转角度theta”,而如果是按照位置插值的思路,要扩展长度理当是缩小旋转角度而不是放大才对,所以就去看这个参数具体在代码中是负责什么部分

  2. 发现是参数赋值进去以后,是RoPE概念中的“base”(而非RoPE概念中的旋转角度theta),从而也就顺理成章的得把base扩大到2倍,对应到具体的方法中,就是ntk-aware插值(对base做放大)```
    class LlamaRotaryEmbedding(nn.Module):
    def init(self, dim, max_position_embeddings=2048, base=10000, device=None, scaling_factor=1.0):
    super().init() # 调用父类的初始化函数
    self.scaling_factor = scaling_factor # 缩放因子,用于调整位置编码的尺度
    self.dim = dim # 嵌入的维度
    self.max_position_embeddings = max_position_embeddings # 最大位置嵌入数量
    self.base = base # 计算频率的基数

        # 计算逆频率,用于生成位置嵌入的频率部分
        inv_freq = 1.0 / (self.base ** (torch.arange(0, self.dim, 2, dtype=torch.int64).float().to(device) / self.dim))
        self.register_buffer("inv_freq", inv_freq, persistent=False)  # 将逆频率注册为模型的一个缓冲区
    
        # 为了向后兼容,注册余弦和正弦的缓存值
        self.max_seq_len_cached = max_position_embeddings  # 缓存的最大序列长度
        t = torch.arange(self.max_seq_len_cached, device=device, dtype=torch.int64).type_as(self.inv_freq)                  # 生成位置序列
        t = t / self.scaling_factor                # 应用缩放因子
        freqs = torch.outer(t, self.inv_freq)      # 计算每个位置的频率
    
        # 与原始论文不同,这里使用了不同的排列方式以获得相同的计算结果
        emb = torch.cat((freqs, freqs), dim=-1)    # 拼接频率以创建嵌入
    
        # 注册余弦和正弦值的缓存,将它们转换为默认数据类型
        self.register_buffer("_cos_cached", emb.cos().to(torch.get_default_dtype()), persistent=False)
        self.register_buffer("_sin_cached", emb.sin().to(torch.get_default_dtype()), persistent=False)
    
    
    而对于上面的这行代码
    
    
        # 计算逆频率,用于生成位置嵌入的频率部分
        inv_freq = 1.0 / (self.base ** (torch.arange(0, self.dim, 2, dtype=torch.int64).float().to(device) / self.dim))
    
    
    其所对应的公式表达则是  
    ![\text { inv } \_ \text {freq }=\frac{1.0}{\text { base }\left(\frac{\text { torch.arange }(0, \text { dim }, 2)}{\text { dim }}\right)}](https://latex.youkuaiyun.com/eq?%5Ctext%20%7B%20inv%20%7D%20%5C_%20%5Ctext%20%7Bfreq%20%7D%3D%5Cfrac%7B1.0%7D%7B%5Ctext%20%7B%20base%20%7D%5Cleft%28%5Cfrac%7B%5Ctext%20%7B%20torch.arange%20%7D%280%2C%20%5Ctext%20%7B%20dim%20%7D%2C%202%29%7D%7B%5Ctext%20%7B%20dim%20%7D%7D%5Cright%29%7D)  
    其中  
    base 是一个基数常数,例如10000 (**_而上面说了,LLama 3设置的50万_**)  
    dim 是嵌入的维度总数  
    torch.arange(0,dim,2)则代表生成一个从0开始,步长为2,到 dim(但不包括dim)的序列
    
    
    

2.2 把LLama3长度扩展到100万背后的原理:NTK-aware插值

再后来,Gradient AI再通过类似的方式把rope_theta继续放大,使得其长度可以达到100万,具体实现方法是

  1. 调整位置编码:用NTK-aware插值初始化RoPE theta的最佳调度,进行优化,防止扩展长度后丢失高频信息
    相当于原来llama 3的长度为8000,然后rope_theta这个参数是50万
    那要把长度扩展到100万的话,则应该是把rope_theta这个参数扩大:从50万扩大“100万/8000 = 125倍”,毕竟长度扩展多少倍则对应的这个rope_theta扩大多少倍
  2. 渐进式训练:使用UC伯克利Pieter Abbeel团队提出的Blockwise RingAttention方法扩展模型的上下文长度
    且团队通过自定义网络拓扑在Ring Attention之上分层并行化,更好地利用大型GPU集群来应对设备之间传递许多KV blocks带来的网络瓶颈,最终使模型的训练速度提高了33倍

如何学习大模型 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%免费】
首发!Llama3纯本地部署攻略!中文方法! 完成了LLAMA3的模型部署,从测试的结果可以看到, llama3的基础模型对于中文的支持并不好,我们的问题是中文,它却返回了英文的结果,原因可能是因为它的训练集有15个T但是其中95%是英文,想要它支持中文更好,还需要使用中文的训练集进行微调,可喜的是,微调llma系列的中文训练集并不少(可能是因为llama系列都有这个问题),后续我会接着对llama3进行微调, 待续。。。 阅读详情

相关推荐

大模型入门(一)—— LLaMa/Alpaca/Vicuna

LLaMa的模型架构使用的是Transformer Decoder结构,但LLaMa在细节上做了一些优化:Pre-norm很早就被提出,原生的transformer中使用的是post-norm,也就是在每个子层输出后进行归一化,相比post-norm,pre-norm是在每个子层输入前对输入的数据归一化,pre-norm的训练会更稳定,甚至都可以不需要做warm-up也能很好地训练transformer大模型。

DAMOXINGHAITAI的博客 1258

AI大模型企业应用实战:Prompt让LLM理解知识

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

2401_84204413的博客 3212

Llama 3 微调项目实践与教程(XTuner 版)

到此为止我们就让 Llama3 具备了“他是由SmartFlowAI 打造的人工智能助手”的个人认知,本文演示平台为 InternStudio,如其他平台只需适当调整相关路径也能比较顺畅的运行起来,XTuner 玩转 Llama3 图片理解更多玩法请参考:https://github.com/SmartFlowAI/Llama3-XTuner-CN/ (欢迎 Star),同时本周天晚 8 点我们邀请了书生·浦语众多社区大佬一起来分享,欢迎预约直播一起讨论。或者软链接 InternStudio 中的模型。

具身机器人和通用AI 2021

微调llama 3 — PEFT微调和全量微调

高效微调llama3

xiaoxiaoyu290的博客 1万+

学习实践-Vicuna【小羊驼】(部署+运行)

3 月底,UC伯克利开源大语言模型Vicuna来了,这是一个与 GPT-4 性能相匹配的 LLaMA 微调版本。“缺啥补啥缺啥练啥,傻子也突出”!Vicuna 使用从 ShareGPT 收集的用户共享数据对 LLaMA 模型进行微调(ShareGPT 是一个 ChatGPT 数据共享网站,用户会上传自己觉得有趣的 ChatGPT 回答)。利用ShareGPT的7万对话数据对LLaMA微调。Vicuna训练硬件:8块 A100 80G的GPU(比Alpaca训练花销便宜一半)

LZL2020LZL的博客 6309

PP触发EWM产生PMR捡配

PP触发EWM产生PMR捡配 前言 PMR: Production Material Request 在流程订单/生产订单下达后,可以在EWM中产生PMR,在EWM中, PMR其实代表了ERP中的流程订单/生产订单。 You can use SAP EWM in conjunction with the following PP application components: • Production Orders • Process Orders • Repetitive Manufacturing •

ZevYang的博客 1918

一文速览Llama 3:从Llama 3的模型架构到如何把长度扩展到100万——基于NTK-aware插值

4.19日凌晨正准备睡觉时,突然审稿项目组的文弱同学说:Meta发布Llama 3系列大语言模型了一查,还真是本文以大模型开发者的视角,帮你迅速梳理下LLama的关键特征,并对比上一个版本的LLama2,且本文后续,将更新用我司paper-review数据集微调llama3的训练过程。

结构之法 算法之道 1万+

eDP、DP与HDMI——现代显示接口的核心解析

eDP、DP和HDMI各有千秋:eDP以嵌入式设备的低功耗见长,DP凭借开放生态和高带宽成为专业领域首选,而HDMI则依靠庞大的消费电子生态稳居家庭市场。未来,随着Type-C接口的普及和超高清内容的爆发,三者的技术边界可能进一步融合,但各自的核心优势仍将长期共存。对于用户而言,选择接口需基于设备需求——游戏玩家青睐HDMI的VRR,设计师依赖DP的多屏扩展,而轻薄本则离不开eDP的紧凑设计。

麟的博客 8415

一文速览Llama 3及其微调:从如何把长度扩展到100万到如何微调Llama3 8B_llama3 微调 mysql 数据_llama3 代码很短

4.19日凌晨正准备睡觉时,突然审稿项目组的文弱同学说:Meta发布Llama 3系列大语言模型了一查,还真是本文以大模型开发者的视角,基于Meta官方博客的介绍:Introducing Meta Llama 3: The most capable openly available LLM to date,帮你迅速梳理下LLama的关键特征,并对比上一个版本的LLama2,且本文后续,将更新用我司paper-review数据集微调llama3的训练过程。

2401_85280307的博客 2076

基于PSINS的INS/NHC/ODO组合导航仿真全解析

组合导航通过多传感器融合克服单一导航系统的局限,是车辆自主定位的关键技术。其中惯性导航(INS)依靠陀螺仪与加速度计积分推算运动状态,但误差随时间累积;GNSS提供绝对位置,却在城市峡谷中易受多径效应和遮挡影响导致定位漂移。卡尔曼滤波作为信息融合核心,将不同量测按统计特性加权,实现优势互补。基于PSINS开源工具箱搭建的SINS/GNSS/ODO/NHC组合导航仿真,能够在GNSS失锁条件下利用非完整约束和里程计抑制惯性误差发散,广泛应用于无人驾驶、物流车辆自主定位等场景。本文围绕PSINS仿真环境,详细拆

weixin_29044713的博客 253

射频接收机本振相噪指标计算:从倒易混频到GSM实战

在射频接收机设计中,相位噪声是衡量本振信号频谱纯度、影响系统灵敏度的关键指标。其核心影响机制源于倒易混频原理:当不纯净的本振信号与强带外阻塞信号混频时,本振的噪声边带会被转换到中频通带内,从而抬升接收机噪声基底。这一过程直接决定了接收机在阻塞测试等场景下的性能极限。从技术价值看,精确计算本振相噪要求,是进行系统噪声预算、实现成本与性能权衡的核心依据。尤其在手机、基站等对灵敏度要求极高的应用中,它指导着锁相环和压控振荡器的选型与设计。本文以经典的GSM DCS1800标准为例,通过详细的公式推导与变量分析,演

weixin_30368405的博客 327

一文速览Llama 3及其微调:从如何把长度扩展到100万到如何微调Llama3 8B

4.19日凌晨正准备睡觉时,突然审稿项目组的文弱同学说:Meta发布Llama 3系列大语言模型了一查,还真是本文以大模型开发者的视角,基于Meta官方博客的介绍:Introducing Meta Llama 3: The most capable openly available LLM to date,帮你迅速梳理下LLama的关键特征,并对比上一个版本的LLama2,且本文后续,将更新用我司paper-review数据集微调llama3的训练过程。

AI大模型的博客 2737

手把手教你实现阿克曼ROS小车的运动控制

本文详细介绍了如何从零开始实现阿克曼ROS小车的运动控制。内容涵盖硬件搭建、STM32底层PID速度与舵机控制、ROS层阿克曼运动学模型解析,以及上下位机通信协议设计。通过手把手的代码示例和调试步骤,帮助机器人爱好者与开发者掌握将高级速度指令转化为小车具体动作的全流程,实现流畅的阿克曼转向控制。

weixin_29193259的博客 199

一文速览Llama 3及其微调:从如何把长度扩展到100万到如何微调Llama3 8B_llama3 微调 mysql 数据

提供了新的信任和安全工具,包括 Llama Guard 2 和 Cybersec Eval 2 的更新组件,并引入了 Code Shield——一种用于过滤 LLM 生成的不安全代码的推理时间防护栏还与torchtune共同开发了 Llama 3 ,torchtune 是新的 PyTorch 原生库,可以轻松地使用 LLM 进行创作、微调和实验。torchtune 提供完全用 PyTorch 编写的内存高效且可破解的训练方法。

2301_77193447的博客 1444

【2026最新】3分钟Windows极速部署OpenClaw,完整可复制命令+全链路避坑指南

很多新手在Windows环境部署OpenClaw时,总会遇到各种玄学问题:WSL环境配置失败、Docker镜像拉取超时、容器启动后无法访问、权限报错、数据丢失……网上大量教程要么是Linux环境的,要么是早已过时的旧版本配置,照着操作不仅没法3分钟部署,反而要花几小时踩坑填坑。

2601_94871597的博客 493

LeRobot 入门教程(十)LIBERO 机器人终身学习评估

LIBERO是一项专注于机器人终身学习(LLDM)的基准测试平台,包含130项任务,分为5大套件(空间推理、物体操作、目标约束等)。LeRobot框架已集成LIBERO,支持单/多套件评估,并兼容SmolVLA模型。训练需使用预处理数据集(HuggingFaceVLA/libero),观测数据需符合规范(8维状态+双摄像头图像)。该平台采用MuJoCo模拟,支持无头服务器运行,旨在推动机器人持续学习算法的发展与标准化评估。

2506_90492529的博客 1663

【LLAMA】羊驼从LLAMA1到LLAMA3梳理

LLAMA 1到3梳理在之前的大语言模型(GPTs)中,基于模型越大效果越好进行实验。然而,Hoffmann等人(2022)最近的工作表明,对于给定的计算预算,最佳性能不是由最大的模型实现的,而是由经过更多数据训练的较小模型实现的。Hoffmann等人(2022)的缩放定律的目标是确定如何最佳地缩放特定训练计算预算的数据集和模型大小。然而,这个目标忽略了推理时间,这在大规模服务语言模型时变得至关重要。因为大部分社区用户其实没有训练 LLM 的资源,他们更多的是拿着训好的 LLM 来推理。

胡侃有料的博客 1770

终于搞定!Cloudflare Tunnel 报错 Error 1033,一次完整修复记录

最近遇到了 Cloudflare Tunnel Error 1033 报错的问题,本文记录了完整的排查和解决方案💡

XiaoqiangClub的博客 1760

58行代码把Llama 3扩展到100万上下文,任何微调版都适用

堂堂开源之王Llama 3,居然只有……,让到嘴边的一句“真香”又咽回去了。在32k起步,100k寻常的今天,这是故意要给开源社区留做贡献的空间吗?(一百万)背后是一个LoRA,从扩展好上下文的Llama 3 70B Instruct微调版本中提取出来,。接下来使用Mergekit,就可以与其他同架构模型一起运行或直接合并到模型中。所使用的1048k上下文微调版本,刚刚在流行的大海捞针测试中达到全绿(100%准确率)的成绩。不得不说,开源的进步速度是指数级的。

weixin_59191169的博客 847

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

58行代码把Llama 3扩展到100万上下文,任何微调版都适用 | 最新快讯

首先,Gradient 团队先在原版 Llama 3 70B Instruct 的基础上继续训练,得到 Llama-3-70B-Instruct-Gradient-1048k。有了扩展好上下文的微调模型之后,使用开源工具 Mergekit 比较微调模型和基础模型,提取参数的差异成为 LoRA。首先 1048k 上下文版 Llama 3 微调模型来自 Gradient AI,一个企业 AI 解决方案初创公司。所使用的 1048k 上下文微调版本,刚刚在流行的大海捞针测试中达到全绿(100% 准确率)的成绩。

www3300300的专栏 1081

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

微调LLama 3——七月论文审稿GPT第5版:拿早期paper-7方面review数据集微调LLama 3

用早期paper-4方面review微调llama2本节微调完之后,自然便可以与以下模型PK(针对哪个情况,则用那个情况的paper,所以评估llama3版本的情况3时,则都统一早期paper)

结构之法 算法之道 5353

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 第一批用AI工作的产品经理,已经碾压同事了!
下一篇: 本地部署 Meta Llama3-8b 和 Llama3-70b_llama3 本地部署
普通网友
博客等级 码龄3年 4493粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值