Coder Social home page Coder Social logo

research's Introduction

Research

paper & learning tutorial reading list

Knowledge

Knowledge Augmentation

Knowledge Extraction

Knowledge Graph

Knowledge Fusion

Knowledge Inference

Knowledge Update

Knowledge Validation

LLM

機制

Chain of Thought

Tree of Thought

聯邦學習

reference

Machnine Unlearning

reference

微調

Adapter

  • 介紹
  • 優點
    • 参数效率更高:一个任务只需要少量参数,训练更快,占用的内存更少,对数据集较小的任务更难过拟合,也更有利于模型的存储和分发
    • 连续学习的遗忘问题:Adapter 冻结了原有模型的参数,保证了原来的知识不被遗忘。
    • 多任务学习:使用 adapter 也可以用比较少量的参数学习多个任务

LoRA (Low-Rank Adaptation of LLM)

  • PEFT(Parameter-Efficient Fine-Tuning)的技術之一
  • 介紹:在原模型基礎上,增加Adapter於另一分支路徑,訓練時可擇一路徑訓練
    • 微調時,走Adapter路徑,只更新Adapter的參數,保持原PLM參數不便
    • 推論時,走原路徑,代表只使用原模型參數,沒有遺忘原本知識
    • 推論時,走Adapter路徑,走微調知識,不走原PLM知識
  • 優點
    • 低秩分解:從單一大矩陣W(dd) 變成兩個小矩陣U (dr)與V (r*d)的乘積,項低計算複雜度
      • 将 LoRA 的秩r设置为预训练权重矩阵的秩,就能大致恢复了全量微调的表现力。也就是说,随着增加可训练参数的数量,训练 LoRA 大致收敛于训练原始模型。
    • 多粒度:可以針對詞、段落、Downstream-task多種顆粒度去建模
    • 異構框架:可應用於不同結構的transformer當中
    • 無監督學習:使用預測-聚合損失函數進行adapter的參數學習,無須另外標註資料
    • 没有额外的推理延时
    • 减少内存和存储资源消耗
  • 痛點
    • 參數空間小:LoRA中参与训练的参数量较少,解空间较小,效果相比全量微调有一定的差距。
    • 微调大模型成本高:对于上百亿参数量的模型,LoRA微调的成本还是很高。
    • 精度损失:针对第二点,可以采用int8或int4量化,进一步对模型基座的参数进行压缩。但是又会引发精度损失的问题,降低模型性能。
  • 與传统的多任务学习相比
    • 好处:不同任务之间影响较少
    • 坏处:不同任务带来的相互的监督可能会变少
