点击“蓝字” 关注我们
1. LLM架构
虽然不需要深入了解Transformer架构的细节,但了解现代LLM的主要步骤非常重要:通过分词将文本转换为数字,通过包含注意力机制的多层处理这些分词,最后通过各种采样策略生成新文本。
-
架构概览:了解从编码器-解码器Transformer到仅解码器架构(如GPT)的演变,这些架构是现代LLM的基础。重点关注这些模型如何在高级别上处理和生成文本。
-
分词:学习分词的原理——文本是如何被转换为LLM可以处理的数值表示的。探索不同的分词策略及其对模型性能和输出质量的影响。
-
注意力机制:掌握注意力机制的核心概念,特别是自注意力及其变体。了解这些机制如何使LLM能够处理长距离依赖关系,并在序列中保持上下文。
-
采样技术:探索各种文本生成方法及其权衡。比较确定性方法(如贪婪搜索和束搜索)与概率方法(如温度采样和核采样)。
推荐:
-
Visual intro to Transformers by 3Blue1Brown: Visual introduction to Transformers for complete beginners.(https://www.youtube.com/watch?v=wjZofJX0v4M)
-
LLM Visualization by Brendan Bycroft: Interactive 3D visualization of LLM internals.(https://bbycroft.net/llm)
-
nanoGPT by Andrej Karpathy: A 2h-long YouTube video to reimplement GPT from scratch (for programmers). He also made a video about tokenization.(https://www.youtube.com/watch?v=kCc8FmEb1nY)
-
Attention? Attention! by Lilian Weng: Historical overview to introduce the need for attention mechanisms.(https://lilianweng.github.io/posts/2018-06-24-attention/)
-
Decoding Strategies in LLMs by Maxime Labonne: Provide code and a visual introduction to the different decoding strategies to generate text.(https://mlabonne.github.io/blog/posts/2023-06-07-Decoding_strategies.html)
2. 预训练模型
预训练是一个计算密集且成本高昂的过程。虽然这不是本课程的重点,但了解模型是如何预训练的非常重要,尤其是在数据和参数方面。预训练也可以由爱好者在小规模上进行,例如使用小于10亿参数的模型。
-
数据准备:预训练需要海量的数据集(例如,Llama 3.1是在15万亿个标记上训练的),这些数据需要精心策划、清理、去重和分词。现代预训练流程会实施复杂的过滤,以去除低质量或有问题的内容。
-
分布式训练:结合不同的并行化策略:数据并行(批量分布)、流水线并行(层分布)和张量并行(操作拆分)。这些策略需要优化网络通信和跨GPU集群的内存管理。
-
训练优化:使用带有预热的自适应学习率、梯度裁剪和归一化以防止爆炸、混合精度训练以提高内存效率,以及使用经过调整的超参数的现代优化器(如AdamW、Lion)。
-
监控:使用仪表盘跟踪关键指标(如损失、梯度、GPU状态),为分布式训练问题实施针对性日志记录,并设置性能分析以识别计算和通信中的瓶颈。
推荐:
-
FineWeb by Penedo et al.: Article to recreate a large-scale dataset for LLM pretraining (15T), including FineWeb-Edu, a high-quality subset.(https://huggingface.co/spaces/HuggingFaceFW/blogpost-fineweb-v1)
-
RedPajama v2 by Weber et al.: Another article and paper about a large-scale pre-training dataset with a lot of interesting quality filters.(https://www.together.ai/blog/redpajama-data-v2)
-
nanotron by Hugging Face: Minimalistic LLM training codebase used to make SmolLM2.(https://github.com/huggingface/nanotron)
-
Parallel training by Chenyan Xiong: Overview of optimization and parallelism techniques.(https://www.andrew.cmu.edu/course/11-667/lectures/W10L2%20Scaling%20Up%20Parallel%20Training.pdf)
-
Distributed training by Duan et al.: A survey about efficient training of LLM on distributed architectures.(https://arxiv.org/abs/2407.20018)
-
OLMo 2 by AI2: Open-source language model with model, data, training, and evaluation code.(https://allenai.org/olmo)
-
LLM360 by LLM360: A framework for open-source LLMs with training and data preparation code, data, metrics, and models.(https://www.llm360.ai/)
3. 后训练数据集
后训练数据集具有精确的结构,包含指令和答案(监督微调)或指令和选择/拒绝的答案(偏好对齐)。对话结构比用于预训练的原始文本要少见得多,这就是为什么我们通常需要处理种子数据并对其进行精炼,以提高样本的准确性、多样性和复杂性。
-
存储和聊天模板:由于对话结构的存在,后训练数据集以特定格式存储,如ShareGPT或OpenAI/HF格式。然后,这些格式被映射到聊天模板(如ChatML或Alpaca)中,以生成模型训练所需的最终样本。
-
合成数据生成:基于种子数据使用前沿模型(如GPT-4o)生成指令-响应对。这种方法允许灵活且可扩展地创建高质量答案的数据集。关键考虑因素包括设计多样化的种子任务和有效的系统提示。
-
数据增强:使用技术如经过验证的输出(使用单元测试或求解器)、多种答案与拒绝采样、Auto-Evol、Chain-of-Thought、Branch-Solve-Merge、角色扮演等来增强现有样本。
-
质量过滤:传统技术包括基于规则的过滤、去除重复或近似重复(使用MinHash或嵌入向量)以及n-gram去污染。奖励模型和评判LLM通过细粒度和可定制的质量控制补充了这一步骤。
推荐:
-
Synthetic Data Generator by Argilla: Beginner-friendly way of building datasets using natural language in a Hugging Face space.(https://huggingface.co/spaces/argilla/synthetic-data-generator)
-
LLM Datasets by Maxime Labonne: Curated list of datasets and tools for post-training.(https://github.com/mlabonne/llm-datasets)
-
NeMo-Curator by Nvidia: Dataset preparation and curation framework for pre and post-training data.(https://github.com/NVIDIA/NeMo-Curator)
-
Distilabel by Argilla: Framework to generate synthetic data. It also includes interesting reproductions of papers like UltraFeedback.(https://distilabel.argilla.io/dev/sections/pipeline_samples/)
-
Semhash by MinishLab: Minimalistic library for near-deduplication and decontamination with a distilled embedding model.(https://github.com/MinishLab/semhash)
-
Chat Template by Hugging Face: Hugging Face’s documentation about chat templates.(https://huggingface.co/docs/transformers/main/en/chat_templating)
4. 监督式微调(Supervised Fine-Tuning)
监督式微调(SFT)将基础模型转变为能够回答问题和遵循指令的助手(深入了解Fine-Tuning:解锁大语言模型的潜能)。在这个过程中,它们学会了如何构建答案,并重新激活预训练阶段学到的知识子集。向模型灌输新知识是可能的,但这种知识是表面的——它不能用来学习一种全新的语言。始终优先考虑数据质量,而不是参数优化。
-
训练技术:全参数微调会更新模型的所有参数,但这需要大量的计算资源。参数高效的微调技术,如LoRA(Low-Rank Adaptation)和QLoRA(Quantized LoRA),通过训练少量适配器参数来减少内存需求,同时保持基础权重不变。QLoRA结合了4位量化和LoRA,以减少显存占用。
-
训练参数:关键参数包括学习率及其调度器、批量大小、梯度累积、训练周期数、优化器(例如8位AdamW)、用于正则化的权重衰减以及用于训练稳定的预热步骤。LoRA还增加了三个参数:秩(通常为16-128)、α(1-2倍秩)和目标模块。
-
分布式训练:使用DeepSpeed或FSDP(Fully Sharded Data Parallel)在多GPU上扩展训练。DeepSpeed提供了三个ZeRO优化阶段,通过状态分区逐步提高内存效率。这两种方法都支持梯度检查点技术以提高内存效率。
-
监控:跟踪训练指标,包括损失曲线、学习率调度和梯度范数。监控常见的问题,如损失突增、梯度爆炸或性能下降。
推荐:
-
Fine-tune Llama 3.1 Ultra-Efficiently with Unsloth by Maxime Labonne: Hands-on tutorial on how to fine-tune a Llama 3.1 model using Unsloth.(https://huggingface.co/blog/mlabonne/sft-llama3)
-
Axolotl — Documentation by Wing Lian: Lots of interesting information related to distributed training and dataset formats.(https://axolotl-ai-cloud.github.io/axolotl/)
-
Mastering LLMs by Hamel Husain: Collection of educational resources about fine-tuning (but also RAG, evaluation, applications, and prompt engineering).(https://parlance-labs.com/education/)
-
LoRA insights by Sebastian Raschka: Practical insights about LoRA and how to select the best parameters.(https://lightning.ai/pages/community/lora-insights/)
5. 偏好对齐(Preference Alignment)
偏好对齐是后训练流程的第二阶段,专注于将生成的答案与人类偏好对齐。这一阶段最初旨在调整LLM的语气,减少毒性内容和幻觉现象。然而,它现在也越来越重要,用于提升模型的性能和实用性。与SFT不同,存在许多偏好对齐算法。这里,我们将重点关注两种最重要的算法:DPO(Direct Preference Optimization)和PPO(Proximal Policy Optimization)。
-
拒绝采样:对于每个提示,使用训练好的模型生成多个响应,并对这些响应进行评分,以推断出被选择和被拒绝的答案。这种方法创建了“策略内”数据,其中两个响应都来自正在训练的模型,从而提高了对齐的稳定性。
-
直接偏好优化(DPO):直接优化策略,以最大化被选择响应相对于被拒绝响应的可能性。它不需要奖励建模,这使得它比PPO更具计算效率,但在质量上略逊一筹。
-
近端策略优化(PPO):迭代更新策略,以在保持初始行为接近的情况下最大化奖励。它使用奖励模型对响应进行评分,并需要仔细调整超参数,包括学习率、批量大小和PPO剪辑范围。
-
监控:除了SFT指标外,你还希望最大化被选择和偏好答案之间的差距。准确率也应该逐渐提高,直到达到平稳。
推荐:
-
Illustrating RLHF by Hugging Face: Introduction to RLHF with reward model training and fine-tuning with reinforcement learning.(https://huggingface.co/blog/rlhf)
-
LLM Training: RLHF and Its Alternatives by Sebastian Rashcka: Overview of the RLHF process and alternatives like RLAIF.(https://magazine.sebastianraschka.com/p/llm-training-rlhf-and-its-alternatives)
-
Preference Tuning LLMs by Hugging Face: Comparison of the DPO, IPO, and KTO algorithms to perform preference alignment.(https://huggingface.co/blog/pref-tuning)
-
Fine-tune Mistral-7b with DPO by Maxime Labonne: Tutorial to fine-tune a Mistral-7b model with DPO and reproduce NeuralHermes-2.5.(https://mlabonne.github.io/blog/posts/Fine_tune_Mistral_7b_with_DPO.html)
-
DPO Wandb logs by Alexander Vishnevskiy: It shows you the main metrics to track and the trends you should expect.(https://wandb.ai/alexander-vishnevskiy/dpo/reports/TRL-Original-DPO–Vmlldzo1NjI4MTc4)
6. 评估
可靠地评估LLM(Agent-as-a-Judge:AI系统评估新思路)是一个复杂但至关重要的任务,它指导数据生成和训练过程。评估可以提供宝贵的反馈,帮助我们发现需要改进的领域,从而调整数据组合、质量和训练参数。然而,始终要记住古德哈特定律(Goodhart’s Law):“当一个指标成为目标时,它就不再是一个好的指标。”
-
自动化基准测试:使用经过策划的数据集和指标对模型进行特定任务的评估,例如MMLU。这种方法适用于具体任务,但在评估抽象和创造性能力方面表现不佳,并且容易受到数据泄露的影响。
-
人工评估:由人类向模型提问并对其回答进行评分。评估方法从简单的直觉判断到系统化的标注(附带具体指导方针)以及大规模社区投票(例如竞技场)不等。这种方法更适合主观性任务,但在事实准确性方面不太可靠。
-
基于模型的评估(评估多代理(Multi-Agent)系统:深度解析与实践探索):使用评判模型和奖励模型来评估模型输出。这种方法与人类偏好高度相关,但存在偏向自身输出和评分不一致的问题。
-
反馈信号:分析错误模式以识别特定弱点,例如在遵循复杂指令方面的限制、缺乏特定知识或对对抗性提示的敏感性。这些弱点可以通过改进数据生成和训练参数来改善。
推荐:
-
Evaluation guidebook by Clémentine Fourrier: Practical insights and theoretical knowledge about LLM evaluation.(https://github.com/huggingface/evaluation-guidebook)
-
Open LLM Leaderboard by Hugging Face: Main leaderboard to compare LLMs in an open and reproducible way (automated benchmarks).(https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard)
-
Language Model Evaluation Harness by EleutherAI: A popular framework for evaluating LLMs using automated benchmarks.(https://github.com/EleutherAI/lm-evaluation-harness)
-
Lighteval by Hugging Face: Alternative evaluation framework that also includes model-based evaluations.(https://github.com/huggingface/lighteval)
-
Chatbot Arena by LMSYS: Elo rating of general-purpose LLMs, based on comparisons made by humans (human evaluation).(https://lmarena.ai/)
7. 量化
量化(量化技术助力LLM(Large Language Model)轻量级部署)是将模型的参数和激活值转换为较低精度的过程。例如,原本使用16位存储的权重可以转换为4位表示。这种技术变得越来越重要,因为它可以显著降低LLM的计算和内存成本。
-
基础技术:了解不同精度级别(如FP32、FP16、INT8等)以及如何使用绝对最大值(absmax)和零点(zero-point)技术进行简单量化。
-
GGUF和llama.cpp:最初为在CPU上运行而设计的llama.cpp和GGUF格式已成为在消费级硬件上运行LLM的最受欢迎的工具。它支持将特殊标记、词汇表和元数据存储在单个文件中。
-
GPTQ和AWQ:像GPTQ/EXL2和AWQ这样的技术引入了逐层校准,即使在极低的位宽下也能保持性能。它们通过动态缩放减少灾难性异常值,并选择性地跳过或重新调整最重的参数。
-
SmoothQuant和ZeroQuant:新的量化友好型变换(SmoothQuant)和基于编译器的优化(ZeroQuant)有助于在量化之前减少异常值。它们还通过融合某些操作和优化数据流来减少硬件开销。
推荐:
-
Introduction to quantization by Maxime Labonne: Overview of quantization, absmax and zero-point quantization, and LLM.int8() with code.(https://mlabonne.github.io/blog/posts/Introduction_to_Weight_Quantization.html)
-
Quantize Llama models with llama.cpp by Maxime Labonne: Tutorial on how to quantize a Llama 2 model using llama.cpp and the GGUF format.(https://mlabonne.github.io/blog/posts/Quantize_Llama_2_models_using_ggml.html)
-
4-bit LLM Quantization with GPTQ by Maxime Labonne: Tutorial on how to quantize an LLM using the GPTQ algorithm with AutoGPTQ.(https://mlabonne.github.io/blog/posts/4_bit_Quantization_with_GPTQ.html)
-
Understanding Activation-Aware Weight Quantization by FriendliAI: Overview of the AWQ technique and its benefits.(https://medium.com/friendliai/understanding-activation-aware-weight-quantization-awq-boosting-inference-serving-efficiency-in-10bb0faf63a8)
-
SmoothQuant on Llama 2 7B by MIT HAN Lab: Tutorial on how to use SmoothQuant with a Llama 2 model in 8-bit precision.(https://github.com/mit-han-lab/smoothquant/blob/main/examples/smoothquant_llama_demo.ipynb)
-
DeepSpeed Model Compression by DeepSpeed: Tutorial on how to use ZeroQuant and extreme compression (XTC) with DeepSpeed Compression.(https://www.deepspeed.ai/tutorials/model-compression/)
8. 新趋势
以下是一些没有归入其他类别的值得关注的主题。其中一些是已经较为成熟的技术(如模型合并、多模态)(MiniCPM-o 2.6:开源大型语言模型在多模态任务上超越GPT-4o和Claude 3.5),而另一些则是更具实验性的(如可解释性、测试时计算扩展),并且是许多研究论文的重点。
-
模型合并:合并训练好的模型已经成为一种流行的方法,可以在不进行微调的情况下创建高性能模型。流行的mergekit库实现了大多数流行的合并方法,如SLERP、DARE和TIES。
-
多模态模型:这些模型(如CLIP、Stable Diffusion或LLaVA)能够处理多种类型的输入(文本、图像、音频等),并使用统一的嵌入空间,从而解锁了强大的应用,例如文本到图像的生成。
-
可解释性:稀疏自编码器(Sparse Autoencoders, SAEs)等机制可解释性技术取得了显著进展,能够揭示LLM的内部工作机制。这些技术还被应用于修改模型行为而无需重新训练,例如通过abliteration技术。
-
测试时计算扩展:在测试阶段扩展计算预算需要多次调用,并且涉及专门的模型,如过程奖励模型(Process Reward Model, PRM)。通过迭代步骤和精确评分,这种方法可以显著提高复杂推理任务的性能。
推荐:
-
Merge LLMs with mergekit by Maxime Labonne: Tutorial about model merging using mergekit.(https://mlabonne.github.io/blog/posts/2024-01-08_Merge_LLMs_with_mergekit.html)
-
Smol Vision by Merve Noyan: Collection of notebooks and scripts dedicated to small multimodal models.(https://github.com/merveenoyan/smol-vision)
-
Large Multimodal Models by Chip Huyen: Overview of multimodal systems and the recent history of this field.(https://huyenchip.com/2023/10/10/multimodal.html)
-
Unsensor any LLM with abliteration by Maxime Labonne: Direct application of interpretability techniques to modify the style of a model.(https://huggingface.co/blog/mlabonne/abliteration)
-
Intuitive Explanation of SAEs by Adam Karvonen: Article about how SAEs work and why they make sense for interpretability.(https://adamkarvonen.github.io/machine_learning/2024/06/11/sae-intuitions.html)
-
Scaling test-time compute by Beeching et al.: Tutorial and experiments to outperform Llama 3.1 70B on MATH-500 with a 3B model.(https://huggingface.co/spaces/HuggingFaceH4/blogpost-scaling-test-time-compute)
零基础入门AI大模型
今天贴心为大家准备好了一系列AI大模型资源,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
有需要的小伙伴,可以点击下方链接免费领取【保证100%免费
】
1.学习路线图
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
(都打包成一块的了,不能一一展开,总共300多集)
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
5.免费获取
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码或者点击以下链接都可以免费领取【保证100%免费】
本文转自 https://mp.weixin.qq.com/s/YhQFg2hcr4185BuoWF99Kg,如有侵权,请联系删除。
评论(0)