国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LLaMa、Qwen、ChatGLM、ChatGLM2的區(qū)別

這篇具有很好參考價(jià)值的文章主要介紹了LLaMa、Qwen、ChatGLM、ChatGLM2的區(qū)別。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

LLaMa、Qwen、ChatGLM、ChatGLM2的區(qū)別

以下比較的前提是首先和BERT(transfomer)的對比

感謝幫忙給我github repository的star,更多最新模型長期更新:https://github.com/zysNLP/quickllm

LLaMa:

  1. 去掉bias
  2. LayNorm方式:RMSnorm:https://zhuanlan.zhihu.com/p/650231190
    # torch自帶LayerNorm
    if self.norm_mode == 'torch_buildin':
    	return F.layer_norm(hidden_states, self.normalized_shape, self.weight, self.bias, self.eps)
    # RMSnorm: t5、大模型系列均使用
    elif self.norm_mode == 'rmsnorm':
    	variance = hidden_states.float().pow(2).mean(-1, keepdim=True)
    	o = (hidden_states.float() * torch.rsqrt(variance + self.eps)).type_as(hidden_states)
    
    1. torch自帶LayerNorm (F.layer_norm)
      • 這是PyTorch庫中內(nèi)置的Layer Normalization實(shí)現(xiàn)。
      • 輸入?yún)?shù)包括:hidden_states(需要?dú)w一化的張量)、normalized_shape(歸一化的維度,通常是最后一維)、weightbias(可學(xué)習(xí)的縮放和平移參數(shù))以及eps(為了數(shù)值穩(wěn)定性添加的小常數(shù))。
      • 它首先計(jì)算輸入在指定維度上的均值和方差,然后使用這些統(tǒng)計(jì)量對輸入進(jìn)行歸一化,并通過應(yīng)用可學(xué)習(xí)的縮放和平移參數(shù)來恢復(fù)模型的表達(dá)能力。
    2. RMSNorm (Root Mean Square Normalization)
      • 只計(jì)算輸入的方差(即每個(gè)元素的平方的平均值),然后通過元素級操作計(jì)算歸一化后的輸出。
      • 具體步驟如下:
        • 計(jì)算輸入的平方的平均值(variance)。
        • 使用逆平方根(torch.rsqrt())來計(jì)算方差的倒數(shù)(相當(dāng)于標(biāo)準(zhǔn)差的倒數(shù))。
        • 將輸入與計(jì)算出的標(biāo)準(zhǔn)差倒數(shù)相乘,得到歸一化的結(jié)果。

    torch自帶的LayerNorm是最完整的實(shí)現(xiàn),包括了可學(xué)習(xí)的參數(shù);而RMSNorm和自定義LayerNorm則省略了這些參數(shù),可能會(huì)犧牲一些模型的表達(dá)能力,但在某些情況下可能更簡單或更高效。RMSNorm特別適用于那些不需要額外參數(shù)的大規(guī)模模型。

  3. feedForward不同, 三層全連接
    # 普通bert的FFN:
    self.outDense(self.inter_act_fn(self.interDense(x)))
    # llama、qwen的FFN:
    self.outDense(self.inter_act_fn(self.interDense(x)) * self.interDense2(x))
    
  4. 新增rotary相對位置編碼(RoPE)

InternLM:

模型結(jié)構(gòu): 基本和llama基本一致, 只是各個(gè)linear層多了bias; 和Qwen基本一致, 除了o有bias

  1. FeedForward和Llama一致, 三個(gè)dense層
  2. 除了qkvo有bias, 其余均沒有bias

Qwen:

  1. FeedForward和Llama一致, 三個(gè)dense層
  2. 除了qkv有bias, 其余均沒有bias
  3. 和InternLM基本一致, 唯一的差別是InternLM的multiHeadAttention.o有bias

ChatGLM

  1. rotary(RoPE)使用的updown+position_encoding_2d

    這是ROPE的二維表達(dá)方式,普通的ROPE是一維

  2. qkv合并成一個(gè)權(quán)重convert時(shí)不是concat在一起的
  3. attention_mask的最后一個(gè)token僅能訪問之前的, 之前的tokens可以互相訪問
  4. 跳躍連接有權(quán)重設(shè)計(jì);embedding之后沒有l(wèi)ayernorm