reference
  • 详解大模型微调方法LoRA Adapter(内附实现代码)
  • ICLR2022高分文章:将Adapter、prompt-tuning、LoRA等纳入统一的框架
  • 微調大型語言模型LLM的技術LoRA及生成式AI-Stable diffusion LoRA
  • 【peft】huggingface大模型加载多个LoRA并随时切换
    • 介紹如何使用 Huggingface - PEFT
  • LLM - LoRA 模型合并与保存
    • LoRA透過merge_and_unload() :可將adapter與基本模型合併載入,消除延遲
    • Code實作介紹
  • Github - Huggingface - PEFT
    • 開源框架PEFT
      • LoRA:
        • 通过学习小参数的低秩矩阵来近似模型权重矩阵W的参数更新,训练时只优化低秩矩阵参数。
        • 參考前面說明
      • P-Tuning:
        • 利用少量连续的 embedding 参数作为 prompt 使 GPT 更好的应用于 NLU 任务
        • P-Tuning 只在 embedding 层增加参数
        • P-Tuning V2方法的思路其实和 Prefix-Tuning 相似,在模型的每一层都应用连续的 prompts 并对 prompts 参数进行更新优化。同时,该方法是针对 NLU 任务优化和适配的。
      • Prefix Tuning:
        • Prefix-Tuning 是针对 NLG 任务设计
        • 固定 PLM 的所有参数,只更新优化特定任务的 prefix
        • Prefix-Tuning 在每一层都添加可训练参数
        • 在模型输入前添加一个连续的且任务特定的向量序列(continuous task-specific vectors),称之为前缀(prefix)。前缀被视为一系列“虚拟 tokens”
        • 優點
          • 只需要为每个任务存储特定 prefix,使 Prefix-tuning 模块化且节省存储空间
          • Prefix-tuning 性能好于 Infix-tuning,因为 prefix 能够同时影响x和y的隐层激活,而 infix 只能够影响y的隐层激活
        • 缺點
          • Prefix Tuning 难以优化,其性能随可训练参数规模非单调变化,
          • 为前缀保留部分序列长度必然会减少用于处理下游任务的序列长度。
      • Prompt Tuning:
        • 可以看做是 Prefix Tuning 的简化
        • 固定整个预训练模型参数,只允许将每个下游任务的额外k个可更新的 tokens 前置到输入文本中,也没有使用额外的编码层或任务特定的输出层。
        • 在模型的输入或隐层添加K个额外可训练的前缀 tokens(这些前缀是连续的伪 tokens,不对应真实的 tokens),只训练这些前缀参数;
        • 提出了 Prompt Ensembling 方法来集成预训练语言模型的多种 prompts
          • 在同一任务上训练n个prompts,为一个任务创建了n个单独的模型,同时在整个过程**享核心的预训练语言建模参数
      • Adapter-Tuning (PEFT技術之一,如LLM-Adapters是其實作)
        • 前兩個是添加prompt embedding 参数来以少量参数适配下游任务
        • 将较小的神经网络层或模块插入预训练模型的每一层,这些新插入的神经模块称为 adapter(适配器),下游任务微调时也只训练这些适配器参数
        • 種類:主要包括 Series Adapter(串行) 和 Parallel Adapter(并行)
        • 缺點
          • Adapter Tuning 在 PLM 基础上添加适配器层会引入额外的计算,带来推理延迟问题
  • LLM-Adapters: An Adapter Family for Parameter-Efficient Fine-Tuning of Large Language Models
    • LLM-Adapter是对 PEFT 库的扩展,是一个简单易用的框架,将各种适配器集成到 LLM 中
      • PEFT4種方法
      • AdapterH
      • AdapterP
      • Parallel
        • 将适配器模块与每层 Transformer 的多头注意力和前馈层并行计算集成。
  • 大模型参数高效微调(PEFT)
    • 介紹Huggingface - PEFT
    • 介紹LLM-Adapters

加速技巧

Optimizer

Layer Dropping

Sparse Attention

Knowledge Distillation

  • 抽取複雜模型訓練出的精華為另一個簡單模型所用,讓這個小的簡單模型也能達到跟複雜模型一樣的效果
    • 採用teacher/student師徒概念的框架來實現,由teacher模型先訓練好權重後,再抽取(蒸餾)精華作為student模型的訓練教材,讓student也能達到比美teacher的效果
    • 精華是指訓練好的參數權重,也有一些人稱為Dark knowledge(暗知識)。
  • Geoffrey Hinton, Oriol Vinyals及Jeff Dean在2015年的論文「Distilling the Knowledge in a Neural Network」中推廣
  • (2022)LLM-QAT: Data-Free Quantization Aware Training for Large Language Models
Reference

模型

LLaMA

LLaMA2

GPT

Bloomz

資料集

  • 待閱讀
    • (2021)Deduplicating training data makes language models better
      • 去除資料中重複的部分
    • Scaling Data-Constrained Language Models
      • 命題:當資料不夠,能做什麼?
      • Focus: quantify the impact of multiple epochs in LLM training such that practitioners can decide how to allocate compute when scaling models
      • 提出 data-constrained scaling law, 通用化 Chinchilla scaling law
      • 儘管僅訓練單一epoch的模型始終具有最佳的驗證損失和計算效益,但在訓練多達4個epoch的模型之間的差異往往不重要,並且不會導致下游任務性能的差異。
      • 持續訓練額外的epoch是有益的,但回報最終會趨近於零。
      • 在受限的數據情境下,將新的計算資源分配給更多的參數和時期是必要的,並且時期應該稍微加快

Recommendation System

Survey

Natural Language Processing

Entity Linking

life-long learning

reference

research's People

Contributors

troisliu avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.