精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用GaLore在本地GPU進行高效的LLM調優

人工智能
訓練大型語言模型(llm),即使是那些“只有”70億個參數的模型,也是一項計算密集型的任務。這種水平的訓練需要的資源超出了大多數個人愛好者的能力范圍。為了彌補這一差距,出現了低秩適應(LoRA)等參數高效方法,可以在消費級gpu上對大量模型進行微調。

訓練大型語言模型(llm),即使是那些“只有”70億個參數的模型,也是一項計算密集型的任務。這種水平的訓練需要的資源超出了大多數個人愛好者的能力范圍。為了彌補這一差距,出現了低秩適應(LoRA)等參數高效方法,可以在消費級gpu上對大量模型進行微調。

GaLore是一種新的方法,它不是通過直接減少參數的數量,而是通過優化這些參數的訓練方式來降低VRAM需求,也就是說GaLore是一種新的模型訓練策略,可讓模型使用全部參數進行學習,并且比LoRA更省內存。

GaLore將這些梯度投影到低秩空間上,顯著減少了計算負荷,同時保留了訓練所需的基本信息。與傳統的優化器在反向傳播后同時更新所有層的方法不同,GaLore在反向傳播期間實現逐層更新。這種方法進一步減少了整個訓練過程中的內存占用。

就像LoRA一樣,GaLore可以讓我們在具有24 GB VRAM的消費級GPU上微調7B模型。結果模型的性能與全參數微調相當,并且似乎優于LoRA。

優于目前Hugging Face還沒有官方代碼,我們就來手動使用論文的代碼進行訓練,并與LoRA進行對比

安裝依賴

首先就要安裝GaLore

pip install galore-torch

然后我們還要一下這些庫,并且請注意版本

datasets==2.18.0
 transformers==4.39.1
 trl==0.8.1
 accelerate==0.28.0
 torch==2.2.1

調度器和優化器的類

Galore分層優化器是通過模型權重掛鉤激活的。由于我們使用Hugging Face Trainer,還需要自己實現一個優化器和調度器的抽象類。這些類的結構不執行任何操作。

from typing import Optional
 import torch
 
 # Approach taken from Hugging Face transformers https://github.com/huggingface/transformers/blob/main/src/transformers/optimization.py
 class LayerWiseDummyOptimizer(torch.optim.Optimizer):
    def __init__(self, optimizer_dict=None, *args, **kwargs):
        dummy_tensor = torch.randn(1, 1)
        self.optimizer_dict = optimizer_dict
        super().__init__([dummy_tensor], {"lr": 1e-03})
 
    def zero_grad(self, set_to_none: bool = True) -> None: 
      pass
 
    def step(self, closure=None) -> Optional[float]: 
      pass
 
 class LayerWiseDummyScheduler(torch.optim.lr_scheduler.LRScheduler):
    def __init__(self, *args, **kwargs):
        optimizer = LayerWiseDummyOptimizer()
        last_epoch = -1
        verbose = False
        super().__init__(optimizer, last_epoch, verbose)
 
    def get_lr(self): 
      return [group["lr"] for group in self.optimizer.param_groups]
 
    def _get_closed_form_lr(self): 
      return self.base_lrs

加載GaLore優化器

GaLore優化器的目標是特定的參數,主要是那些在線性層中以attn或mlp命名的參數。通過系統地將函數與這些目標參數掛鉤,GaLore 8位優化器就會開始工作。

from transformers import get_constant_schedule
 from functools import partial
 import torch.nn
 import bitsandbytes as bnb
 
 from galore_torch import GaLoreAdamW8bit
         
 def load_galore_optimizer(model, lr, galore_config):    
    # function to hook optimizer and scheduler to a given parameter 
    def optimizer_hook(p, optimizer, scheduler):
        if p.grad is not None: 
            optimizer.step()
            optimizer.zero_grad()
            scheduler.step()
 
    # Parameters to optimize with Galore
    galore_params = [
        (module.weight, module_name) for module_name, module in model.named_modules() 
        if isinstance(module, nn.Linear) and any(target_key in module_name for target_key in galore_config["target_modules_list"])
    ] 
    id_galore_params = {id(p) for p, _ in galore_params}
     
    # Hook Galore optim to all target params, Adam8bit to all others
    for p in model.parameters():
        if p.requires_grad:
            if id(p) in id_galore_params:
                optimizer = GaLoreAdamW8bit([dict(params=[p], **galore_config)], lr=lr)
            else:
                optimizer = bnb.optim.Adam8bit([p], lr = lr)
            scheduler = get_constant_schedule(optimizer)
             
            p.register_post_accumulate_grad_hook(partial(optimizer_hook, optimizer=optimizer, scheduler=scheduler))
             
    # return dummies, stepping is done with hooks 
    return LayerWiseDummyOptimizer(), LayerWiseDummyScheduler()