# 原始bert,LayerNorm + multiHeadAttention + dropout + FFN + dropout + x+ FFN:其中x來自第一次FFN之后
        x = self.attnLayerNorm(hidden_states, conditional_emb) if self.pre_layernorm else hidden_states  # pre/post layernorm
        self_attn_output = self.multiHeadAttention(x, attention_mask, past_key_value=past_key_value, position_ids=position_ids) 
        residual = x if self.apply_residual_post_layernorm else hidden_states
        hidden_states = self.dropout_add(self_attn_output[0], residual)
        hidden_states = self.attnLayerNorm(hidden_states, conditional_emb) if not self.pre_layernorm else hidden_states
        
        x = self.ffnLayerNorm(hidden_states, conditional_emb) if self.pre_layernorm else hidden_states  # pre/post layernorm
        feedforward_output = self.feedForward(x)
        residual = x if self.apply_residual_post_layernorm else hidden_states
        hidden_states = self.dropout_add(feedforward_output, residual)   # x在這
        hidden_states = self.ffnLayerNorm(hidden_states, conditional_emb) if not self.pre_layernorm else hidden_states
        
# GhatGLM:LayerNorm + multiHeadAttention + alpha*x + FFN + alpha*x:多了一個(gè)alpha,其中x來自一開始的LayerNorm之后
        x = self.attnLayerNorm(hidden_states)
        alpha = (2 * self.num_hidden_layers) ** 0.5
        self_attn_output = self.multiHeadAttention(x, attention_mask, past_key_value=past_key_value, **model_kwargs)
        hidden_states = x * alpha + self_attn_output[0]
        x = self.ffnLayerNorm(hidden_states)
        hidden_states = x *alpha +  self.feedForward(x)

ChatGLM2

  1. 不使用Unilm式的mask
    1. flash_attention

      這段代碼定義了一個(gè)名為flash_attention_forward的函數(shù),用于實(shí)現(xiàn)Flash Attention機(jī)制。以下是該函數(shù)的詳細(xì)解釋:

      1. 函數(shù)接受以下參數(shù):

        • query_layer:查詢(query)層的輸出。
        • key_layer:鍵(key)層的輸出。
        • value_layer:值(value)層的輸出。
        • attention_mask:注意力掩碼,用于指示哪些位置應(yīng)該被忽略。
        • query_length:查詢序列的長度。
        • softmax_scale:可選的softmax縮放因子。
      2. _get_unpad_data函數(shù)用于處理未填充的數(shù)據(jù)。它計(jì)算每個(gè)批次中的序列長度、累積和最大序列長度,并返回未填充數(shù)據(jù)的索引、累積序列長度和最大序列長度。

      3. _upad_input函數(shù)負(fù)責(zé)對輸入進(jìn)行解壓和平鋪操作。它根據(jù)attention_mask計(jì)算出需要保留的序列部分,并將查詢、鍵和值層的輸出調(diào)整為未填充的形狀。

      4. dropout變量用于控制dropout概率,如果模型處于訓(xùn)練狀態(tài),則使用self.attention_probs_dropout_prob作為概率。

      5. 將查詢、鍵和值層的輸出進(jìn)行轉(zhuǎn)置,以便于后續(xù)的矩陣運(yùn)算。

      6. 根據(jù)是否為因果自注意力(即是否為序列到序列任務(wù))和注意力掩碼的形狀,選擇不同的計(jì)算方法:

        • 如果不是因果自注意力且注意力掩碼為二維(表示僅包含鍵填充掩碼),則使用Flash Attention進(jìn)行計(jì)算。首先調(diào)用_upad_input函數(shù)對輸入進(jìn)行解壓和平鋪,然后調(diào)用flash_attn_varlen_func函數(shù)執(zhí)行Flash Attention操作,并在計(jì)算完成后將結(jié)果恢復(fù)為原始形狀。
        • 如果不是因果自注意力但注意力掩碼不符合要求,則發(fā)出警告并使用PyTorch內(nèi)置的注意力計(jì)算方法。
        • 如果是因果自注意力,則直接調(diào)用flash_attn_func函數(shù)執(zhí)行Flash Attention操作。
      7. 最后,將注意力輸出轉(zhuǎn)置回原來的形狀并返回。

      總的來說,這段代碼實(shí)現(xiàn)了Flash Attention機(jī)制,通過矩陣分解和局部注意力等技術(shù)優(yōu)化了Transformer模型的計(jì)算效率和內(nèi)存使用效率。在處理非因果自注意力任務(wù)時(shí),它支持僅包含鍵填充掩碼的情況,并在其他情況下退回到使用PyTorch內(nèi)置的注意力計(jì)算方法。

    2. multi_query_attention
  • "multi_query_attention"是一種創(chuàng)新的注意力機(jī)制設(shè)計(jì),它擴(kuò)展了傳統(tǒng)Transformer中的單查詢注意力機(jī)制。
  • 在Multi-Query Attention中,每個(gè)位置的輸入可能會(huì)生成多個(gè)查詢向量,這些查詢向量可以獨(dú)立地參與注意力計(jì)算,并與鍵(key)和值(value)矩陣進(jìn)行交互。
  • 多個(gè)查詢向量可以捕捉到輸入的不同方面或信息源,增強(qiáng)模型的理解和表達(dá)能力。例如,一個(gè)查詢可能關(guān)注詞匯級別的信息,另一個(gè)查詢可能關(guān)注句法或語義級別的信息。
  • 具體實(shí)現(xiàn)可能包括對輸入向量進(jìn)行分解、復(fù)制或?qū)W習(xí)多個(gè)查詢權(quán)重等技術(shù)。生成的多個(gè)查詢向量將分別用于計(jì)算注意力分?jǐn)?shù),并與相應(yīng)的值向量進(jìn)行加權(quán)求和,得到最終的注意力輸出。

