0x00 Background
為什么研究這個?
ChatGPT在國內外都受到了廣泛關注,很多高校、研究機構和企業都計劃推出類似的模型。然而,ChatGPT并沒有開源,且復現難度非常大,即使到現在,沒有任何單位或企業能夠完全復現GPT3的能力。最近,OpenAI發布了GPT4模型,它支持圖文多模態,相較于ChatGPT,其能力大幅提升,似乎預示著第四次工業革命以通用人工智能為主導的到來。
無論是國內還是國外,與OpenAI的差距越來越大。大家都在竭力追趕,在這場技術革新中競爭激烈,目前許多大型企業都采取了閉源的研發策略。ChatGPT和GPT4的細節非常少,也不像之前發布論文時那么詳細。OpenAI的商業化時代已經到來。當然,也有一些組織或個人在開源平臺上進行了探索。本文將對這些探索進行總結,并將持續跟蹤和更新開源平臺的情況。
0x01
一種平價的chatgpt實現方案
下面推薦一下我最近看的幾個比較火的大模型
ChatGLM
https://github.com/THUDM/ChatGLM-6B
ChatGLM是一個對話模型,由清華技術成果轉化的公司智譜AI開源的GLM系列推出。該模型支持中英兩個語種,并開源了其62億參數量的模型。它不僅繼承了之前GLM模型的優勢,還在模型架構上進行了優化,從而使得它的部署和應用門檻更低,可以在消費級顯卡上實現大模型的推理應用。具體的技術細節可以參考其Github頁面。
從技術路線上看,ChatGLM實現了ChatGPT的強化學習人類對齊策略,使得生成效果更加貼近人類的價值。目前它的能力包括自我認知、提綱寫作、文案寫作、郵件寫作助手、信息抽取、角色扮演、評論比較、旅游建議等。此外,該模型還開發了一個正在內測的1300億的超大模型,是目前開源平臺中參數規模最大的對話大模型之一。
LLAMA
LLaMA模型是一種基于自然語言處理技術的大型語言模型。該模型的名稱是“Language Model for the Martian”(火星人的語言模型)的縮寫。該模型由Meta(Facebook旗下的人工智能研究機構)發布,是一個由超過700億個參數組成的預訓練模型。
https://github.com/facebookresearch/llama
LLaMA模型在自然語言生成、對話生成、文本摘要、數學定理證明和蛋白質結構預測等任務上表現出色。與其他類似的語言模型相比,LLaMA模型具有更好的通用性和適用性,支持超過20種語言,包括英語、西班牙語、阿拉伯語、俄語和德語等多種語言。此外,LLaMA模型還支持使用不同的字母和符號系統,如拉丁字母、希臘字母、西里爾字母等。
在自然語言生成方面,LLaMA模型可以自動生成包括段落、故事、詩歌和對話等不同類型的文本。在文本摘要方面,LLaMA模型可以根據給定的文章自動生成簡短的摘要。在數學定理證明方面,LLaMA模型可以生成相應的證明步驟和解釋。在蛋白質結構預測方面,LLaMA模型可以根據蛋白質序列信息預測其三維結構。
LLaMA模型的發布對人工智能領域產生了重大影響,為自然語言處理技術的發展提供了有力支持。此外,LLaMA模型也為其他類似的大型語言模型的開發和應用提供了重要參考。
值得一提的是,LLaMA模型曾在2021年發生泄露事件,導致模型的數據被公開。該事件對人工智能領域產生了巨大的影響,推動了類ChatGPT的開源發展。
Alpaca
由于目前LLama的授權比較有限,只能用作科研,不允許做商用。
Alpaca(全稱:Stanford Alpaca)是斯坦福大學發布的一種自然語言處理模型。該模型是基于LLaMA模型微調得出的一種模型。Alpaca的基本思想是讓OpenAI的text-davinci-003模型以self-instruct方式生成大量指令樣本,然后使用這些樣本對LLaMA模型進行微調。
只用了52K的數據集,就訓練出來了非常好的效果 https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json
Alpaca的訓練過程十分有趣。在訓練過程中,研究人員將text-davinci-003模型暴力訓練,讓它根據自己的判斷和指令生成一系列的指令樣本,包括對話、文字、代碼等。這些指令樣本隨后被用于微調LLaMA模型,從而提高其在特定任務上的性能。這種自我訓練的方式使得Alpaca的微調過程不需要人工干預,大大降低了訓練成本和時間。
Alpaca的模型文件目前還未被開源,但其訓練數據、生成訓練數據的代碼和超參數已經在GitHub上公開。由于成本低廉、數據易得等特點,Alpaca的項目在自然語言處理領域受到了廣泛的關注和贊譽。
stanford-alpaca
https://github.com/tatsu-lab/stanford_alpaca
alpaca-lora
斯坦福大學發布了另一個重要項目:alpaca-lora。
該項目使用 LoRA 技術重新實現了 Alpaca 的結果,并采用更低成本的方法,僅使用一塊 RTX 4090 顯卡進行 5 小時的訓練,就得到了一個與 Alpaca 相當的模型。而且,該模型可以在樹莓派上運行。該項目使用 Hugging Face 的 PEFT 實現了廉價高效的微調。PEFT 是一個支持 LoRA 技術的庫,可以使用各種基于 Transformer 的語言模型并使用 LoRA 進行微調,從而在一般的硬件上實現廉價而有效的模型微調。該項目的 GitHub 地址是:https://github.com/tloen/alpaca-lora。
雖然 Alpaca 和 alpaca-lora 取得了較大的提升,但它們都是以英語作為種子任務,缺乏對中文的支持。為了解決這個問題,三位個人開發者從華中師范大學等機構開源了中文語言模型駱駝 (Luotuo)。該模型基于前人的工作,如 alpaca-lora,并可在單個顯卡上進行訓練和部署。該項目已經發布了兩個模型:luotuo-lora-7b-0.1 和 luotuo-lora-7b-0.3,另一個模型也在計劃中。該項目的 GitHub 地址是:https://github.com/LC1332/Chinese-alpaca-lora。
Vicuna和Chinese-Vicuna
斯坦福學者與CMU、UC伯克利等合作推出了一個全新模型,即130億參數的Vicuna(俗稱小羊駝、駱馬)。這個模型可以通過在ShareGPT收集的用戶共享對話上對LLaMA進行微調訓練來得到。在測試過程中,使用GPT-4作為評判標準,結果顯示Vicuna-13B在超過90%的情況下實現了與ChatGPT和Bard相匹敵的能力,而且僅需300美元就能實現ChatGPT 90%的性能。最近,UC伯克利LMSys org還發布了一個70億參數的Vicuna,它不僅體積小、效率高、能力強,而且只需兩行命令就能在M1/M2芯片的Mac上運行,還能開啟GPU加速。這個項目的github開源地址為:https://github.com/lm-sys/FastChat/
另外,還有一個中文版的Vicuna被命名為Chinese-Vicuna,它也已經開源了,github地址為:https://github.com/Facico/Chinese-Vicuna
微調方案
模型微調的問題
這有幾個微調的方案的結果對比:
也是
Abstract
Prompt turning通過在frozen language model上僅僅tuning 連續的 prompts可以減少前緒任務的
存儲和訓練中內存的消耗。然而,之前的工作揭示prompt tuning在正常大小的預訓練模型的NLU
任務表現的并不好。本文也發現現有的prompt方法不能處理hard的序列標注問題,顯示缺少通用
性。適當的優化prompt tuning可以有效的應用?在不同的模型scale和NLU任務上。文章提出的P-
Tuning V2不是一個新的方法是,是一個優化和改良的Pretix-tuning1版本。
Introduction
Finetune
在Fine-tuning中,我們會將預訓練模型中的一部分或全部權重復制到新的任務中,然后使用新任務的數據對這些權重進行微調,使其適應新任務。微調通常需要在新任務上訓練一些額外的層,這些層是預訓練模型之外的新層,它們的主要作用是對預訓練模型的輸出進行適當的調整,使其適用于新任務。
現有的fineturjng模式可以獲得不錯的結果,但是同時也有很大的問題
尤其是在一個大數據的情況下,我們微調其實需要大量的數據才有一個好的效果
需要各種各樣的數據,才能調整各種
lora
簡單的說就是:
在模型外面在潛入一個層
用小模型去影響大模型
LORA(Layer-wise Relevance Analysis)是一種模型解釋方法,用于解釋深度神經網絡的預測結果。它的基本思想是在模型的每一層之間插入一個解釋層,通過計算每個輸入特征對每個解釋層的重要性來解釋模型的預測過程。
具體而言,在LORA中,首先將一個小型的解釋模型嵌入到原始模型的每個層之間。這個解釋模型通常是一個簡化的線性模型或者是一個淺層神經網絡。然后,通過計算每個輸入特征在解釋模型中的權重,來評估該特征對模型預測結果的重要性。這樣,就可以通過分析每個解釋層的輸出來解釋原始模型的預測過程。
通過LORA方法,我們可以獲得每個特征對模型預測的貢獻程度,從而更好地理解模型的決策過程。這對于模型的可解釋性和可信度評估非常有幫助。此外,LORA還可以用于模型的調試和改進,通過分析每個解釋層的輸出,我們可以發現模型中可能存在的問題,并采取相應的措施進行改進。
模型微調的問題
尤其是在一個大數據的情況下,我們微調其實需要大量的數據才有一個好的效果
在模型微調中,一個主要的問題是需要大量的數據才能獲得良好的效果。特別是在面對大規模數據時,微調模型需要各種類型的數據來適應不同的任務。這使得微調變得困難和耗時。
另一個問題是微調過程中的過擬合。當微調模型時,可能會出現過擬合的情況,即模型在訓練數據上表現良好,但在測試數據上表現較差。這可能是由于微調數據的數量有限,導致模型過度適應微調數據而無法泛化到新的數據。
此外,微調過程中的權衡也是一個挑戰。在微調中,需要在保留預訓練模型的知識的同時,對新任務進行適當的調整。這需要在保持模型的泛化能力和適應性之間找到平衡點。
綜上所述,模型微調面臨著數據需求大、過擬合和權衡的問題。解決這些問題需要采用合適的數據增強技術、正則化方法和模型架構設計,以及仔細調整微調過程中的超參數。