HF Trainer

準備好優化器后,我們開始使用Trainer進行訓練。下面是一個簡單的例子,使用TRL的SFTTrainer (Trainer的子類)在Open Assistant數據集上微調llama2-7b,并在RTX 3090/4090等24 GB VRAM GPU上運行。

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, set_seed, get_constant_schedule
 from trl import SFTTrainer, setup_chat_format, DataCollatorForCompletionOnlyLM
 from datasets import load_dataset
 import torch, torch.nn as nn, uuid, wandb
 
 lr = 1e-5
 
 # GaLore optimizer hyperparameters
 galore_config = dict(
    target_modules_list = ["attn", "mlp"], 
    rank = 1024, 
    update_proj_gap = 200, 
    scale = 2, 
    proj_type="std"
 )
 
 modelpath = "meta-llama/Llama-2-7b"
 model = AutoModelForCausalLM.from_pretrained(
    modelpath,    
    torch_dtype=torch.bfloat16,
    attn_implementation = "flash_attention_2",  
    device_map = "auto",
    use_cache = False,
 )
 tokenizer = AutoTokenizer.from_pretrained(modelpath, use_fast = False)
 
 # Setup for ChatML
 model, tokenizer = setup_chat_format(model, tokenizer)
 if tokenizer.pad_token in [None, tokenizer.eos_token]: 
    tokenizer.pad_token = tokenizer.unk_token
 
 # subset of the Open Assistant 2 dataset, 4000 of the top ranking conversations
 dataset = load_dataset("g-ronimo/oasst2_top4k_en")
 
 training_arguments = TrainingArguments(
    output_dir = f"out_{run_id}",
    evaluation_strategy = "steps",
    label_names = ["labels"],
    per_device_train_batch_size = 16,
    gradient_accumulation_steps = 1,
    save_steps = 250,
    eval_steps = 250,
    logging_steps = 1, 
    learning_rate = lr,
    num_train_epochs = 3,
    lr_scheduler_type = "constant",
    gradient_checkpointing = True,
    group_by_length = False,
 )
 
 optimizers = load_galore_optimizer(model, lr, galore_config)
 
 trainer = SFTTrainer(
    model = model,
    tokenizer = tokenizer,
    train_dataset = dataset["train"],
    eval_dataset = dataset['test'],
    data_collator = DataCollatorForCompletionOnlyLM(
        instruction_template = "<|im_start|>user", 
        response_template = "<|im_start|>assistant", 
        tokenizer = tokenizer, 
        mlm = False),
    max_seq_length = 256,
    dataset_kwargs = dict(add_special_tokens = False),
    optimizers = optimizers,
    args = training_arguments,
 )
 
 trainer.train()

GaLore優化器帶有一些需要設置的超參數如下:

target_modules_list:指定GaLore針對的層

rank:投影矩陣的秩。與LoRA類似,秩越高,微調就越接近全參數微調。GaLore的作者建議7B使用1024

update_proj_gap:更新投影的步驟數。這是一個昂貴的步驟,對于7B來說大約需要15分鐘。定義更新投影的間隔,建議范圍在50到1000步之間。

scale:類似于LoRA的alpha的比例因子,用于調整更新強度。在嘗試了幾個值之后,我發現scale=2最接近于經典的全參數微調。

微調效果對比

給定超參數的訓練損失與全參數調優的軌跡非常相似,表明GaLore分層方法確實是等效的。

用GaLore訓練的模型得分與全參數微調非常相似。

GaLore可以節省大約15 GB的VRAM,但由于定期投影更新,它需要更長的訓練時間。

上圖為2個3090的內存占用對比

訓練事件對比,微調:~58分鐘。GaLore:約130分鐘

最后我們再看看GaLore和LoRA的對比

上圖為LoRA微調所有線性層,rank64,alpha 16的損失圖

從數值上可以看到GaLore是一種近似全參數訓練的新方法,性能與微調相當,比LoRA要好得多。

總結

GaLore可以節省VRAM,允許在消費級GPU上訓練7B模型,但是速度較慢,比微調和LoRA的時間要長差不多兩倍的時間。

責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2023-11-30 15:56:54

大型語言模型人工智能

2023-11-30 18:03:55

IDEA工具

2023-06-06 15:42:13