NLP基礎(chǔ)付費(fèi)課程(自己講的):《AIGC大模型理論與工業(yè)落地實(shí)戰(zhàn)》 折扣方式:

公眾號”NLP小講堂“回復(fù)自己的聯(lián)系方式,或github中issue留言聯(lián)系方式。課程五折。文章來源地址http://www.zghlxwxcb.cn/news/detail-772696.html

到了這里,關(guān)于LLaMa、Qwen、ChatGLM、ChatGLM2的區(qū)別的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【ollama】(2):在linux搭建環(huán)境,編譯ollama代碼,測試qwen大模型,本地運(yùn)行速度飛快,本質(zhì)上是對llama.cpp 項(xiàng)目封裝

    【ollama】(2):在linux搭建環(huán)境,編譯ollama代碼,測試qwen大模型,本地運(yùn)行速度飛快,本質(zhì)上是對llama.cpp 項(xiàng)目封裝

    https://github.com/ollama/ollama/tree/main/docs https://www.bilibili.com/video/BV1oS421w7aM/ 【ollama】(2):在linux搭建環(huán)境,編譯ollama代碼,測試qwen大模型,本地運(yùn)行速度飛快,本質(zhì)上是對llama.cpp 項(xiàng)目封裝 要是失敗執(zhí)行,子模塊更新: 需要編譯 llama.cpp 的代碼, 然后經(jīng)過漫長的編譯,就而可以

    2024年04月08日
    瀏覽(28)
  • llama.cpp部署通義千問Qwen-14B

    llama.cpp部署通義千問Qwen-14B

    llama.cpp是當(dāng)前最火熱的大模型開源推理框架之一,支持了非常多的LLM的量化推理,生態(tài)比較完善,是個(gè)人學(xué)習(xí)和使用的首選。最近阿里開源了通義千問大語言模型,在眾多榜單上刷榜了,是當(dāng)前最炙手可熱的開源中文大語言模型。今天在github上看到前幾天llama.cpp已經(jīng)支持Qwe

    2024年02月03日
    瀏覽(29)
  • LLaMA-Factory可視化界面微調(diào)chatglm2;LoRA訓(xùn)練微調(diào)模型 簡單案例

    LLaMA-Factory可視化界面微調(diào)chatglm2;LoRA訓(xùn)練微調(diào)模型 簡單案例

    參考:https://github.com/huggingface/peft https://github.com/hiyouga/LLaMA-Factory 類似工具還有流螢,注意是做中文微調(diào)訓(xùn)練這塊;來訓(xùn)練微調(diào)的chatglm2需要完整最新文件,不能是量化后的模型;另外測試下來顯卡資源要大于20來G才能順利,這邊T4單卡訓(xùn)練中間顯存不足,需要開啟4bit量化才行

    2024年02月05日
    瀏覽(34)
  • LLMs:LLaMA Efficient Tuning(一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【預(yù)訓(xùn)練+指令監(jiān)督微調(diào)+

    LLMs:LLaMA Efficient Tuning(一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【預(yù)訓(xùn)練+指令監(jiān)督微調(diào)+

    LLMs:LLaMA Efficient Tuning(一款可高效微調(diào)【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM-2/LLaMA-2/Baichuan等】的高效工具【預(yù)訓(xùn)練+指令監(jiān)督微調(diào)+獎(jiǎng)勵(lì)模型訓(xùn)練+PPO 訓(xùn)練+DPO 訓(xùn)練】)的簡介、安裝、使用方法之詳細(xì)攻略 目錄 相關(guān)文章 LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微調(diào)ChatGLM-6B/Ch

    2024年02月09日
    瀏覽(33)
  • LLaMA-Factory 8卡4090 deepspeed zero3 微調(diào)Qwen14B-chat

    LLaMA-Factory 8卡4090 deepspeed zero3 微調(diào)Qwen14B-chat

    環(huán)境安裝 推薦使用docker,Ubuntu20.04 https://www.modelscope.cn/docs/%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85 下載模型 在modelscope主頁,找到模型 https://modelscope.cn/models/qwen/Qwen-14B-Chat/summary 可以使用如下腳本 微調(diào) 使用LLaMA-Factory, 下載下面?zhèn)}庫的代碼, https://github.com/hiyouga/LLaMA-Factory 在代碼目錄,

    2024年04月15日
    瀏覽(23)
  • 大語言模型-中文chatGLM-LLAMA微調(diào)

    微調(diào) 大語言模型-ChatGLM-Tuning 大語言模型-微調(diào)chatglm6b 大語言模型-中文chatGLM-LLAMA微調(diào) 大語言模型-alpaca-lora 本地知識庫 大語言模型2-document ai解讀 大語言模型-DocumentSearch解讀 大語言模型-中文Langchain 本文解讀代碼的地址: https://github.com/27182812/ChatGLM-LLaMA-chinese-insturct 中文inst

    2024年02月09日
    瀏覽(19)
  • 關(guān)于生成式語言大模型的一些工程思考 paddlenlp & chatglm & llama

    關(guān)于生成式語言大模型的一些工程思考 paddlenlp & chatglm & llama

    生成式語言大模型,隨著chatgpt的爆火,市場上涌現(xiàn)出一批高質(zhì)量的生成式語言大模型的項(xiàng)目。近期百度飛槳自然語言處理項(xiàng)目paddlenlp發(fā)布了2.6版本。更新了以下特性:全面支持主流開源大模型Bloom, ChatGLM, GLM, Llama, OPT的訓(xùn)練和推理;Trainer API新增張量訓(xùn)練能力, 簡單配置即可開

    2024年02月12日
    瀏覽(26)
  • 【通義千問】大模型Qwen GitHub開源工程學(xué)習(xí)筆記(3)-- 通過Qwen預(yù)訓(xùn)練語言模型自動(dòng)完成給定的文本

    本筆記分析了使用預(yù)訓(xùn)練的模型生成文本的示例代碼。它的步驟如下: 使用已加載的分詞器 tokenizer 對輸入文本進(jìn)行處理,轉(zhuǎn)換為模型可以理解的格式。輸入文本是國家和首都的信息,最后一句是未完成的,需要模型來生成。 將處理后的輸入轉(zhuǎn)移到模型所在的設(shè)備上(例如

    2024年02月07日
    瀏覽(57)
  • 開源語音大語言模型來了!阿里基于Qwen-Chat提出Qwen-Audio!

    開源語音大語言模型來了!阿里基于Qwen-Chat提出Qwen-Audio!

    論文鏈接: https://arxiv.org/pdf/2311.07919.pdf 開源代碼: https://github.com/QwenLM/Qwen-Audio 大型語言模型(LLMs)由于其良好的知識保留能力、復(fù)雜的推理和解決問題能力,在通用人工智能(AGI)領(lǐng)域取得了重大進(jìn)展。然而,語言模型缺乏像人類一樣感知非文本模態(tài)(如圖像和音頻)的

    2024年01月18日
    瀏覽(86)
  • LLaMA-Factory使用V100微調(diào)ChatGLM2報(bào)錯(cuò) RuntimeError: “addmm_impl_cpu_“ not implemented for ‘Half‘

    微調(diào)命令 已經(jīng)從huggingface下載完整的模型并配置正確路徑,也對自定義數(shù)據(jù)集仿照alpaca_gpt4_data_zh.json在dataset_info.json中寫入相關(guān)配置。但運(yùn)行如上命令還是有報(bào)錯(cuò)如下: 命令運(yùn)行過程中,看上去已經(jīng)成功加載模型了,應(yīng)該是訓(xùn)練第1個(gè)epoch時(shí)的報(bào)錯(cuò)。我 --fp16 加到上面的命令中

    2024年02月04日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包