成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機器學習 | 從0開始大模型之模型LoRA訓練

人工智能 機器學習
LoRA 的背后的主要思想是模型微調期間權重的變化也具有較低的內在維度,具體來說,如果W??代表單層的權重,ΔW??代表模型自適應過程中權重的變化,作者提出ΔW??是一個低秩矩陣,即:rank(ΔW??) << min(n,k) 。

1、LoRA是如何實現的?

在深入了解 LoRA 之前,我們先回顧一下一些基本的線性代數概念。

1.1、秩

給定矩陣中線性獨立的列(或行)的數量,稱為矩陣的秩,記為 rank(A) 。

  • 矩陣的秩小于或等于列(或行)的數量,rank(A) ≤ min{m, n}
  • 滿秩矩陣是所有的行或者列都獨立,rank(A) = min{m, n}
  • 不滿秩矩陣是滿秩矩陣的反面是不滿秩,即 rank(A) < min(m, n),矩陣的列(或行)不是彼此線性獨立的

舉個兩個秩的例子:

不滿秩不滿秩

滿秩滿秩

1.2、秩相關屬性

從上面的秩的介紹中可以看出,矩陣的秩可以被理解為它所表示的特征空間的維度,在這種情況下,特定大小的低秩矩陣比相同維度的滿秩矩陣封裝更少的特征(或更低維的特征空間)。與之相關的屬性如下:

  • 矩陣的秩受其行數和列數中最小值的約束,rank(A) ≤ min{m, n};
  • 兩個矩陣的乘積的秩受其各自秩的最小值的約束,給定矩陣 A 和 B,其中 rank(A) = m 且 rank(A) = n,則 rank(AB) ≤ min{m, n};

1.3、LoRA

LoRA(Low rand adaption) 是微軟研究人員提出的一種高效的微調技術,用于使大型模型適應特定任務和數據集。LoRA 的背后的主要思想是模型微調期間權重的變化也具有較低的內在維度,具體來說,如果W??代表單層的權重,ΔW??代表模型自適應過程中權重的變化,作者提出ΔW??是一個低秩矩陣,即:rank(ΔW??) << min(n,k) 。

為什么?模型有了基座以后,如果強調學習少量的特征,那么就可以大大減少參數的更新量,而ΔW??就可以實現,這樣就可以認為ΔW??是一個低秩矩陣。

實現原理ΔW??是一個更新矩陣,然后ΔW??根據秩的屬性,又可以拆分兩個低秩矩陣的乘積,即:B?? 和 A?? ,其中 r << min{n,k} 。這意味著網絡中權重 Wx = Wx + ΔWx = Wx + B??A??x,由于 r 很小,所以 B??A?? 的參數數量非常少,所以只需要更新很少的參數。

LoRALoRA

2、peft庫

LoRA 訓練非常方便,只需要借助 https://huggingface.co/blog/zh/peft 庫,這是 huggingface 提供的,使用方法如下:

# 引入庫
from peft import get_peft_model, LoraConfig, TaskType

# 創建對應的配置
peft_config = LoraConfig(
    r=8,
    lora_alpha=16,
    target_modules=["q", "v"],
    lora_dropout=0.01,
    bias="none"
    task_type="SEQ_2_SEQ_LM",
)

# 包裝模型
model = AutoModelForSeq2SeqLM.from_pretrained(
    "t5-small",
)
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()

LoraConfig 詳細參數如下:

  • r:秩,即上面的r,默認為8;
  • target_modules:對特定的模塊進行微調,默認為None,支持nn.Linear、nn.Embedding和nn.Conv2d;
  • lora_alpha:ΔW 按 α / r 縮放,其中 α 是常數,默認為8;
  • task_type:任務類型,支持包括 CAUSAL_LM、FEATURE_EXTRACTION、QUESTION_ANS、SEQ_2_SEQ_LM、SEQ_CLS 和 TOKEN_CLS 等;
  • lora_dropout:Dropout 概率,默認為0,通過在訓練過程中以 dropout 概率隨機選擇要忽略的神經元來減少過度擬合的技術;
  • bias:是否添加偏差,默認為 "none";

