<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      大模型微調—海南小百科(一)

            語言大模型是通過大規模數據集訓練而來可以幫我們進行文本生成、內容總結,但對于一些小眾知識、內部數據模型不一定知道怎么回答,這時候可能會胡言亂語。目前要想在特定領域小眾知識或私密數據時模型能夠表現出比較好的水平目前主要有兩種方式可以實現:模型微調、外掛知識庫也就是RAG模式,RAG模式之前我們有介紹過,本篇文章主要是介紹模型微調。
            模型微調訓練是將知識庫(私有知識)的內容整理成訓練數據集,將這些整理好的數據集來訓練大語言模型,最終讓模型“學會”該知識庫的內容,至于效果如何很大程度取決于該數據集的質量和訓練的調參以及基礎模型的質量,這種方式流程較復雜、算力要求高相對比外掛知識庫RAG方式門檻更高;
            目前大模型是通過參數規模、訓練數據規模、算力規模堆積起來的語言大模型小的有幾億參數量大的達到幾千億參數量乃至萬億參數量,一般公司也只能運行推理百億規模模型,從0訓練一個大模型無論是算力或是數據都不具備這樣的能力,模型微調所需要的技術、算力資源就要少得多。下圖為LLaMA-Factory官方估計的大模型微調所需要顯存資源情況。

      微調概念

            大模型訓練完成之后超參數已經固定下來了,大模型在特定領域知識上可能表現不佳這時候想要大模型在該領域知識范圍達到比較好的水平,可以通過在預訓練大模型的基礎上使用該特定領域知識再次訓練模型已達到調整超參數使得大模型讀懂該領域知識的目的。
            微調目的: 調整超參數使大模型在特定領域知識內達到比較好的水平;
            微調類型: 全量微調(Full Fine-tuning)、參數高效微調(Parameter-Efficient Fine-Tuning, PEFT)
            全量微調: 通過預訓練模型的所有參數進行訓練調整適配特定領域知識,但需要有足夠規模的計算資源。
            參數高效微調(PEFT): 最小化微調參數數量,只需要微調更新模型的部分參數調整所依賴的計算資源比全量微調小得多。PEFT主要算法包括Prefix Tuning、Prompt TuningAdapter TuningIA3 (Intrinsic Adapter 3)LORA (Low-Rank Adaptation)Q-LoRA(Quantized Low-Rank Adapter)DoRA(Weight-Decomposed Low-Rank AdaptationGaLore(Gradient Low-Rank Projection)BAdam 等方式。
            Adapter Tuning: 這是一種通過在模型的層之間插入小型的神經網絡模塊(稱為adapters)來實現微調的技術。這些adapters包含可訓練的權重,而模型的原始參數保持不變。Adapter Tuning通過學習降維后的特征,有效地減少了參數數量,同時使用skip-connection技術,即使在最差情況下,Adapter層也可以退化為identity,從而保持模型的穩定性。
            Prompt Tuning: 這是一種通過在輸入序列前添加額外的Token來適配下游任務的方法。這些額外的Token是可訓練的,而預訓練語言模型的參數保持不變。Prompt Tuning通過構建或選擇適當的提示(Prompt),引導模型生成符合期望的輸出。
            IA3 (Intrinsic Adapter 3): IA3是一種新的高效微調方法,它在凍結大模型參數的情況下,通過在輸入時給定一些樣本包含數據和標簽,同時給一個待預測數據,由模型輸出這條數據的預測值。這個過程中模型的參數不發生變化。IA3提出了一個新的高效微調方法,基于T0模型提出了T-Few,在下游任務中不需要對任務進行額外模型調整,即可進行少樣本學習。IA3 將模型的激活(自我注意和編碼器-解碼器注意力塊中的鍵和值,以及位置前饋網絡的中間激活)乘以三個學習向量,可訓練參數數量比 LoRA 還要少。
            LORA (Low-Rank Adaptation): LORA通過對基座模型參數中的每個矩陣W增加兩個低秩矩陣A和B,其中A是 n * r 的,B是 r * n 的。新模型的參數為W_new = W + A * B,凍結固定W,只調整A和B。LORA通常只調整Attention中的矩陣,不調整FFN。預訓練模型的原始權重矩陣被凍結,在訓練期間只有較小的矩陣會更新減少訓練參數量,同時保持模型性能。

      微調工具

            比較常見的微調框架工具有LLaMA-Factory、PEFT等,LLaMA-Factory提供了全流程微調的解決方案包括全量微調、高效微調等還提供了基礎數據集的支持,微調腳本與Web界面。而PEFT只是一個高效微調框架可以很方便與Transformers等集成使用。

      PEFT微調

            這里使用PEFT框架對Qwen2.5-0.5B模型進行LORA微調,看其在特定領域知識內是否會有明顯改善。LoRA(Low-Rank Adaptation)的核心思想是通過在模型的特定層或模塊中插入低秩矩陣來近似全參數微調的效果。
            對參數矩陣W增加兩個低秩矩陣A和B,其中A是 n * r 的,B是 r * n 的,這里已Qweb2.5-0.5B為例介紹LoRA微調的總體實現,原模型結構如下:

       Qwen2ForCausalLM(
       (model): Qwen2Model(
       (embed_tokens): Embedding(151936, 896)
       (layers): ModuleList(
       (0-23): 24 x Qwen2DecoderLayer(
               (self_attn): Qwen2SdpaAttention(
                 (q_proj): Linear(in_features=896, out_features=896, bias=True)
                 (k_proj): Linear(in_features=896, out_features=128, bias=True)
                 (v_proj): Linear(in_features=896, out_features=128, bias=True)
                 (o_proj): Linear(in_features=896, out_features=896, bias=False)
                 (rotary_emb): Qwen2RotaryEmbedding()
               )
               (mlp): Qwen2MLP(
                 (gate_proj): Linear(in_features=896, out_features=4864, bias=False)
                 (up_proj): Linear(in_features=896, out_features=4864, bias=False)
                 (down_proj): Linear(in_features=4864, out_features=896, bias=False)
                 (act_fn): SiLU()
               )
               (input_layernorm): Qwen2RMSNorm((896,), eps=1e-06)
               (post_attention_layernorm): Qwen2RMSNorm((896,), eps=1e-06)
             )
           )
           (norm): Qwen2RMSNorm((896,), eps=1e-06)
           (rotary_emb): Qwen2RotaryEmbedding()
         )
         (lm_head): Linear(in_features=896, out_features=151936, bias=False)
       )
      

            在加載基座模型后可使用LoraConfig配置具體需要進行LoRA微調的參數如:target_modules、秩、alpha、dropout等值。
            target_modules: 需要進行微調的模塊,可選值有q_proj、k_proj、v_proj、o_proj、gate_proj等。
            r: 秩,直接影響了低秩矩陣的大小,決定了微調的參數量
            alpha: 縮放因子,用于調節低秩矩陣對模型權重的貢獻程度,多大可能會過擬合。
            dropout: 值在0和1之間,隨機丟棄某些權重的概率。

       model = AutoModelForCausalLM.from_pretrained(
       model_name,
       low_cpu_mem_usage=True
       )
       config = LoraConfig(
       r=8, lora_alpha=128, lora_dropout=0.0,
       target_modules=["q_proj", "k_proj", "v_proj"]   #, "o_proj", "gate_proj", "up_proj", "down_proj"]
       )
       model = get_peft_model(model, config)
      

            知道了秩r的值、需要微調的模塊以及該模塊的輸入輸出,即可計算出微調的過程中訓練的參數量是多少,LoRA核心思想是通過在模型的特定層或模塊中插入低秩矩陣來近似全參數微調的效果。對于每個目標模塊,LoRA增加的參數量計算公式為:
            參數量 =輸入維度 * r + r * 輸出維度= r × ( 輸入維度 + 輸出維度 ) 。
            以上微調LoraConfig配置為例,通過該配置微調Qwen2.5-0.5B所增加的參數量計算結果如下:

       r = 8  q = 896 * 896  k = 896 * 128   v = 896 * 128  有24個解碼層
       q  =24*(896*8+8*896) 
       k  =24*(896*8+8*128)
       v  =24*(896*8+8*128)
      

            帶入上面公式可得到q、k、v每個模塊的參數量,q+k+v所得的就是當前模型微調的總參數量也是可訓練的總參數量:737280;

            通過AutoModelForCausalLM模型print_trainable_parameters方法輸出可知Qwen2.5-0.5B總參數量為:4億9千萬,通過LORA微調實際可微調的參數為439萬占比為0.88%,凍結了99%的參數,可通過下面方法驗證計算結果是否正確;

       #打印模型可訓練參數信息
       model.print_trainable_parameters()
       trainable params: 737,280 || all params: 494,770,048 || trainable%: 0.1490
      

            all params 為模型總參數量,trainable params為可訓練參數量,trainable可訓練參數比為0.1490%,all params為原來模型參數量+本次微調新增參數量。
            本篇文章只介紹了微調的基本概念,后續將介紹微調的具體流程與代碼實現。

      參考資料:
      peft

      posted @ 2024-11-26 08:42  AiFly  閱讀(205)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲av色在线播放一区| av天堂午夜精品一区| 无码国产精品一区二区免费3p| 亚洲av激情五月性综合| 亚洲男女内射在线播放| 久久精品无码免费不卡| 日日碰狠狠添天天爽五月婷| 人妻在线中文字幕| 国产不卡一区二区三区视频| 国产aⅴ夜夜欢一区二区三区| 麻豆a级片| 一区二区三区四区激情视频| 国产精品妇女一区二区三区| 又大又紧又粉嫩18p少妇| 国内揄拍国内精品少妇国语| 国产资源精品中文字幕| 国产精品美女乱子伦高| 亚洲成av人片天堂网| 人妻系列无码专区免费| 天堂V亚洲国产V第一次| 久久99精品久久久久久| 国产毛片三区二区一区| 中文字幕一区有码视三区| 亚洲成a人在线播放www| 国产成人高清精品免费软件| 国产情侣草莓视频在线| 亚洲精品中文字幕一区二| 亚洲国产欧美一区二区好看电影| 国产精品爆乳在线播放第一人称| 九九热精品在线视频观看| 少妇爽到呻吟的视频| 国产91麻豆视频免费看| 精品无码成人片一区二区| 中文字幕av无码不卡| 欧洲中文字幕国产精品| 亚洲精品二区在线播放| 一区二区三区午夜福利院| 久久婷婷大香萑太香蕉av人| 人妻精品动漫h无码| 婷婷国产成人精品视频| 久青草视频在线视频在线|