Optuna開源

2025-05-09 01:00:00

大語言模型LLMGPU內存

2023-12-19 16:12:40

GPT-4AI聊天機器人人工智能

2023-11-14 10:06:46

數據庫性能

2010-05-19 17:44:09

2011-03-10 14:40:54

LAMPMysql

2025-03-05 03:00:00

DeepSeek大模型調優

2012-01-10 14:35:08

JavaJVM

2013-09-24 13:06:56

AngularJS性能優化

2023-10-13 12:28:38

2017-07-21 08:55:13

TomcatJVM容器

2011-04-07 16:15:31

MySQL服務器調優

2024-05-21 09:08:57

JVM調優面試

2024-08-13 08:23:43

LLamaSharpLLM推理庫

2021-03-04 08:39:21

SparkRDD調優

2011-05-20 14:23:01

Oracle調優

2024-06-14 15:38:53

點贊
收藏

51CTO技術棧公眾號

韩国福利在线| 特级西西444www大精品视频免费看 | 成人精品鲁一区一区二区| 久久久在线免费观看| 疯狂揉花蒂控制高潮h| 在线看欧美视频| 成人免费在线观看入口| 国产精品视频免费一区二区三区| 天天爽夜夜爽夜夜爽精品| 日本在线电影一区二区三区| 欧美一区在线视频| 欧美 国产 小说 另类| 日本精品一区二区三区在线播放| 国产69精品久久777的优势| 日韩av三级在线观看| 久草福利资源在线| 一本久久青青| 日韩欧美国产精品| 久久久久国产精品熟女影院| 超碰在线免费公开| 久久久电影一区二区三区| 亚洲影院高清在线| 狠狠人妻久久久久久综合| 91精品国产成人观看| 亚洲精品综合精品自拍| 久久久精品视频国产| 外国成人直播| 亚洲国产精品麻豆| 日韩国产精品毛片| 黄色免费在线播放| 97久久精品人人做人人爽50路| 成人午夜高潮视频| 综合网在线观看| 影音先锋亚洲电影| 不卡毛片在线看| 国产综合精品久久久久成人av | 另类欧美小说| 亚洲爱爱综合网| 麻豆精品一二三| 欧美有码在线观看视频| 国产精品成人av久久| 亚洲精品成人| xxav国产精品美女主播| 欧美另类z0zx974| 婷婷成人在线| 亚洲国产精品大全| 麻豆免费在线观看视频| 高清精品久久| 欧美片网站yy| 欧美第一页浮力影院| 日本成人片在线| 欧美午夜精品久久久久久浪潮| 久久这里只有精品8| 久做在线视频免费观看| 国产精品乱码一区二三区小蝌蚪| 欧美日韩大片一区二区三区| 天天插天天干天天操| 国产91丝袜在线观看| 91网站免费观看| 国产乱淫片视频| 久久99精品国产.久久久久久| 国产成人精品久久二区二区91| 五月婷婷色丁香| 久久久久国产精品午夜一区| 国产69精品久久久久久| av中文在线播放| 久久国产精品久久久久久电车| 国内精品一区二区三区| 欧美丰满艳妇bbwbbw| 你懂的网址国产 欧美| 久久在精品线影院精品国产| 欧美成人精品激情在线视频| 欧美午夜久久| 国内精品视频在线| 天堂网中文字幕| 秋霞国产午夜精品免费视频| 国产精品女视频| 92久久精品一区二区| 国产一区二区三区在线观看精品 | 欧美精品久久久久久久久| 久久高清无码视频| 久久国产精品久久w女人spa| 国产精品久久久久久久av电影 | 亚洲精品福利视频| 中国毛片在线观看| 999久久久精品国产| 久久99精品久久久久久琪琪| 国产午夜精品无码一区二区| 香蕉精品999视频一区二区| 国产精品九九九| 国产男女无套免费网站| 成人av在线一区二区三区| 日本午夜精品一区二区三区| 八戒八戒神马在线电影| 亚洲成av人片一区二区| 精品久久久久久无码国产| 不卡一区视频| 精品一区二区三区三区| 中文字幕第69页| 在线欧美亚洲| 国产精品久久中文| 亚洲老妇色熟女老太| 波多野结衣视频一区| 日本免费高清一区二区| 免费高清完整在线观看| 伊人一区二区三区| 亚洲第一综合网站| 久久爱91午夜羞羞| 欧美精品久久久久久久久老牛影院| 欧美日韩中文不卡| 99久久婷婷国产综合精品青牛牛| 亚洲精品综合久久中文字幕| 在线小视频你懂的| 伊人天天综合| 国产精品热视频| 国产99久一区二区三区a片| 成人一区二区三区视频在线观看 | 久本草在线中文字幕亚洲| 一区二区三区回区在观看免费视频| 又嫩又硬又黄又爽的视频| 欧美日韩专区| 热久久免费视频精品| 亚洲综合免费视频| www.亚洲精品| 亚洲一区3d动漫同人无遮挡 | 欧美刺激性大交免费视频| 亚洲精品77777| 美国三级日本三级久久99| 96成人在线视频| 国产在线激情| 日本韩国一区二区| 在线成人精品视频| 不卡在线一区| 91精品国产91久久久久福利| 日本黄色中文字幕| 久久精品网站免费观看| 久久这里只有精品18| 电影在线观看一区二区| 亚洲国产精品美女| 国产成人自拍网站| 日韩精品91亚洲二区在线观看 | 中国女人一级一次看片| 99国产精品一区| 欧美一区二区视频在线播放| 成人精品国产亚洲| 亚洲色无码播放| 日本熟妇毛茸茸丰满| 韩国欧美国产1区| 日韩一二三区不卡在线视频| 国产理论电影在线| 精品久久久久久综合日本欧美| wwwww黄色| 性娇小13――14欧美| 97超碰人人模人人爽人人看| 免费网站成人| 欧美色网站导航| 在线视频这里只有精品| 日韩精品每日更新| 欧美一级二级三级九九九| 精品三级久久| 亚洲黄色在线看| xxxxxx国产| 99久久99久久精品免费观看| 久久这里只有精品18| 亚洲精品福利| 欧美韩国理论所午夜片917电影| 九九热在线视频播放| 久久久蜜桃精品| aa在线免费观看| 欧美日韩另类图片| 性色av一区二区三区免费| 超碰在线观看av| 亚洲黄色免费网站| 韩国一区二区在线播放| 欧美特黄视频| 激情伦成人综合小说| 国产高清视频色在线www| 亚洲国产精品高清久久久| 国产系列精品av| 99久久婷婷国产综合精品 | 中国男女全黄大片| 亚洲午夜极品| 亚洲一区二区在线| 女人让男人操自己视频在线观看| 亚洲国产日韩欧美在线动漫| 精品国产免费观看| 国产日韩欧美制服另类| 久久久久国产精品熟女影院| 精品一区二区三区的国产在线观看| 欧美在线不卡区| av男人的天堂在线| 欧美精品乱码久久久久久按摩| 成年人网站在线观看视频| 精品一区二区三区免费观看| 正在播放一区| 一区二区三区四区精品视频| 高清欧美性猛交xxxx| 天天综合永久入口| 欧美最猛性xxxxx直播| 国产黄a三级三级| 91免费小视频| 亚洲免费999| 亚洲午夜在线| 欧美精品成人一区二区在线观看| 欧美福利在线播放| 久久成人亚洲精品| 污污视频在线观看网站| 在线区一区二视频| 欧美日韩国产精品综合| 久久亚洲综合av| 手机在线免费毛片| 精品9999| 中文精品视频一区二区在线观看| 一区二区三区四区高清视频 | 久久99精品一区二区三区三区| 今天免费高清在线观看国语| 丝袜美腿一区二区三区动态图| 91国产在线播放| 欧美亚洲韩国| 欧美极品美女电影一区| 成人精品福利| 欧美精品一区二区三| 最新在线中文字幕| 日韩欧美在线第一页| 希岛爱理中文字幕| 久久久美女毛片| 绯色av蜜臀vs少妇| 免费一级欧美片在线观看| 无码人妻精品一区二区蜜桃网站| 日韩一区自拍| 蜜桃传媒视频麻豆第一区免费观看 | 欧美噜噜久久久xxx| 日本中文在线观看| 亚洲欧美国产视频| 亚洲精品无码久久久| 欧美日韩国产综合一区二区三区| 日本精品视频网站| 日本福利片在线| 欧美一级午夜免费电影| 欧美男人亚洲天堂| 亚洲国产成人av| 欧洲性xxxx| 国产清纯在线一区二区www| 蜜臀av粉嫩av懂色av| 国产一区二区三区精品视频| 日韩中文字幕三区| 亚洲国产日韩在线| 欧美视频在线观看网站| 欧美一区成人| 国产对白在线播放| 久久电影院7| 亚洲乱码一区二区三区| 亚洲瘦老头同性70tv| 精品久久久三级| 电影一区二区在线观看| 国产玖玖精品视频| 国产95亚洲| 成人妇女免费播放久久久| 成人在线不卡| 国产精欧美一区二区三区| 大黄网站在线观看| 欧美在线亚洲在线| 欧美xxxhd| 午夜剧场成人观在线视频免费观看| 麻豆传媒在线免费看| 日韩中文综合网| 色图在线观看| 欧美福利视频在线| 色噜噜狠狠狠综合欧洲色8| 欧美大片在线影院| 影音先锋男人在线资源| 97人洗澡人人免费公开视频碰碰碰| 女同视频在线观看| 欧美精品福利在线| heyzo在线欧美播放| 欧美日产国产成人免费图片| brazzers在线观看| 国产69精品久久久久久| 暖暖成人免费视频| 国产精品丝袜久久久久久高清| 美女色狠狠久久| 国产欧美精品xxxx另类| 99久久999| 97免费资源站| 米奇精品关键词| 欧美日韩三区四区| 日韩精品久久久久久久电影99爱| 四虎影院一区二区三区 | 蜜臀国产一区二区三区在线播放 | 精品日本一区二区三区| 宅男在线一区| 亚洲午夜精品一区二区三区| 激情久久综合| 欧美视频免费播放| 人人爽香蕉精品| 欧美激情第四页| 成人免费视频免费观看| 久久久久亚洲AV成人无在| 亚洲欧美在线观看| 国产午夜精品一区二区理论影院| 欧美日韩中文在线| 亚洲影院在线播放| 精品国产一区二区三区av性色 | 欧美日韩一区二区视频在线观看 | 日韩一区二区三区三四区视频在线观看| 精品黑人一区二区三区在线观看| 亚洲国产成人爱av在线播放| 国产三级视频在线看| 欧美国产第二页| 日日av拍夜夜添久久免费| 亚洲aaa激情| 无码少妇一区二区三区| 永久久久久久| 影音先锋亚洲电影| jizzzz日本| www激情久久| 老湿机69福利| 色综合久久综合网| 无码国产色欲xxxx视频| 在线播放国产一区二区三区| 欧美1—12sexvideos| 国产精品美女在线观看| 伊人www22综合色| 婷婷视频在线播放| 国产伦理一区| 国产在线a视频| 国产精品私人影院| 久久久久久免费观看| 91精品国产欧美日韩| 日本啊v在线| 久久久久久高潮国产精品视| 成人国产一区| 欧洲亚洲一区二区| 国产欧美不卡| 国产精品19p| 国产精品国产三级国产三级人妇 | 久久久久久久人妻无码中文字幕爆| av电影在线观看一区| 久久精品www人人爽人人| 欧美日韩五月天| 国产视频精品久久| 538国产精品视频一区二区| 国产一区二区三区亚洲| 国产成人生活片| 精品一区二区综合| 亚洲理论片在线观看| 亚洲影院免费观看| 国精产品乱码一区一区三区四区| 最新的欧美黄色| 先锋欧美三级| 欧日韩一区二区三区| 日韩制服丝袜av| 爱爱免费小视频| 欧美日韩国产一区中文午夜| 亚洲精品福利网站| 欧美美女15p| 亚洲精品影片| 久久天天东北熟女毛茸茸| 日本aⅴ精品一区二区三区| 特黄一区二区三区| 欧美日韩中文字幕一区| 高清在线观看av| 国产精品你懂得| 久久要要av| 免费网站在线观看黄| 自拍偷拍欧美精品| 国产成人精品a视频| 欧美成人免费va影院高清| 豆花视频一区| 亚洲精品天堂成人片av在线播放 | 九九久久综合网站| 狂野欧美xxxx韩国少妇| 男人天堂av片| av一本久道久久综合久久鬼色| 国产一级在线免费观看| 亚洲激情在线观看视频免费| √8天堂资源地址中文在线| 久久久神马电影| 久久一区中文字幕| 日本少妇xxxxx| 欧美精品久久天天躁| 国产免费拔擦拔擦8x高清在线人| 精品无码久久久久久久动漫| 香蕉成人久久| 久久午夜精品视频| 亚洲精品一区二区三区蜜桃下载| 国产污视频在线播放| 欧美精品亚洲精品| 国产成人在线视频网址| 久久精品国产亚洲av香蕉| 日韩久久免费视频| 欧美三区四区| 草草视频在线免费观看| 26uuu国产在线精品一区二区| 337p粉嫩色噜噜噜大肥臀| 久久久成人的性感天堂| ccyy激情综合| 成人在线观看a| 亚洲欧美色一区| 好男人免费精品视频|