3、訓練

使用 peft 庫對SFT全量訓練修改如下:

def init_model():
    def count_parameters(model):
        return sum(p.numel() for p in model.parameters() if p.requires_grad)
    
    def find_all_linear_names(model):
        cls = torch.nn.Linear
        lora_module_names = set()
        for name, module in model.named_modules():
            if isinstance(module, cls):
                names = name.split('.')
                lora_module_names.add(names[0] if len(names) == 1 else names[-1])

        return list(lora_module_names)

    model = Transformer(lm_config)
    ckp = f'./out/pretrain_{lm_config.dim}.pth.{batch_size}'
    state_dict = torch.load(ckp, map_locatinotallow=device_type)
    unwanted_prefix = '_orig_mod.'
    for k, v in list(state_dict.items()):
        if k.startswith(unwanted_prefix):
            state_dict[k[len(unwanted_prefix):]] = state_dict.pop(k)
    model.load_state_dict(state_dict, strict=False)

    target_modules = find_all_linear_names(model)
    peft_config = LoraConfig(
        r=8,
        target_modules=target_modules
    )
    model = get_peft_model(model, peft_config)
    model.print_trainable_parameters()

    print(f'LLM總參數量:{count_parameters(model) / 1e6:.3f} 百萬')
    model = model.to(device_type)
    return model

只需要修改模型初始化部分,其他不變,訓練過程和之前一樣,這里不再贅述。

參考

(1)https://cloud.tencent.com/developer/article/2372297

(2)http://www.bimant.com/blog/lora-deep-dive/

(3)https://blog.csdn.net/shebao3333/article/details/134523779

責任編輯:武曉燕 來源: 周末程序猿
相關推薦

2024-11-26 09:33:44

2024-11-04 00:24:56

2025-04-03 15:40:41

機器學習大模型DeepSeek

2024-12-09 00:00:10

2025-01-10 08:38:10

2025-04-03 15:46:53

2020-08-10 15:05:02

機器學習人工智能計算機

2017-03-24 15:58:46

互聯網

2022-03-28 09:00:00

SQL數據庫機器學習

2023-06-24 19:59:40

2017-07-11 10:19:24

淺層模型機器學習優化算法

2022-09-06 08:00:00

機器學習金融數據科學

2018-11-07 09:00:00

機器學習模型Amazon Sage

2024-08-20 07:55:03

2017-10-09 12:55:29

機器學習KaggleStacking

2020-10-13 07:00:00

機器學習人工智能

2024-06-21 11:44:17

2018-05-16 09:26:41

基線模型機器學習AI

2018-03-09 09:00:00

前端JavaScript機器學習

2022-09-19 15:37:51

人工智能機器學習大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美极品在线播放 | 日韩亚洲一区二区 | 国产婷婷| 日本aaaa| www.国产91| 在线中文字幕国产 | 精品久久久久久久人人人人传媒 | 一级黄色日本片 | 久久在视频| 欧美视频三区 | 影音av | 天堂男人av | 精品区一区二区 | 国产婷婷综合 | 色综合久久伊人 | 久久亚洲一区二区三 | 亚洲国产69 | 欧美高清性xxxxhd | 国产在线一区二区三区 | 成人午夜网站 | 九九热在线精品视频 | 国产精品久久国产精品99 gif | 亚洲综合一区二区三区 | 亚洲一区二区精品 | 黄色一级电影在线观看 | 国产高清一区 | 久久国产欧美日韩精品 | 国产精品美女久久久久aⅴ国产馆 | 亚洲精品成人 | 成人亚洲网 | 久久久妇女国产精品影视 | 国产精品国产三级国产aⅴ入口 | 亚洲欧美一区二区三区国产精品 | 亚洲精品在线视频 | 九九色综合 | 久久国产精品久久久久久久久久 | 久久久精品欧美 | 91一区二区三区 | 韩日av片 | 午夜天堂精品久久久久 | 日一区二区 |