paper & learning tutorial reading list
- Knowledge Augmentation
- Knowledge Extraction
- Knowledge Graph
- Knowledge Fusion
- Knowledge Inference
- Knowledge Update
- Knowledge Validation
- 策略 1:使用分隔符清楚地標示輸入中不同的部分
prompt = f""" Summarize the text delimited by triple backticks \ into a single sentence. ```{text}``` """ - 策略 2:要求提供結構化的輸出
prompt = f""" Generate a list of three made-up book titles along \ with their authors and genres. Provide them in JSON format with the following keys: book_id, title, author, genre. """ - 策略 3:要求模型檢查條件是否滿足
prompt = f""" You will be provided with text delimited by triple quotes. If it contains a sequence of instructions, \ re-write those instructions in the following format: Step 1 - ... Step 2 - … … Step N - … If the text does not contain a sequence of instructions, \ then simply write \"No steps provided.\" \"\"\"{text_1}\"\"\" """ - 策略 4:Few-shot Prompting「少量範例」提示
prompt = f""" You will be provided with text delimited by triple quotes. If it contains a sequence of instructions, \ re-write those instructions in the following format: Step 1 - ... Step 2 - … … Step N - … If the text does not contain a sequence of instructions, \ then simply write \"No steps provided.\" \"\"\"{text_1}\"\"\" """
- 策略 1:明確指出完成任務所需的步驟
f""" Your task is to perform the following actions: 1 - Summarize the following text delimited by <> with 1 sentence. 2 - Translate the summary into French. 3 - List each name in the French summary. 4 - Output a json object that contains the following keys: french_summary, num_names. Use the following format: Text: <text to summarize> Summary: <summary> Translation: <summary translation> Names: <list of names in summary> Output JSON: <json with summary and num_names> Text: <{text}> """ - 策略 2:指導模型在得出結論之前先自行推導解決方案
prompt = f""" Your task is to determine if the student's solution \ is correct or not. To solve the problem do the following: - First, work out your own solution to the problem including the final total. - Then compare your solution to the student's solution \ and evaluate if the student's solution is correct or not. Don't decide if the student's solution is correct until you have done the problem yourself. Use the following format: Question: ''' question here ''' Student's solution: ''' student's solution here ''' Actual solution: ''' steps to work out the solution and your solution here ''' Is the student's solution the same as actual solution \ just calculated: ''' yes or no ''' Student grade: ''' correct or incorrect ''' Question: ''' I'm building a solar power installation and I need help \ working out the financials. - Land costs $100 / square foot - I can buy solar panels for $250 / square foot - I negotiated a contract for maintenance that will cost \ me a flat $100k per year, and an additional $10 / square \ foot What is the total cost for the first year of operations \ as a function of the number of square feet. ''' Student's solution: ''' Let x be the size of the installation in square feet. Costs: 1. Land cost: 100x 2. Solar panel cost: 250x 3. Maintenance cost: 100,000 + 100x Total cost: 100x + 250x + 100,000 + 100x = 450x + 100,000 ''' Actual solution: """
- Summary
prompt = f""" Your task is to generate a short summary of a product \ review from an ecommerce site. Summarize the review below, delimited by triple \ backticks in at most 20 words. Review: ```{reviews[i]}``` """ - Sentiment (Positive/Negative)
prompt = f""" What is the sentiment of the following product review, which is delimited with triple backticks? Give your answer as a single word, either "positive" \ or "negative". Review text: '''{lamp_review}''' """ - Emotion
prompt = f""" Identify a list of emotions that the writer of the \ following review is expressing. Include no more than \ five items in the list. Format your answer as a list of \ lower-case words separated by commas. Review text: '''{lamp_review}''' """ prompt = f""" Is the writer of the following review expressing anger?\ The review is delimited with triple backticks. \ Give your answer as either yes or no. Review text: '''{lamp_review}''' """ - Extract Entity
prompt = f""" Identify the following items from the review text: - Item purchased by reviewer - Company that made the item The review is delimited with triple backticks. \ Format your response as a JSON object with \ "Item" and "Brand" as the keys. If the information isn't present, use "unknown" \ as the value. Make your response as short as possible. Review text: '''{lamp_review}''' """ - Multiple Task at once
prompt = f""" Identify the following items from the review text: - Sentiment (positive or negative) - Is the reviewer expressing anger? (true or false) - Item purchased by reviewer - Company that made the item The review is delimited with triple backticks. \ Format your response as a JSON object with \ "Sentiment", "Anger", "Item" and "Brand" as the keys. If the information isn't present, use "unknown" \ as the value. Make your response as short as possible. Format the Anger value as a boolean. Review text: '''{lamp_review}''' """ - Translation
prompt = f""" Translate the following English text to Spanish: \ '''Hi, I would like to order a blender''' """ prompt = f""" Tell me which language this is: '''Combien coûte le lampadaire?''' """ prompt = f""" Translate the following text to French and Spanish and English pirate: \ '''I want to order a basketball''' """ prompt = f""" Translate the following text to Spanish in both the \ formal and informal forms: 'Would you like to order a pillow?' """ - Writing Style Transformation
prompt = f""" Translate the following from slang to a business letter: 'Dude, This is Joe, check out this spec on this standing lamp.' """ - Writing Format Conversion
prompt = f""" Translate the following python dictionary from JSON to an HTML \ table with column headers and title: {data_json} """ - Spell/Grammer Check
prompt = f"""Proofread and correct the following text and rewrite the corrected version. If you don't find and errors, just say "No errors found". Don't use any punctuation around the text: '''{t}'''""" - prompt in messages data of api parameters
messages.append( {'role':'system', 'content':'create a json summary of the previous food order. Itemize the price for each item\ The fields should be 1) pizza, include size 2) list of toppings 3) list of drinks, include size 4) list of sides include size 5)total price '}, )
- 混合专家模型 (MoE) 详解
- 增加更多专家可以提升处理样本的效率和加速模型的运算速度,但这些优势随着专家数量的增加而递减 (尤其是当专家数量达到 256 或 512 之后更为明显)。
- 这意味着在推理过程中,需要更多的显存来加载整个模型。
- Switch Transformers 的研究表明,其在大规模模型中的特性在小规模模型下也同样适用,即便是每层仅包含 2、4 或 8 个专家。
- Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity
- Expert with 2, 4, 6, 16, 32, 64, 128, 256個
- GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding
- ST-MOE: DESIGNING STABLE AND TRANSFERABLE SPARSE EXPERT MODELS
- Scalable and Efficient MoE Training for Multitask Multilingual Models
- Mixture-of-Experts with Expert Choice Routing
- MoE模型的前世今生
- GShard进行了大量的实验,训练了包含4/32/256个expert的flat MoE模型和包含256/1024/4096个expert的hierarchical MoE模型。
- Model Card for Switch Transformers C - 2048 experts (1.6T parameters for 3.1 TB)
- 介紹
- 優點
- 参数效率更高:一个任务只需要少量参数,训练更快,占用的内存更少,对数据集较小的任务更难过拟合,也更有利于模型的存储和分发
- 连续学习的遗忘问题:Adapter 冻结了原有模型的参数,保证了原来的知识不被遗忘。
- 多任务学习:使用 adapter 也可以用比较少量的参数学习多个任务
- 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的參數學習,無須另外標註資料
- 没有额外的推理延时
- 减少内存和存储资源消耗
- 低秩分解:從單一大矩陣W(dd) 變成兩個小矩陣U (dr)與V (r*d)的乘積,項低計算複雜度
- 痛點
- 參數空間小:LoRA中参与训练的参数量较少,解空间较小,效果相比全量微调有一定的差距。
- 微调大模型成本高:对于上百亿参数量的模型,LoRA微调的成本还是很高。
- 精度损失:针对第二点,可以采用int8或int4量化,进一步对模型基座的参数进行压缩。但是又会引发精度损失的问题,降低模型性能。
- 與传统的多任务学习相比
- 好处:不同任务之间影响较少
- 坏处:不同任务带来的相互的监督可能会变少
- 详解大模型微调方法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 基础上添加适配器层会引入额外的计算,带来推理延迟问题
- LoRA:
- 開源框架PEFT
- LLM-Adapters: An Adapter Family for Parameter-Efficient Fine-Tuning of Large Language Models
- LLM-Adapter是对 PEFT 库的扩展,是一个简单易用的框架,将各种适配器集成到 LLM 中
- PEFT4種方法
- AdapterH
- AdapterP
- Parallel
- 将适配器模块与每层 Transformer 的多头注意力和前馈层并行计算集成。
- LLM-Adapter是对 PEFT 库的扩展,是一个简单易用的框架,将各种适配器集成到 LLM 中
- 大模型参数高效微调(PEFT)
- 介紹Huggingface - PEFT
- 介紹LLM-Adapters
- Using Large Language Models to Simulate Multiple Humans
and Replicate Human Subject Studies
- 使用GPT-3來模擬人類的反應,通過改變姓名和其他細節,在某些人類實驗(如終極博弈)中進行測試。
- Proxona: Leveraging LLM-Driven Personas to Enhance Creators’ Understanding of Their Audience
- 利用大型語言模型(LLMs)生成基於數據的受眾角色,幫助創作者深入了解其受眾,並支持制定以受眾為中心的內容策略。
- INNOVATIVE THINKING, INFINITE HUMOR: HUMOR RESEARCH OF LARGE LANGUAGE MODELS THROUGH STRUCTURED THOUGHT LEAPS
- 基於創意跳躍思維CLoT提出一個**"創意結構化思維跳躍"(CLoST)框架**
- 首先,需要一個獎勵模型來達成糾錯目的(因為目前沒有幽默的專家模型或可用規則來判定內容是否幽默)
- 通過強化學習,模型學會打磨思維鏈的推理,並改進其使用的策略。
- 模型學會識別並修正錯誤,最終生成最具幽默性和創意的答案。
- Cracking the Code of Juxtaposition: Can AI Models Understand the Humorous Contradictions
- 當幽默涉及許多笑話和幽默線索所依賴的非線性敘事時,LLM在通過並列理解人類幽默的細微之處仍然面臨困難
- 提出了YESBUT基準,包含不同難度的任務,旨在評估AI識別和解釋這些漫畫的能力,任務範圍從字面內容理解到深層敘事推理。
- “As an AI language model, I cannot”: Investigating LLM Denials of User Requests
- 討論有關互動中斷、修復策略的研究,以及中斷性溝通如何影響用戶對智能系統的期望和理解(例如,警告和錯誤信息)。
- 歸納2類拒絕發生原因(將這些錯誤稱為“拒絕”)
- technical技術性原因(即系統無法完成請求)
- 訓練數據的空白、缺乏實時數據訪問、“數據不可用”、“不在訓練數據中”和“僅限文本輸出”(例如,無法訪問或訪問被禁止), 訓練數據無法超過截止日期
- 包含:基準拒絕, 轉移注意力的拒絕, 事實拒絕
- 來自研究 1(技術性拒絕)的結果表明,與基準拒絕相比,參與者發現轉移注意力的拒絕在沮喪程度上較低,更有用、更適當且更相關。
- 事實性拒絕在所有衡量標準上(除了沮喪)都比轉移注意力的拒絕評分低
- 在技術性拒絕的情況下,帶有意見的回應並不合適,因為其根本原因並不需要解釋(例如,對於數據完全無法訪問,無需有關數據的任何見解)。
- social社會性原因(即系統被禁止完成請求)
- 社會性拒絕的原因通常是由於政策,例如不允許 LLM 生成仇恨或色情內容
- 包含:基準拒絕, 轉移注意力的拒絕, 帶有意見的拒絕
- 在研究 2(社會性拒絕)中,我們發現,轉移注意力的拒絕比基準拒絕和帶有意見的拒絕在沮喪程度上較低,並且更有用、更適當和更相關。
- 帶有意見的拒絕在所有衡量標準上比基準拒絕更受參與者的正面評價。
- 將事實性拒絕風格從社會性拒絕中排除,因為這裡的事實總是相同的:政策不允許提供回應。
- technical技術性原因(即系統無法完成請求)
- 4種拒絕風格
- 基準拒絕(baseline denials): 這種拒絕僅簡單地聲明 LLM 無法提供幫助
- 事實拒絕(Factual denials): 該風格提供拒絕並附上拒絕的理由
- 轉移注意力的拒絕(diverting denials): LLM 會引導用戶偏離請求
- 帶有意見的拒絕(opinionated denials): 回應強調請求的不適當性,
- 對於每種拒絕,我們評估了用戶對其的沮喪程度、有用性、適當性和相關性的感知,並收集了用戶的開放式反饋。我們通過不同的系統提示來展現每種拒絕風格,確保 LLM 生成適當的回應
- 用戶對轉移注意力的拒絕給予較高評價,是因為即使原始請求無法滿足,這些拒絕仍能提供有價值的信息。
- 例如通過提供不冒犯的笑話來代替請求中的冒犯性笑話。
- 禮貌的聊天機器人也可能被認為是“過於道歉且帶有居高臨下的語氣”
- 例如,假設一個用戶要求 LLM 提供不當的笑話。與其提供像“請求不允許”這樣簡短且缺乏信息的回應,LLM 應該設計為這樣說:“我們的平台致力於促進積極和包容的體驗,而這個請求違反了我們的準則。這裡有一個你可能會喜歡的替代笑話[......]”
- 用戶可能無法學會如何調整他們的請求以避免未來的中斷。
- 建議 LLM 避免在未給出理由的情況下拒絕用戶請求。相反,它們應該提供有關拒絕原因的額外信息,並可能將拒絕情境化。
- 提供無信息的回應(即我們的基準情境)是最不受喜愛的選項,因為這些拒絕可能未能向用戶解釋拒絕的根本原因。
- 我們建議 LLM 配備糾正性拒絕,指導用戶改善他們的請求或調整行為。參與者對帶有意見的拒絕給予了比基準拒絕更高的評價。如前所述,帶有意見的拒絕作為一種糾正性信息起到了作用。
- 歸納2類拒絕發生原因(將這些錯誤稱為“拒絕”)
- Ambipun: Generating humorous puns with ambiguous context.
- “A good pun is its own reword”: Can Large Language Models Understand Puns?
- LLM其理解雙關語的能力尚未得到系統性研究,這限制了LLMs在創意寫作和幽默創作中的應用
- 大多數LLMs能夠準確識別同形雙關和異形雙關中的雙關詞
- 除GPT-4-Turbo和Claude-3-Opus外,其餘LLMs在識別異形雙關中的替代詞 和替代意義時存在困難。這一挑戰源於在異形雙關中,並未直接出現在文本中,而是依賴於通過上下文和相似性進行的喚起,這是解釋雙關語的基礎
- 異形雙關的識別好(替代詞不影響雙關語的識別,但對正確解釋雙關語至關重要。),但不一定能做出好的解釋
- 儘管我們使用了目前最廣泛使用的雙關語數據集來評估LLMs的雙關語理解能力,但我們的雙關文本全部為英文。LLMs理解雙關語的能力可能因語言而異,非英語語言的雙關語在定義、結構或用途上可能有所不同。這一限制突顯了未來將研究擴展到其他語言雙關語的潛力。
- 揭示了「懶惰的雙關生成」模式,並確定了LLMs在理解雙關語方面的主要挑戰
- DuanzAI: Slang-Enhanced LLM with Prompt for Humor Understanding
- 提出了DuanzAI,一種增強大型語言模型(LLMs)深度理解中文俚語的創新方法。
- 利用三個常見任務,即雙關識別、雙關解釋和雙關生成,系統評估LLMs理解雙關語的能力。
- Crowd Score: A Method for the Evaluation of Jokes using Large Language Model AI Voters as Judges
- 以不同個性風格LLM來評測笑話品質
- 認為個性的設定需要"足以誘導出具備這些特質的個性" (例:「作為一個喜歡$TypeOfHumour幽默的人,將以下[Joke]分類為Funny或$Opposite。」)
- Individual differences in uses of humor and their relation to psychological well-being: Development of the Humor Styles Questionnaire
- 定義笑話分類:親和型、自我提升型、攻擊型和自我貶低型
- 親和型幽默:一種非敵對、包容的幽默,肯定自我與他人
- 自我提升型幽默:旨在讓人對自己感到良好
- 攻擊型幽默:使用諷刺、揶揄、嘲笑、譏諷和貶低他人
- 自我貶低型幽默:是為了讓他人開心而自嘲
- Witscript: A System for Generating Improvised Jokes in a Conversation
- 笑話由人(專業笑話演員)與LLM(GPT-3, Witscript, Witscript2)生成,皆屬於攻擊性/自我貶低型
- 笑話並非僅依賴文字遊戲,基於常識
- 同時包含人類評審幽默評分
- Chumor 1.0: A Truly Funny and Challenging Chinese Humor Understanding Dataset from Ruo Zhi Ba
- Chumor 資料集: 來源於「弱智吧」(RZB),一個類似Reddit的中文平台,專注於分享具有智力挑戰性和文化特性的笑話
- 為每個笑話添加了解釋標註,並通過中文母語者的A/B測試
- 資料集下載:https://github.com/dnaihao/Chumor-dataset
- Is AI fun? HumorDB: a curated dataset and benchmark to investigate graphical humor
- HumorDB 資料集: 新型純圖像數據集,旨在推動視覺幽默理解的進展
- 包含精心挑選的圖像對,具有對比明顯的幽默評分
- 突顯引發幽默的微妙視覺線索,並減少潛在的偏見。該數據集支持二元分類(有趣或無趣)、範圍回歸(幽默程度從1到10)和成對比較任務(哪個圖像更有趣)
- Are U a Joke Master? Pun Generation via Multi-Stage Curriculum Learning towards a Humor LLM
- 專注於賦予LLMs生成雙關語的能力,這是一種通過偏好學習方法實現的特定幽默類型。
- 提出了一種多階段課程偏好學習框架,以優化雙關語結構偏好和幽默偏好,改進了直接偏好優化(DPO)算法,以解決多目標對齊問題。
- 突顯引發幽默的微妙視覺線索,並減少潛在的偏見。該數據集支持二元分類(有趣或無趣)、範圍回歸(幽默程度從1到10)和成對比較任務(哪個圖像更有趣
- 中文雙關語(ChinesePun)數據集,包含2.1k雙關語及其對應標註。
- Getting Serious about Humor: Crafting Humor Datasets with Unfunny Large Language Models
- 探討大型語言模型(LLMs)是否能夠通過編輯文本生成幽默檢測的合成數據
- 顯示當前的LLM在「去幽默化」笑話方面表現出令人印象深刻的能力
- GPT-4生成的合成數據得到了雙語標註者的高度評價,並為幽默分類器提供了具挑戰性的對抗示例。
- Exploring Chinese Humor Generation: A Study on Two-part Allegorical Sayings
- 本文研究了最先進的語言模型在理解和生成中文幽默方面的能力,特別聚焦於訓練它們創作諷喻語句
- 用了兩種主要的訓練方法:對中型語言模型進行微調和對大型模型進行提示
- 創新微調方法結合了融合拼音嵌入以考慮同音詞,並使用對比學習與合成的困難負例來區分幽默元素
- 抽取複雜模型訓練出的精華為另一個簡單模型所用,讓這個小的簡單模型也能達到跟複雜模型一樣的效果
- 採用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
- 總共有467億個參數
- 稀疏混和專家(SMoE)模型架構
- 能處理32k Token上下文
- 缺點:
- Expert負載均衡機制未做好
- 若刪除Expert3, 模型會Fail
- 刪除其他Expert,模型表現都差不多
- Expert負載均衡機制未做好
- 與GShard比較
- Mixtral將所有FFN都替換成MoE Layer
- GShard每隔一個FFN才替換一次
- 與LLaMA比較
- 將MLP layer复制成了8个expert layers并在一起
- 通过一个gate layer,对每个token选择top-2的专家模型进行计算
- Mixtral of Experts
- Mixtral-8x7B 模型挖坑
- Mixtral-8x7B利用Mistral-7B訓練過程中early-stage的checkpoint訓練
- Attention layer是直接繼承checkpoint
- FFN複製8份
- 再加上gate layer完成後續預訓練
- Pure RL Process: 發現不使用SFT做冷啟動,以RL做冷啟動的效果也能很好
- 群體相對策略優化(Group Relative Policy Optimization, GRPO)
- 放棄了傳統 RL 中與策略模型(Policy Model)等尺寸的評論模型(Critic Model)
- 改採基於群體得分(Group Scores)來估計基線值,從而大幅減少計算資源需求。
- 透過KL 散度懲罰(KL Divergence Penalty)來調控新策略與參考策略之間的差異,使學習過程更加穩定
- 使 RL 訓練能夠在無需評論模型的情況下,透過群體樣本的統計特性來實現高效的策略優化,提高推理能力的學習效率
- 用了基於規則的獎勵系統(Rule-Based Reward System)
- 準確性獎勵(E.G.數學有固定/明確答案)
- 格式獎勵
- RL with Cold-Start
- 少量高品質的長思維鏈(Long Chain-of-Thought, CoT)數據進行冷啟動
- 數千條
- 4階段
- 冷啟動階段(Cold Start Phase):引入少量高品質數據以提供初始指導。
- 第一階段增強學習(First RL Stage):探索更優化的推理模式,提升初步推理能力。
- 監督微調階段(Supervised Fine-Tuning, SFT):利用經過篩選的數據進一步對齊人類偏好,增強可讀性與通用性。
- 第二階段增強學習(Second RL Stage):在更強大的基礎上進一步優化推理性能,使模型具備更高級的推理能力與適應性。
- 少量高品質的長思維鏈(Long Chain-of-Thought, CoT)數據進行冷啟動
- DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
- DeepSeek-V3 Technical Report
- 【LLM 專欄】Deepseek v3 的訓練時間到底合不合理?淺談 LLM Training efficiency
- 不,你無法用 600 萬美元複製一個 DeepSeek R1
- DeepSeek R1
- R1 模型的訓練費用其實和去年底發佈的 V3 模型相同
- DeepSeek V3
- V3 模型中的多數功能又和 2024 年初發佈的 V2 模型共用
- 負載平衡
- 多重 token 預測機制
- DeepSeek V2
- DeepSeekMoE: 多重專家混合(Mixture of Experts)
- DeepSeekMLA: 多頭潛在注意力機制(Multi-Head Latent Attention)
- DeepSeek R1
- Timeline of DeepSeek Papers on arXiv
- 目標:實現更高效的專家特化,提高 MoE 模型的知識利用效率,並減少冗餘計算成本。
- 傳統MoE
- 傳統 MoE 架構中,Transformer 的前饋神經網路(Feed-Forward Networks, FFNs)通常被 MoE 層(MoE Layers) 取代。
- 每個 MoE 層 由多個專家組成,每個專家的結構與標準 FFN 相同
- 而每個 token 會被分配給一個(Fedus et al., 2021)或兩個(Lepikhin et al., 2021)專家。
- 有兩大缺陷阻礙了 專家特化(Expert Specialization):讓每個專家學習非重疊且高度聚焦的知識。
- 傳統MoE的缺陷:
- 知識混雜(Knowledge Hybridity)
- 現有 MoE 方法通常使用有限數量的專家(例如 8 或 16 個),因此被分配到某個專家的 token 可能涉及多種不同的知識領域。
- 單個專家需要存儲大量不同類型的知識,這些知識可能無法在推理時同時高效利用,從而影響模型的性能。
- 知識冗餘(Knowledge Redundancy
- 被分配到不同專家的 token 可能仍然需要共享某些常見知識(Common Knowledge)
- 多個專家可能會在各自的參數中學習重複的知識,導致專家層的參數冗餘(Parameter Redundancy),進一步影響模型的效率與推理能力。
- 知識混雜(Knowledge Hybridity)
- 3個關鍵架構
- 精細劃分專家(Fine Segmentation of Experts) : 將專家從 N 細分為 𝑚𝑁 個,並從中激活 𝑚𝐾 個
- 保持總參數數量不變的前提下,我們透過劃分 FFN(前饋神經網路)的中間隱藏維度,將專家進行更細粒度的劃分
- 保持總計算成本不變的條件下,我們激活更多的細粒度專家,從而形成更靈活且適應性更強的專家組合。
- 當N=16,若路由策略一次選TOP-2 => C16取2 > 120種組合
- 當N=64,路由策略調整為一次選TOP-8 => C64取8 > 4,426,165,368種
- 共享專家隔離(Isolation of Shared Experts):將𝐾𝑠個專家作為共享專家(Shared Experts)用於學習通用知識,以減少路由專家(Routed Experts)之間的冗餘
- 將部分專家隔離為「共享專家(Shared Experts)」
- Shared Experts始終被激活
- 用於捕捉和整合通用知識(Common Knowledge)
- 所有 token 都會被確定性地分配到這些專家。
- 確保路由專家(Routed Experts)能夠專注於學習獨特且專精的知識
- 負載均衡考量 (Load Balance Consideration): 為了避免以下2缺陷
- 路由崩潰(Routing Collapse):模型可能總是選擇少數幾個專家,導致其他專家無法獲得足夠的訓練機會,從而影響整體的專家多樣性與泛化能力。
- 計算瓶頸(Computation Bottlenecks):如果專家分佈在多個設備上,負載不均衡可能導致某些設備的計算資源過載
- 精細劃分專家(Fine Segmentation of Experts) : 將專家從 N 細分為 𝑚𝑁 個,並從中激活 𝑚𝐾 個
- LongLLaMA
- 将上下文长度扩展到 256k,无限上下文版本的OpenLLaMA来了?
- 基於OpenLLaMA實作
- 可商用
- 採用FOT ( Focused Transformer )微調
- 預訓練
- 訓練資料
- Llama 4 的預訓練覆蓋多達 200 種語言
- 超過 100 種語言的 token 數量各自超過 10 億
- 整體多語言 token 數量是 Llama 3 的 10 倍
- 整體訓練資料集超過 30 兆 tokens
- 是 Llama 3 預訓練資料集的兩倍以上
- 涵蓋多樣的文字、圖像與影片數據。
- Llama 4 的預訓練覆蓋多達 200 種語言
- 訓練精度
- 採FP8
- 使用 FP8 精度並部署 32,000 張 GPU 預訓練 Llama 4 Behemoth 時,我們實現了每張 GPU 達到 390 TFLOPs 的運算效能
- 新訓練技術 MetaP
- 能穩定地設置模型關鍵超參數(e.g. 每層學習率、初始化比例
- 這些超參數選擇在不同的 batch size、模型寬度、深度以及訓練 token 數量之間具有良好的遷移性
- 訓練策略:「中期訓練」(mid-training)
- 透過專門的資料集延伸長上下文能力並改進核心模型能力
- 支援1000 萬字輸入上下文長度
- 後訓練階段
- 最大挑戰:如何平衡多模態輸入、推理能力與對話能力
- 設計了一套精心策劃的課程策略,在不犧牲單一模態專家模型性能的前提下,實現了優秀的表現
- 輕量級監督微調(SFT)> 線上強化學習(RL)> 輕量級直接偏好優化(DPO)。
- SFT 和 DPO 過度約束模型,會限制模型在線上 RL 階段的探索能力,導致在推理、程式編碼和數學領域中的表現不佳
- 使用"自適應數據篩選",在SFT, RL階段,過濾掉標記簡單的資料/提示
- SFT
- 使用 Llama 模型作為判斷者,篩除掉超過 50% 的「容易」標記數據,僅對剩下的高難度數據進行輕量級 SFT
- RL
- 多模態線上 RL 階段,精選更具挑戰性的提示(prompts)
- 採用"持續性線上強化學習策略",在訓練模型的過程中不斷交替進行訓練與數據過濾,只保留中等至高難度的提示
- DPO
- 專門處理模型回應品質中的邊緣案例
- 輕量級監督微調(SFT)> 線上強化學習(RL)> 輕量級直接偏好優化(DPO)。
- 訓練資料
- 多Expert 機制
- Llama 4 Scout 擁有 170 億個有效參數、配備 16 個專家的模型
- 總計 1090 億參數
- 來自 Llama 4 Behemoth 的知識蒸餾
- Int4 量化後可部署在單顆 H100 GPU 上
- 支援1000萬Token
- Llama 4 Maverick 擁有 170 億個有效參數,但配備多達 128 個專家
- 總參數量則高達 4000 億
- 設計上交替使用密集層與混合專家(MoE)層,以提升推理效率
- 來自 Llama 4 Behemoth 的知識蒸餾
- 可部署在單一 H100 主機上
- Llama 4 Behemoth 擁有 2880 億個有效參數、配備 16 個專家
- Llama 4 Behemoth 目前仍在訓練中
- 徹底重新設計和優化整個訓練流程
- 對比於小型模型只刪減 50% 的 SFT(監督微調)數據,在 Behemoth 模型中刪除了多達 95% 的 SFT 數據,以確保訓練數據的質量與效率
- RL 訓練策略
- 聚焦於使用 policy 模型執行 pass@k 分析,挑選困難的提示(prompts),並設計一套逐步增加提示難度的訓練課程。
- 在訓練過程中動態篩選出「無優勢」的提示,並將多種不同能力的提示混合進批次訓練中
- 從多種系統指令(system instructions)中進行採樣,也對模型保持良好的指令理解能力
- 全異步線上強化學習框架
- Llama 4 Scout 擁有 170 億個有效參數、配備 16 個專家的模型
- 交錯式注意力層(interleaved attention layers)
- 取代傳統的位置嵌入(positional embeddings)
- MoE Layer
- Early Fusion(早期融合)
- 將文字與視覺 token 無縫整合至統一的模型架構中
- 使用大量未標註的文字、圖像和影片資料進行聯合預訓練
- 優化Llama 4 的視覺編碼器,該編碼器以 MetaCLIP 為基礎,並與一個凍結的 Llama 模型一同獨立訓練
- iRoPE 架構
- 「i」代表 interleaved attention layers(交錯式注意力層)
- 「RoPE」則是指大多數層中所使用的 旋轉位置編碼(rotary position embeddings)。
- 在推理階段對注意力機制進行了溫度調整,進一步增強了模型的長文本泛化能力
- 待閱讀
- (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是有益的,但回報最終會趨近於零。
- 在受限的數據情境下,將新的計算資源分配給更多的參數和時期是必要的,並且時期應該稍微加快
- (2021)Deduplicating training data makes language models better
- 66個學科領域
- TMMLU+ Dataset: 大規模繁體中文海量多任務語言理解
- TMMLU+: An Improved Traditional Chinese Evaluation Suite for Foundation Models
- (2022)Lifelong Pretraining: Continually Adapting Language Models to Emerging Corpora
- 2種不同類型的知識轉移
- 領域轉移
- 時間遞進
- 2種不同類型的知識轉移
- (2023)CONTINUAL PRE-TRAINING OF LANGUAGE MODELs
- (2020)LAMOL: LANGUAGE MODELING FOR LIFELONG LANGUAGE LEARNING
- Memory Replay手法
- gpt-2為基底
- 【2023Q2】LLM炼丹trick拾遗:LLM的MoE架构与Lifelong learning
- Mixure of Expert, MoE

